¿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.

18 thoughts to “¿Que son los microservicios?”

  1. Hola muy buen articulo, me surge una duda, por cada micro-servicio se tiene que desplegar un ear distinto? es decir si tengo 4 micro-servicios tendré que desplegar 4 ears?

    Saludos

    1. Hola Alexander, en un principio te diría que sí, pero hay más cosas a tomar en concideración, no solo se trata de separar los EAR o WAR, tambien tiene que ver la forma en que los despliegas, y que tan dependientes son uno del otro, es decir, por ejemplo, si despliegas los 4 EAR en el mismo servidor de aplicaciones, entonces estarías montando todo en monolítico, pues si muere el server, muere todo. En la arquitectura de microservicios, es importante saber separar los servicios en funcionalidad altamente cohesiva, pero también, en infraestructuras mínimas, que permitan desplegar de forma independiente cada microservicio.

  2. Muy interesante el artículo, sin embargo no creo que no estuvo completa la siguiente sección del artículo, o es que no lo comprendí bien. ¿SOA y microservicios son lo mismo?

    No veo una respuesta exacta, por favor quisiera saber cuales serían las diferencias exactas entre estos modelos arquitecturales, ya que hasta donde tengo conocimiento SOA no siempre debe o puede utilizar los estándares web (SOAP, WSDL, etc), es decir que se puede implementar SOA utilizando cualquier tecnología basada en servicios (REST???).

    Es una duda que quisiera quitarme.

    Saludos!! un buen artículo.

    1. Hola Franco, son cosas diferentes, SOA promueve la creación de servicios para lograr la interoperabilidad entre los diferentes sistemas. Si bien, SOA dice que creemos servicios, no especifica la tecnología o la implementación concreta de dichos servicios, por lo que podemos crear servicios con SOAP, REST, Colas de mensajes, RPC, etc. Por otro lado, la arquitectura de Microservicios se enfoca más en la forma en que distribuimos la aplicación en pequeños servicios que hacen solo una tarea, la hace bien y son totalmente independientes y auto suficientes, lo que quiere decir que deben de tener su propio de entorno de ejecución integrado, no depender de otro servicio, etc. Además, los microservicios son componentes débilmente acoplados, por lo que el funcionamiento de un microservicios no debe de depender del funcionamiento de otro. Te invito a que veas nuestro nuevo curso de Desarrollo de Microservicios con Spring Boot, el cual lo acabamos de lanzar y tiene precio especial : https://codmind.com/courses/api-rest-con-spring-boot

      saludos.

      1. Muchas gracias por la respuesta Oscar, te agradezco mucho. Referente al curso que mencionas tengo entendido que el material completo estará para octubre aproximadamente, quisiera saber todo los puntos que se van a ver en el curso.

        Sería interesante tener una implementación completa de microservicios, tomando en cuenta la seguridad (como aplicar seguridad en los microservicios), tolerancia a fallos, balanceo de carga, gateway, etc. Por otro lado veo que el curso usará RestTemplate para la comunicación entre microservicios, hasta donde sé en las proximas versiones de spring esta tecnología será deprecada, ya que actualmente la nueva implementación para esta sería WebClient. Estoy en lo correcto? Podría ser interesante tomar en cuenta este nuevo enfoque.

        Nuevamente agradecerte la respuesta, Saludos!

        1. Hola Franco, te cuento primero como está lo del curso, el curso está parcialmente liberado, lo que quieres decir que ya tienes acceso a los videos publicados, y estaremos subiendo nuevos videos cada 1 o 2 semanas, con el compromiso de tenerlo totalmente liberado para el 20 de octubre. Por ese mismo motivo tenemos el curso en descuento especial.

          Con respecto al contenido, el curso está planificado para durar unas 9 a 10 hrs, lo cual es bastante amplio. El curso esta diseñado al rededor de un proyecto final donde aplicaremos los conceptos de los microservicios y tenemos pensado agregar un segundo curso más avanzado con los temas que tu mencionas.

          Respecto a RestTemple, es verdad, sin embargo tiene mucho tiempo diciendo eso, además, queremos hacer otro curso donde hablemos de Spring Cloud y Netflix OSS, y allí se usa Feign, un cliente más avanzado.

          Espero haberte resuelto las dudas.

          1. Hola intento comprar el curso de spring boot con microservicios y no he podido pido recuprar la contraseña y me aparece,La cuenta no ha sido validada. Un correo se te fue en envíado con la liga de confirmación, favor de validar tu bandeja de entrada.

          2. Hola Alejo, acabo de confirmar tu cuenta para que ya puedas acceder, por favor indicamente si puedes entrar.
            Saludos.

Deja un comentario

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