Documente Academic
Documente Profesional
Documente Cultură
Microservices con
WSO2
Julio Cejas
Arquitecto Chakray
El objetivo de este documento es describir como el enfoque ,
Microservicios, denominado SOA ligero puede ser implementado
mediante el WSO2 Lean Enterprise Middleware.
ndice
Introduccin
Que es un Microservice
Microservices en WSO2
10
11
12
13
15
15
16
17
17
17
17
17
18
18
Recomendaciones Generales
18
En esencia
19
Sobr el autor
20
www.chakray.com
Introduccin
www.chakray.com
www.chakray.com
Que es un Microservice
En esencia, un microservice esun artefacto de software que est diseado para evitar que
dependa de un modelo de relaciones extenso y pesado; el cual debecumplir con una funcin de negocio concreta; adems de contar conuna implementacin simple y pensada en
la integracin con otros. Su objetivoes propiciar eldesarrollo de componentes individuales
que sean capaces de evolucionar y escalar de forma independiente. En este enfoque, los
contratos se adaptan a las necesidades del negocio y no a un modelo de dominio y/o una
estructura de datos grande y relacional.Su enfoque es evitar la creacin de soluciones frgiles y complejas.
En el diagrama anterior se puede observar como una aplicacin monoltica puede ser dividida en servicios independientes que cumplen con una funcin concreta de negocio. A
continuacin se enumeran las principales caractersticas de microservices:
01 Los servicios tiene una responsabilidad micro con un enfoque ajustado al negocio.
02 Viven dentro de un contenedor con un ciclo de vida independiente (ejecutado en su
propio proceso).
03 Son organizados de forma vertical sobre las capacidades de negocio y no de tecnologa.
04 Estn diseado bajo el principio de bajo acoplamiento.
www.chakray.com
www.chakray.com
www.chakray.com
Microservices en WSO2
WSO2 es un stack maduro que proporciona modelos de implementacin flexibles y ligeros para soportar las caractersticas ms importantes y relevantes de microservices. En las
prximas secciones describir las estrategias y patrones que pueden ser incorporados en
sus iniciativas WSO2 para dar soporte a este enfoque.
El WSO2 ESB Gateway puede ofrecer un mecanismo que permita el acceso a microservices individuales desde aplicaciones mediante la conformacin de una puerta de enlace,
proporcionando un nico punto de entrada para todos los clientes. Este Gateway puede
ser distribuido y soportar alta disponibilidad (HA) y clustering; es importante destacar que
este ESB solo puede ser utilizado para tareas de Gateway. A continuacin se enumeran las
funciones que este ESB debe cumplir como Gateway:
01 Aislar a los clientes sobre la lgica de integracin, composicin, entres los microservicios.
02 Aislar al cliente de la ubicacin de microservices.
03 Proporcionar una API ptima para cada cliente.
www.chakray.com
WSO2 permite la conformacin de un Gateway para arquitecturas basadas en microservices que puede escalar de forma independiente, coordinados y gestionados sobre HA y
clustering; de igual forma pueden ser establecida en contenedores como Docker para gestionar un ciclo de vida independiente y en cluster de contenedores Linux como Kubernetes.
www.chakray.com
Bajo este patrn, podemos utilizar la capacidad del WSO2 ESB para la gestin de storage
de mensajes, utilizando la funcionalidad de Message Stores (Store Mediator) para almacenar mensajes de forma temporal. Actualmente el Store mediator puede ser utilizado para
almacenar mensajes en memoria, en jms o implementaciones que pueden ser customizadas como la utilizacin de REDIS, entre otras tecnologas. Otro componente que puede ser
utilizado en este patrn son los message processor, quienes pueden consumir mensajes de
los message stores y procesarlos. En este procesamiento, los mensajes pueden ser enviados a endpoints almacenados y consultados sobre un registro.
WSO2 permite la conformacin de un Gateway de mensajera para arquitecturas basadas
en microservices que puedan escalar de forma independiente, coordinados y gestionados
sobre HA y clustering; de igual forma pueden ser establecida en contenedores como Docker. Es importante destacar que este ESB solo puede ser utilizado para tareas de Gateway
Message.
Resumiendo, WSO2 ESB puede ser utilizado como componente para la conformacin de
API Gateways y message Gateways; estableciendo un nico punto de acceso para arquitecturas basada en microservices. Los gateways pueden desarrollar polticas para la validacin, seguridad, cache, garanta de entrega, tolerancia a fallas, logging, audit, entre otras.
Bajo este enfoque WSO2 ESB asume y desarrolla diversos roles, limitando y estandarizando su funcin en contextos de arquitectura.
www.chakray.com
10
jms:/Ordertopic?transport.jms.DestinationType=queue&transport.jms.
ContentTypeProperty=Content-Type&java.naming.provider.url=tcp://localhost:61616&java.naming.
factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&transport.jms.Connection
FactoryType=queue&transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory
De igual forma cada servicio de datos puede ser expuesto sobre el transporte JMS. En el
siguiente diagrama se puede observar que pueden ser inyectados al request o response
eventos que pueden ser disparados ante la ocurrencia de un evento, soportada por Xpath y
WS-Eventing. El payload o carga til puede ser enviada a un topic interno y posteriormente
a un JMS Queue/Topic a travs de una suscripcin establecida. De igual forma pueden ser
utilizados listener para el envi a otros queues/topics.
www.chakray.com
11
www.chakray.com
12
Con este enfoque se podr establecer servicios RESTfull directamente, por ejemplo:
<rest path=/iot>
<get uri=/dispositivo>
<to uri=direct:getDispositivos/>
</get>
<get uri=/dispositivo/{id}>
<to uri=direct:getDispositivosById/>
</get>
</rest>
<route>
<from uri= direct:getDispositivosById />
<recipientList>
<simple>iot:http://iot/posts/${header.id}</simple>
</recipientList>
</route>
www.chakray.com
13
Con WSO2 MSS ahora se podr anotar los servicios. Entre las anotaciones ms relevantes:
ANOTACIN
PROPSITO
@HTTPMonitoring
@Metered
Anotacin que permite establecer una mtrica para medir la tasa de eventos
en un tiempo determinado.
@Timed
@Counted
www.chakray.com
14
Pueden ser colocados interceptores que pueden gestionar polticas de validacin, seguridad, mtricas entre otros; por ejemplo:
.addInterceptor(new MetricsInterceptor(MetricReporter.CONSOLE,
MetricReporter.JMX, MetricReporter.DAS))
WSO2 MSS esta soportada por las siguientes tecnologas: Carbon server, IO netty, Netty
jaxrs Http, gson, imbusDS Java library; entre otros marcos Open Source. Es importante
destacar que soporta JSON Web Token para la seguridad de servicios REST.
www.chakray.com
15
<endpoint name=CircuitBreakerEP>
<address uri=http://localhost:9764/app/microservices/call>
<suspendOnFailure>
<initialDuration>60000</initialDuration>
</suspendOnFailure>
<markForSuspension>
<errorCodes>101507,101508</errorCodes>
<retriesBeforeSuspension>3</retriesBeforeSuspension>
<retryDelay>400</retryDelay>
</markForSuspension>
<timeout>
<duration>300</duration>
<responseAction>fault</responseAction>
</timeout>
</address>
</endpoint>
<endpoint name=MicroService>
<address uri=http://localhost:8267/platform/microservice/func>
<timeout>
<duration>320</duration>
<responseAction>fault</responseAction>
</timeout>
</address>
</endpoint>
www.chakray.com
16
www.chakray.com
17
Recomendaciones Generales
WSO2 ofrece un soporte completo a todo el stack de aspectos necesarios para construir
una plataforma de microservices, proporcionando estrategias concretas y viables a los desafos de implementaciones sobre ambientes distribuidos.
01 Identifique el modelo de arquitectura WSO2 Microservice ms ajustado a su solucin.
02 Establezca una estrategia para responder a la latencia y tolerancia a fallas para su
arquitectura de Microservices. Utilice endpoints, y evita la fragilidad en esta rea.
03 Establezca un API Gateway y un Messaje Gateway para su arquitectura de microservices.
04 Desarrolle microservices mediante el stack actual de WSO2 o sobre el producto
WSO2 MSS.
05 Establezca un Gateway mediante WSO2 ESB o WSO2 GW.
06 Implemente una estrategia basada en Event Store para publicacin y suscricin de
eventos.
07 Incorpore una estrategia de garanta de entrega en su arquitectura de microservice.
08 Framework como vagrant, saboteur, wiremock, hixtrix, cucumber pueden ser combinado para establecer un stack slido para las pruebas de microservices.
09 Utilice marcos como Docker, Kubernetes y Vagrant para simplificar la administracin de contenedores ymquinas virtuales.
www.chakray.com
18
En esencia
Dentro de una arquitectura Microservices el WSO2 ESB puede desarrollar funciones asociadas a la conformacin de un API Gateway y un Message Gateway.
Los productos del stack WSO2 pueden utilizar el estndar ws-eventing para establecer mecanismos de comunicacin desacoplados y ligeros basados en HTTP o JMS.
Los microservices pueden ser implementados sobre plataformas como WSO2 DSS,
BRS, AS dentro de un contenedor con un ciclo de vida independiente (ejecutado en
su propio proceso), por ejemplo Docker.
Todos los microservicios sobre WSO2 pueden ser desplegados en un Cluster y HA
sobre servicios de contenedores como Docker y Kubernetes para su administracin.
Los microservices pueden ser desplegados como un war en contenedores como Jetty
o Tomcat e incluir el descubrimiento de servicios mediante un registro (WSO2 GR).
Los microservices en WSO2 pueden ser soportados por bundels OSGi.
Patrones de tolerancia a falla como timeout y circuit-breaker puede ser implementados mediante endpoints en el Gateway (WSO2 ESB o WSO2 GW).
El WSO2 ESB Gateway puede inyectar polticas de cache, seguridad, logging, audit,
validacin, garanta de entrega, entre otros.
La plataforma WSO2 ya incluye microservices especializados en servicios de gestin
de identidades para autenticacin y autorizacin.
Cada servicio esAutoMonitoreable, es decir informa constantemente su estadoen
tiempo de ejecucin.
Cada servicio cuenta con un dashboard que permite ver su comportamiento en
tiempo de ejecucin de forma individual.
Si es necesaria la integracin de indicadores del comportamiento de servicios en
tiempo de ejecucin, estos pueden ser configurados utilizando eventos que pueden
enriquecer una plataforma WSO2 DAS.
Cada servicio puede contar con aspectosde logging, auditoria, excepciones de forma
independiente o estos pueden ser inyectados dentro de un servicio Gateway (ESB o
servicios sobre un servidor de aplicaciones).
OSGI es la base de WSO2, proporcionandoservicios con interfaces uniformes como
la forma primaria de encapsulacin.
WSO2 es un stack Open Source que puede ser utilizado para implementar en toda su
extensin una arquitectura de MicroService. Espero que estos modelos de implementacin y recomendaciones fortalezcan su iniciativa y proporcionen una arquitectura ms
slida, gil y flexible.
www.chakray.com
19
Muchas gracias!
Sobre el autor:
Julio Cejas
Arquitecto Chakray / julio.cejas@chakray.com
SABER MS
www.chakray.com
20
info@chakray.com
www.chakray.com
www.chakray.com
21