Ventajas y costos ocultos de arquitecturas de microservicios
Clase 16 de 24 • Curso de Fundamentos de Arquitectura de Software
Resumen
Las arquitecturas orientadas a microservicios son actualmente muy populares debido a su capacidad para dividir problemas complejos en unidades más pequeñas y manejables. Esta metodología facilita la independencia entre equipos, permitiéndoles avanzar en desarrollos simultáneos siempre que mantengan contratos claros para la comunicación entre los servicios.
¿Qué son las arquitecturas orientadas a microservicios?
Este estilo se basa esencialmente en la frase "uno para todos y todos para uno", ya que cada microservicio resuelve un problema específico, y varios servicios pueden depender de este para solucionar asuntos más globales. Se destacan por:
- Resolver problemas específicos de forma concreta.
- Tener varios servicios que dependen de un microservicio para un objetivo común.
- Facilitar la independencia en despliegue y manejo de versiones.
¿Cuáles son los beneficios principales de los microservicios?
Usar esta arquitectura permite:
- Desarrollar y desplegar servicios de manera independiente.
- Avanzar sin necesidad de coordinación constante con otros equipos.
- Implementar y probar nuevas tecnologías individualmente.
- Trabajar simultáneamente en diferentes versiones sin afectar todo el sistema.
¿Qué costos debes considerar al implementar microservicios?
Es frecuente no ser plenamente consciente de costos ocultos, tales como:
- La carga cognitiva, ya que cada equipo debe conocer claramente el enfoque y función de cada servicio.
- Costos asociados al intercambio y transferencia de datos entre microservicios, especialmente en entornos de cloud computing.
- Complejidad en comunicación distribuida, incluyendo desafíos en la comunicación asíncrona.
- Posibles dificultades al rastrear dependencias y entender casos de uso complejos.
¿Qué implica la comunicación distribuida entre microservicios?
Cuando se implementan arquitecturas con distintos equipos trabajando simultáneamente, surgen implicaciones clave como:
- Comunicación asíncrona porque los integrantes pueden tener horarios y flujos de trabajo distintos.
- Intercambio de datos entre microservicios que pueden estar ubicados en diversas regiones geográficas.
- Costos no marginales en transferencia de datos, potencialmente aumentando significativamente en producción.
¿Cómo puedes visualizar y manejar estas complejidades iniciales?
Como ejercicio práctico inicial, puedes usar el modelo C4, que permite aproximarte a soluciones utilizando dos niveles de abstracción:
- Nivel de sistema.
- Nivel de contenedores desplegables.
Esto te ayuda a identificar anticipadamente si tu solución está orientada hacia microservicios o hacia otro estilo arquitectónico tradicional.