Friday, August 24, 2018

Servicios y Microservicios

Sesión 2. Servicios y Microservicios

(17 / Agosto 2018 )

La sesión II presenta un enfoque de las arquitecturas orientadas a microservicios y a servicios. La información presentadas fue recopilada de las lecciones recibidas en la MCIC (Maestría de Ciencias de la Información y las Comunicaciones) de la Universidad Distrital en Bogotá-Colombia y de investigaciones adicionales.

La mejor forma de iniciar con el estudio de los conceptos de Servicios y Microservicios, quizas sea a través de una analogía de la evolución del sofware explicada con tipos de "pasta".


La evolución en la arquitectura de software, de la manera como se desarrolla y despliega inicio (no oficialmente llamada de esa manera) como "spaguetti", es decir se tenia poco control del código, luego, logrando mayor organización, se distribuyó en capas (parecido a como se ve la "lasagna"), hoy se tiene una nueva generación basada en servicios y microservicios (tal como lucen unos "raviolis"). 
La idea general de los servicios y microservicios es que en vez de tener una gran base de datos en la capa inferior con una capa lógica y una capa de interfaz (UI) en el nivel superior, los microservicios dividen pequeñas partes de la lógica de negocio, la funcionalidad y los datos dentro de pequeñas unidades autónomas. (Kavaliauskaite, 2017)

Servicios

Los servicios se caracterizan por que pueden: ser descubiertos, cubren una necesidad, tienen o no un estado, exponen su funcionalidad a tráves de interfaces (la interfaz se refiere a la declaración de un acuerdo-contrato), tienen capacidad de comunicaciones, son integrables, pueden ser orquestados (dirigidos, bus de servicios empresariares) y/o coreografiados (mensajes, enfocado a microservicios), son medibles y es una unidad funcional de NEGOCIO que tiene un contrato definido y capacidad de composición.


Microservicios

Los microservicios no están asociados con valor, es decir no resuelve un requerimiento funcional del negocio, pero si puede resolver un requerimiento funcional. (esto es debatible debido a los distintos enfoques de las arquitecturas SOA y de microservicios).


En otras palabras:

  • Unidades de negocios = Esencial.
  • Unidades Funcionales de negocio = Servicios.
  • Unidades Funcionales = Microservicios. 
"Los servicios y microservicios son modelos arquitectónicos"
Algunos autores consideran que los microservicios son una mejora del modelo de arquitectura orientada a servicios, mientras en la literatura tambien se puede encontrar descripciones de los microservicios como una arquitectura independiente coreografíada, a diferencia de los servicios que son orquestados.

Aquí se considerará que la arquitectura SOA es la base de la arquitectura de microservicios, teniendo presente que la primera es Orquestada (esta caracterizada por su bus "Enterprise Service Bus"y los protocolos de comunicación deben ser conocidos y fijos) y la segunda es coreografiada (los microservicios se exponen através de una API, con protocolos simples de comunicación sin un bus que lo dirija). A continuación se profundiza en las diferencias basado en las arquitecturas.

Visto desde el punto de vista arquitectónico se tiene:

  • Arquitectura orientada a servicios (SOA): 
Es una arquitectura de software donde distintos componentes de una aplicación proveen servicios a otros componentes via protocolos de comunicación sobre la red. Estos distintos servicios llevan a cabo pequeñas funciones: como validar pago, crear una cuenta de usuario o log-in por redes sociales, etc.
SOA es menos relacionado en como modularizar una aplicación y más en como componer la aplicación a través de componentes de software distribuidos.
Existen dos roles importantes, "service provider" y "service consumer". La capa del consumo es el punto donde usuario (humanos, otras aplicaciones, y terceros) interactian con SOA, y la capa del proveedor es la encargada de todos los servicios dentro de SOA.

  • Arquitectura Microservicios
La arquitectora de microservicios se puede considerar como el siguiente paso de SOA,  es una tipo de arquitectura que es una manera particular de desarrollar sofware, web y aplicaciones moviles como suites de servicios independientes. Con independencia quiere decir que pueden incluso ser escritos en otros lenguajes de programación y usar diferentes bases de datos. Ademas  casi no existen administradores de servicios y losmicroservicios usan comunicaciones ligeras como HTTP, REST o API's de terceros.


Diferencias

  • Desarrollo: En SOA cada equipo necesita conocer un mecanismo de comunicación común, en cambnio en microserv9cios los servicios ṕueden operar independientemente facilitando el despliegue.
  • Comunicaciones: En SOA existe un punto sigular de fallo que puede afectar todo el sistema, mientras que los microservicios son  más tolerantes a los errores.
  • interoperabilidad: SOA provee distintos protocolos de comunicación, mientras que microservicios busca simplificarlo con un número reducido de opciones de integración.
  • Tamaño: Microservicios es significatimanete más ligero que SOA.

Image title
 (Despodovski, 2017)


Taller 2.
Microservicio de sistema transmilenio con DevOps, donde se ejecute una función del sistema.

Para el desarrollo del taller se considero la funcipon de Consultar saldo de tarjeta. Se diseñaron diagramas de componentes y secuencia de la función y se implemento el servidor REST en Java. El repositorio se encuentra en:

https://github.com/jdaf2008/tallerMicroServicio 


Referencias

Kavaliauskaite, G. (2017, December 03). Microservices - Technology Or Team Size: An Interview with Technical Director Matt Meckes. Retrieved August 24, 2018, from https://cohaesus.co.uk/microservices-technology-or-team-size-an-interview-with-technical-director-matt-meckes/

Despodovski, R. (2017, November 12). Microservices vs. SOA – Is There Any Difference at All? - DZone Integration. Retrieved from https://dzone.com/articles/microservices-vs-soa-is-there-any-difference-at-al







No comments:

Post a Comment

IoT en la Nube

Sesión 6. IoT en la Nube ( 14 / Septiembre 2018 ) En la  sesión VI se describen las características de la implementación de IoT sobr...