En esta ocasión estaremos comentando sobre una tendencia arquitectónica llamada Microservicios. Pero, ¿exactamente a qué se refiere? Es el método arquitectónico que desarrolla aplicaciones como un conjunto de servicios independientes, donde cada servicio ejecuta un determinado proceso, comunicándose a través de un mecanismo definido, complementando una meta única de un proceso de negocio. La comunicación entre cada servicio usualmente depende de los requisitos de la aplicación, común en la actualidad lo es el uso de HTTP/REST. 

tomcatvsmisroservicesPara comprender mejor, analizaremos el estilo tradicional de las aplicaciones monolíticas. Las aplicaciones monolíticas, son las que se desarrollan como una unidad autónoma. Es decir,una aplicación monolítica en un modelo cliente – servidor, la componente de servidor es la encargada de manejar las peticiones, ejecutar la lógica y realizar el manejo de los datos. El problema con este tipo de arquitectura que los ciclos de cambios están estrechamente vinculados o son funcionalmente dependendientes. Ello implica que un cambio en cualquier sección de la aplicación conlleve a un nuevo despliegue. Por tanto,  escalar una funcionalidad o componente de una aplicación trae como consecuencia a escalar completamente toda la aplicación.

Entendiendo Microservicios

Son varias definiciones que conceptualizan a los Microservicios sin embargo es notable que los sistemas bajo esta arquitectura comparten características como que un mismo sistema puede ser separado en múltiples componentes independientes, de manera que cada uno de ellos pueda ser transformado sin que comprometan la integridad de la aplicación en su totalidad. Como resultado un cambio sólo es ejecutado en un área de la aplicación sin necesidad de redistribuirla o desplegarla continuamente, pero ello incrementa la complejidad y la interconexión entre componentes aumentando las llamadas remotas. De igual manera el desarrollo se centra en la concepción de cada servicio y su mecanismo de comunicación a diferencia de la forma tradicional donde el enfoque residía en la presentación, lógica y acceso a datos. La mayoría de los métodos de desarrollo se centran en ofrecer una solución con un negocio predefinido el cual es manipulado por el usuario y mantenido por el usuario. Sin embargo, la perspectiva de Microservicios hace que el equipo de desarrollo posea control del producto durante su etapa de producción y mantenimiento.  Destacar que sistemas que siguen este modelo de desarrolla poseen una gobernanza descentralizada, lo que puede involucrar numerosas tecnologías y plataformas para alcanzar un objetivo común. Asimismo, las aplicaciones construidas a partir de un conjunto de servicios también pueden enfrentar el fallo de algunos por disímiles causas y mantener el sistema en su totalidad funcionando, depende las instancias disponibles por cada servicio, ello agrega mayor complejidad en el desarrollo de arquitectura de este tipo.

¿Quiénes lo usan?

Netflix, eBay, Amazon, the UK Government Digital Service, realestate.com.au, Forward, Twitter, PayPal, Gilt, Bluemix, Soundcloud, The Guardian son ejemplo de aplicaciones web que han asumido la migración del contexto monolítico hacia la visión de los Microservicios.

¿Hacia dónde?

Sin discutir si los Microservicios,  constituye el estilo del futuro para los desarrolladores. Cabe destacar que muchas organizaciones y desarrolladores han estado trabajando sus servicios con una aproximación de API de balance o desacoplamiento que pueden incluso ser clasificadas como Microservicios. Las UDDI teóricamente es una manera de descubrir dónde y que hace un servicio en específico. Pero esta tecnología compromete la complejidad en el desarrollo de los proyectos y no suele ser usada. Los servicios basados en REST enfrentan una problemática similar. Asumir el descubrimiento de los servicios es un problema solucionado, compartiendo los esquemas y el significado a través de aplicaciones no relacionadas, lo que conlleva a dificultades más allá de los Microservicios. Las tecnologías que involucran el término de datos enlazados a través de las RDF y OWL existen y están estandarizadas, pero aún no son comúnmente utilizadas. En un gran número de estándares y definiciones el próximo paso en esta área es llegar hacia los agentes inteligentes, quienes toman parte del procesamiento y análisis obteniendo resultados más precisos través de conjuntos de Microservicios. En los sistemas con complejidad creciente, con requisitos de Software como Servicios(SaaS), Internet de las Cosas(IoT) es claro que los Microservicios es un factor que viabiliza el desarrollo de aplicaciones que poseen estas características, incrementando el campo de investigación y desarrollo para el futuro.

Fuente:

http://martinfowler.com/articles/microservices.html

https://smartbear.com/learn/api-design/what-are-microservices/

 

 

Anuncios