ENES

Microservicios

Construir una aplicación como muchos servicios chicos que hacen una sola cosa cada uno.

A la izquierda, un solo bloque grande contiene usuarios, pedidos y pagos; a la derecha, los mismos tres son servicios chicos separados, cada uno con su base de datos, que se hablan por APIs

Los microservicios son una forma de organizar el software en la que una aplicación se divide en muchos servicios chicos e independientes. Una tienda online puede tener un servicio para usuarios, otro para el catálogo, otro para pedidos y otro para pagos. Cada uno corre por su cuenta, normalmente en su propio contenedor, muchas veces tiene su propia base de datos, y se comunica con los demás solo a través de APIs o de mensajes en una cola.

La alternativa es un monolito: un solo programa que tiene todo adentro y se despliega como una sola pieza. Los monolitos son más simples de construir, probar y entender, y por eso la mayoría de los productos arranca así. El problema aparece cuando el código y el equipo crecen: un cambio chico obliga a desplegar todo de nuevo, una parte lenta frena al resto y decenas de personas se pisan entre sí.

Los microservicios responden a eso dejando que cada equipo sea dueño de un servicio, lo cambie y lo despliegue a su ritmo, y que se escalen solo las partes con más carga. El precio es la complejidad. Una llamada a una función dentro de un programa se vuelve una llamada por la red que puede tardar o fallar; una transacción en una sola base de datos se vuelve coordinación entre varios servicios; y encontrar un bug implica seguir un pedido a través de muchos logs. Si se hace sin necesidad, sale un "monolito distribuido" con los problemas de los dos. Herramientas como Kubernetes, los balanceadores de carga y el tracing existen en buena parte para manejar esto.

Para quedarse

Para seguir leyendo

Términos relacionados

Más de Software