Patrón de microservicios: cuándo y cómo

Clase 19 de 43Curso Profesional de Arquitectura de Software

Resumen

Guido Contreras Boda, ingeniero de software y profesor de arquitectura en Platzi, explica con claridad qué es la arquitectura de microservicios, cómo se comunican sus componentes y en qué contexto conviene adoptarlos. Aquí encontrarás los beneficios, los desafíos de sincronización de datos y despliegue, y un ejemplo práctico en e-commerce para decidir con criterio.

¿Qué es la arquitectura de microservicios y por qué importa?

Los microservicios son componentes distribuidos que exponen funcionalidades al resto del sistema y se consumen entre sí o por clientes externos. Esta forma de modularidad permite servicios independientes y frecuentemente bases de datos por servicio, lo que trae potencia y también complejidad en la sincronización de datos y la intercomunicación.

  • Componentes distribuidos que exponen una funcionalidad concreta.
  • Servicios independientes consumidos por otros servicios o clientes.
  • Bases de datos por microservicio como práctica común.
  • Desafío: sincronización de datos e integración entre servicios.

¿Qué ventajas y costos tiene frente a un monolito?

Un monolito es más simple de desplegar, pero mejorar su disponibilidad es difícil. Con microservicios, la disponibilidad puede mejorar mediante réplicas de servicios, aunque el despliegue y versionado independiente aumentan la complejidad.

  • Mayor disponibilidad con réplicas de servicios.
  • Despliegue más difícil que en un monolito por versionado independiente.
  • Curva de aprendizaje en sistemas distribuidos.
  • Mantenibilidad con costo alto si el equipo es pequeño.

¿Cómo se comunican los microservicios y cómo lograr desacoplamiento?

La comunicación puede ser directa (un servicio depende de otro) o indirecta mediante eventos usando un bus de eventos. Con un estilo publish/subscribe, es posible desacoplar los servicios y hacerlos más independientes.

  • Comunicación directa: dependencia explícita entre servicios.
  • Comunicación indirecta: eventos en un bus de eventos.
  • Estilo publish/subscribe para desacoplar y reducir dependencias.

¿Cómo opera el ejemplo de e-commerce?

Cada funcionalidad vive en un servicio: usuarios, productos, pagos y logística. Tras un pago, se debe coordinar el envío: o pagos llama directamente a logística, o pagos publica un evento y logística lo escucha para actuar.

  • Servicios por dominio: usuarios, productos, pagos, logística.
  • Coordinación por eventos tras un pago exitoso.
  • Opciones: llamada directa o publicación en bus de eventos.

¿Qué patrón de integración conviene aplicar?

Cuando se busca independencia y bajo acoplamiento, el estilo publish/subscribe con bus de eventos ayuda a desacoplar la orquestación entre servicios y mejorar su autonomía.

  • Bus de eventos para comunicación asíncrona.
  • Menor acoplamiento que en dependencias directas.

¿Cuándo conviene usar microservicios y cuándo empezar con monolito?

La elección depende del contexto. Los microservicios funcionan bien cuando hay equipos capaces de mantener servicios por separado y se requiere escalar disponibilidad. Si el proyecto es nuevo y hay pocos desarrolladores, iniciar con un monolito puede ser más realista y migrar a microservicios cuando el producto y la empresa crezcan y aumente la complejidad.

  • Úsalos si tienes equipos por servicio y experiencia en sistemas distribuidos.
  • Evítalos al inicio si el equipo es pequeño y el costo de mantenibilidad es alto.
  • Beneficio clave: disponibilidad mejorable con réplicas.
  • Costo clave: despliegue y versionado independiente más complejos.
  • Estrategia: empezar monolito, evolucionar a microservicios con el crecimiento.

¿En qué contexto estás y qué estrategia seguirías: monolito inicial o microservicios con eventos? Comparte tus dudas y experiencia para enriquecer la discusión.