Ventajas y costos ocultos de arquitecturas de microservicios

Clase 16 de 24Curso 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.