¿Que son los microservicios?

Que son los microservicios

Justo cuando nos estábamos empezando a acostumbrar a SOA, llegan los microservicios para confundirnos más, y es que SOA y microservicios tiene un gran parecido, tanto que para los que no están al tanto, puede resultar lo mismo, sin embargo, SOA y microservicios tienen sus diferencias y es justo de lo que hablaremos en este artículo.

 

Antes de empezar a leer este artículo te puede resultar interesante leer mi artículo “Que es service-oriented Architecture (SOA)” y “SOAP vs REST” pues pueden resultar de mucha ayuda para tener un contexto más amplio de lo que hablaremos en este artículo.

 

Primero que nada, es importante entender que los microservicios son un “tipo de arquitectura de software” y no un API o tecnología, la cual podemos instalar y utilizar, sin embargo, sí que existen frameworks que implementan esta arquitectura para facilitarnos la vida, como es el caso de Spring Boot en Java o Express para NodeJS.

Las arquitecturas de software son totalmente ajenas a los lenguajes de programación, pues solo establecen la forma en la que las tecnologías deberían de funcionar y no como fueron implementadas, es por eso que tenemos una gran variedad de frameworks que nos ayudan a implementar microservicios, se podría programar de formas diferentes, pero son profundamente parecidas en la forma en que trabajan.

 

¿SOA y microservicios son lo mismo?

 

Para comprender que son los microservicios es fundamental entender que son los servicios (SOA), pues es la base en la que se sustentan los microservicios. Tanto SOA como Microservicios son “tipos de arquitectura de software” que se basan en servicios, sin embargo, SOA es una arquitectura de más alto nivel, pues nos invita a construir aplicaciones basada en servicios, donde un servicios es la unidad más pequeña de un software, por otro lado, los microservicios también nos invita a crear servicios, la diferencia radica en que los microservicios están diseñados en la construcción de pequeños servicios o incluso programas  que cumplan una funcionalidad muy precisa y muy pequeña, la cual pueda ser desacoplada del resto de aplicaciones y funcionar de una forma totalmente autónomos del resto de aplicaciones.

 

Cómo funcionan los servicios SOA

 

Por otro lado, en SOA podemos tener aplicaciones monolíticas que expongan servicios, como son los clásicos ERP o CRM, las cuales son aplicaciones gigantes que exponen una gran cantidad de servicios, y que es imposible separar alguna funcionalidad para instalar por separado.

Servicios SOA

Como se puede apreciar en la imagen anterior, un ERP es una aplicación muy grande, que podríamos llamar monolítica, la cual implementa una arquitectura SOA para exponer los servicios, sin embargo, es imposible separar alguna funcionalidad de instalarla por separado, incluso, apagar cierta funcionalidad que no sea necesaria, en este esquema tenemos todo o no tenemos nada.

 

Cómo funcionan los microservicios

 

En el caso de la arquitectura de microservicios, la idea se centra en separar la funcionalidad en pequeñas aplicaciones independientes que puedan operar con completa autonomía, las cuales expongan su funcionalidad como servicios, con la idea de que sean reutilizables. En esta arquitectura tenemos varias aplicaciones desplegadas en lugar de una sola:

Microservicios

En la imagen anterior podemos ver como una serie de servicios pueden ser desplegados de forma independiente, de tal forma que cada uno funciona de forma autónoma y sin importar si los demás servicios están operando o no.

 

 

Microservicios y el escalamiento

 

Sin duda, una de las grandes ventajas que ofrecen los microservicios contra las arquitecturas monolíticas, es la posibilidad de un escalamiento más controlado, pues una arquitectura monolítica escala de una forma monolítica, es decir, que, si necesitamos clusterizar una app, es necesario escalar toda la app sin importar que existan módulos con poca demanda que no requieren ser escalados, en cambio, con los microservicios, es posible escalar únicamente los módulos de alta demanda aprovechando al máximo nuestro hardware.

Arquitectura de microservicios

 

En la imagen anterior podemos ver la diferencia que existe entre escalar una app monolítica vs una con microservicios. Lo primero que podemos observar, es que la aplicación monolítica se ha replicado exactamente igual en los cuatro contenedores, es decir, que los módulos A, B, C y D están presentes en todos los contenedores, sin importar si son realmente requeridos o no. Por otro lado (derecha), tenemos escalamiento con microservicios, lo primero que podemos observar, es que cada contenedor tiene una combinación diferente de componentes desplegados, pues algunos módulos son más críticos que otros, como es el caso del módulo B, el cual está presente en todos los contendedores, incluso, se encuentra más de una vez algunos contenedores. Por otro lado, tenemos el módulo D el cual solo se encuentra en un solo contenedor, debido a que no es un proceso crítico, como podría ser el módulo de envío de Emails.

 

Conclusiones:

 

Como podemos observar, los microservicios son en realidad una evolución de la arquitectura SOA, la cual nos invita a crear aplicaciones más modulares, capaces de funcionar de una forma autónoma y que puedan ser reutilizadas de una forma más eficaz, de la misma forma, optimizamos la utilización de nuestro hardware, pues solo desplegamos lo que es realmente necesario, en lugar de desplegar aplicaciones monolíticas completas.

Artículos relacionados

Concurrencia VS Paralelismo A pesar de que hoy en día casi todas las aplicaciones trabajan con múltiples hilos de ejecución y que los programadores saben utilizarlos, muy poca ge...
Webhook una alternativa al Polling Los Webhook solucionan una de las problemáticas más comunes en la integración de aplicaciones, que es la obtención de actualizaciones en los sistemas ...
Escalabilidad Horizontal y Vertical La escalabilidad es la capacidad del software para adaptarse a las necesidades de rendimiento a medida que el número de usuarios crece, las transaccio...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *