Definición de Arquitectura de Microservicios

La arquitectura de microservicios es un enfoque para desarrollar una aplicación software como una serie de pequeños servicios, cada uno ejecutándose de forma autónoma y comunicándose entre sí, por ejemplo, a través de peticiones HTTP a sus API. Cada microservicio es independiente y su código debe poder ser desplegado sin afectar a los demás. Incluso, cada uno de ellos puede escribirse en un lenguaje de programación diferente, ya que solo exponen la API  al resto de microservicios.

Muchos desarrolladores están descubriendo cómo esta forma de creación de software favorece el tiempo, rendimiento y estabilidad de sus proyectos.
No hay reglas sobre qué tamaño tiene que tener cada microservicio, ni sobre cómo dividir la aplicación en microservicio. Algunos autores, caracterizan un microservicio como algo que a nivel de código podría ser reescrito en dos semanas.  Por lo tanto, se tendrá una aplicación modular a base de “pequeñas piezas”, que se pueden ir ampliando o reduciendo a medida que se requiera.

Los microservicios ofrecen una serie de beneficios potenciales tanto sobre enfoques más tradicionales como SOA y arquitecturas monolíticas. Los microservicios, cuando se hacen bien, son maleables, escalables y resilientes, y se pueden implementar en corto plazo desde el inicio de la implementación hasta el despliegue en la producción. Esta combinación, a menudo resulta difícil de alcanzar para sistemas de software complejos.

Gracias a su sencilla escalabilidad, la arquitectura de microservicios se considera especialmente adecuada cuando se tiene que procurar la compatibilidad con una amplia variedad de plataformas. Por ejemplo IoT, web, móvil, wearables,  o simplemente cuando no se sabe  hacia qué tipo de dispositivos se está orientando el  trabajo.

¿Cómo comunica un microservicio con otro?

La respuesta será dependerá de las habilidades de los desarrolladores, como de las preferencias o el sistema que mejor se adapte a los requerimientos. Muchos usan HTTP/REST con JSON o Protobuf.  REST se está posicionando en extensión de uso, al ser uno de los métodos de integración cuya curva de aprendizaje y uso es más rápida respecto a otros protocolos.

Adoptadores de Arquitectura de Microservicios.

No hay mejor forma de conocer el alcance que ha tenido la arquitectura de microservicios, es ver quiénes lo han implementado. Multitud de webs que sirven aplicaciones a gran escala han decidido invertir en la evolución hacia los microservicios.  Esto garantiza mantenimiento y escalabilidad de sus productos sea mucho más simple, efectivo y rápido. Algunas de estas compañías, son:

Netflix: Esta plataforma tiene una arquitectura que se migró a arquitectura de microservicios. A diario recibe una media de mil millones de llamadas a sus diferentes servicios. Se dice que Netflix  es responsable del 30% del tráfico de internet. Esta arquitectura es capaz de adaptarse a más de 800 tipos de dispositivos, mediante su API de streaming de vídeo. Con esto puede ofrecer un servicio más estable, por cada solicitud que se le hace.  Cada solicitud  realiza más de cinco solicitudes a diferentes servidores para no perder nunca la continuidad de la transmisión.

Amazon: No soporta tantos dispositivos como Netflix, pero tampoco es que sea fundamental para cubrir su sector. Migró el 2014 a la arquitectura de microservicios siendo una de las primeras  compañías grandes que la implementaban en producción. No hay cifra aproximada de la cantidad de solicitudes que pueden recibir a diario, pero no son pocas. Entre éstas encontramos multitud de aplicaciones, las API del servicio web que ofrecen o la propia web de Amazon. Sus ingenieros reconocen que habría sido imposible sobre la arquitectura monolítica con la que trabajaban previamente.

Ebay: Una de las empresas con mayor visión de futuro, siendo pionera en la adopción de tecnologías como Docker y microservicios. Su aplicación principal comprende varios servicios autónomos, y cada uno ejecuta la lógica propia de cada área funcional que se ofrece a los clientes.

 

La siguiente figura ilustra un comparativo de la arquitectura de desarrollo monolítico versus la arquitectura de microservicios

arquitectura de microservicios

 

NEURONET ofrece consultoria en la adopción de la arquitectura de microservicios, pruebas de concepto en java