Presentación de la arquitectura de microservicios
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.
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.
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!
Si es el caso, puedes suscribirte a mi newsletter, para siempre recibir los nuevos posts en tu email.