Introducción

Justo empecé a trabajar en la empresa Ziembra, para crear una versión 2 de la plataforma Kudert desde cero, usando el stack MERN (Mongodb/Express/React/Node), es decir todo en Javascript.

Una de las preguntas al principio del proyecto, era decidir si íbamos a crear la arquitectura del proyecto usando microservicios o no. La arquitectura de microservicios ya está muy de moda y muchas empresas quieren implementarla.

Ahora que investigue bastante el tema, te voy a presentar en este post qué es la arquitectura de microservicios.

Qué es la arquitectura de microservicios

Tradicionalmente, la arquitectura de las aplicaciones es monolítica, es decir que nuestra aplicación está compuesta por un solo programa que usa una base de datos.

La arquitectura de microservicios en cambio, se caracteriza por modularizar las aplicaciones en muchos programas diferentes que comunican entre sí, para en conjunto cumplir con los requerimientos del sistema. Cada microservicio se encarga de implementar un componente de la aplicación entera. Se llaman microservicios, para comunicar la idea que son muchos servicios pequeños que conversan. Usualmente la comunicación se hace con REST.

Diferencia monolito/microservicios

Cada color representa una funcionalidad diferente. En la arquitectura de microservicios, cada funcionalidad está implementada por un microservicio.

La regla de oro de los microservicios, es que siempre sea posible hacer un cambio a un microservicio y desplegarlo de manera independiente, sin afectar el resto de la aplicación (los otros microservicios). Si ese no es el caso y que los microservicios no son independientes en su ciclo de vida, quiere decir que están acoplados entre sí y la mayoría de los beneficios de la arquitectura se pierden.

Un ejemplo de uso de microservicios

Tomando Netflix como ejemplo, podríamos imaginar que tengan un microservicio diferente para:

  • el sistema de recomendación según lo que miras
  • manejar los pagos
  • comprimir el vídeo
  • encontrar subtítulos según el lenguaje
  • etc

¡Algunas empresas tienen hasta más microservicios que empleados!

Unas de las empresas que usan microservicios

Netflix es la empresa que más popularizó la arquitectura de microservicios. Ahora tienen miles de servicios que trabajan juntos para que puedas mirar la última serie en streaming.

Pero también Ebay, Amazon, Facebook, Uber y muchas empresas más están usando microservicios. Muchas más están migrando su monolito a una arquitectura de microservicios.

Uso de microservicios en Amazon y Netflix

Diagrama de la arquitectura de microservicios de Amazon y de Netflix

La diferencia entre la arquitectura de microservicios y SOA

La arquitectura de microservicios es una forma específica de realizar una arquitectura SOA (Service-Oriented Architecture, Arquitectura Orientada a Servicios).

La idea de SOA, es solamente romper un monolito en servicios que colaboran, con el beneficio teórico que se pueda reemplazar la implementación de un servicio de manera transparente para el resto de la aplicación. Aunque SOA sea un concepto que exista desde mucho tiempo, la industria nunca llegó a estandarizar una manera de implementar SOA bien. Muchos de los problemas relacionados con SOA vienen de los protocolos de comunicación (SOAP) y de una falta de consenso sobre la granularidad de los servicios o sobre dónde cortar el sistema.

En cambio, la arquitectura de microservicios surgió de uso real, como una manera bien definida de implementar SOA bien que permite evitar sus desventajas más comunes.

Conclusión

Espero que este artículo haya sido una buena introducción sobre el tema. En mi próximo articulo te hablaré de los beneficios y de los costos asociados con esta arquitectura para analizar cuando tiene sentido usarla.

¡Cómo siempre si te quedaste con dudas estoy aquí para contestarlas!