Portada » ¿Qué es un microservicio, para qué se hace y en qué se diferencia de un servicio?

¿Qué es un microservicio, para qué se hace y en qué se diferencia de un servicio?

1) Definición rápida (sin rodeos)

  • Microservicio: una pieza pequeña y autónoma de software que hace una cosa muy bien (un “bounded context”), se despliega de forma independiente, expone una API (normalmente HTTP/JSON o gRPC), y no comparte base de datos con otros. Cada microservicio puede tener su propio repositorio, ciclo de vida y tecnología.
  • Servicio (SOA/tradicional): componente de negocio más grande y transversal que también expone una interfaz, pero suele compartir modelos/datos y depende de un bus de mensajería o ESB para orquestación. Tiende a ser más acoplado, con despliegues coordinados.

Piensa en una ciudad:

  • Microservicios: muchos talleres especializados (neumáticos, frenos, pinturas). Cada uno decide su herramienta, abre/cierra cuando quiere y solo hace su labor.
  • Servicios (SOA): centros de servicios grandes dentro de un parque industrial que comparten almacenes, logística y normas comunes del polígono.

2) Un pelín de historia (porque el pasado enseña)

  1. Monolitos (años 90–2000): una sola app grande. Fácil al inicio, dura de escalar y desplegar.
  2. SOA (2000–2010): se trocea en servicios (a menudo SOAP) coordinados por un ESB. Redujo el monolito… pero introdujo acoplamientos y gobernanza pesada.
  3. Microservicios (2013 en adelante): inspirados por prácticas de Amazon/Netflix. Servicios pequeños, independientes y equipos autónomos. “You build it, you run it”.

Curiosidad: Amazon popularizó el mantra de “two-pizza team” (un equipo tan pequeño que se alimenta con dos pizzas) y APIs obligatorias entre equipos.

3) Rasgos clave de un microservicio (la “lista de comprobación”)

  • Un solo propósito (p. ej., “facturación”, “inventario”, “catálogo”).
  • Propiedad de datos aislada (cada uno su BD; nada de joins entre servicios).
  • Despliegue independiente (puedes actualizar “catálogo” sin tocar “carrito”).
  • Observabilidad integrada (logs, métricas, trazas distribuidas).
  • Comunicación ligera (HTTP/REST, gRPC, eventos – Kafka/RabbitMQ).
  • Tolerancia a fallos (circuit breakers, timeouts, retries, idempotencia).
  • Autonomía tecnológica (un servicio en Python, otro en Go… si tiene sentido).

4) ¿Para qué se hacen? (beneficios reales)

  • Escalado fino: solo escalas lo que “duele” (p. ej., búsquedas en rebajas).
  • Despliegues rápidos: pequeños cambios, menos riesgo, CI/CD fluido.
  • Equipos dueños del negocio: más velocidad y foco.
  • Resiliencia: si cae “recomendaciones”, la compra puede seguir funcionando.
  • Evolución tecnológica sin dramas: migras un servicio a otra tech cuando convenga.

Ojo: los microservicios agregan complejidad operativa. Si no tienes CI/CD, observabilidad y cultura DevOps, sufrirás.

5) Microservicio vs Servicio (SOA) — comparativa directa

AspectoMicroservicioServicio (SOA)
GranularidadFina (una capacidad concreta)Más gruesa / transversal
DatosPropios por servicioA menudo compartidos/centralizados
DespliegueIndependienteFrecuentemente coordinado
ComunicaciónREST/gRPC/eventos, simpleESB/WS-* (gobernanza más pesada)
AcoplamientoBajo (por contrato)Mayor (modelos compartidos, ESB)
GobernanzaLigera (por equipo)Centralizada (arquitectura corporativa)
Curva operativaAlta (DevOps/observabilidad)Menor, pero con menos agilidad
Casos idealesEscalado rápido, equipos autónomos, releases frecuentesIntegración corporativa, procesos BPM, reglas comunes

6) ¿Cuándo conviene usarlos (y cuándo no)?

Úsalos si:

  • Tu producto crece rápido y necesitas lanzar features semanalmente.
  • Tienes múltiples equipos y quieres desacoplar agendas.
  • Hay picos de tráfico claros en dominios concretos.
  • Estás dispuesto a invertir en plataforma (Kubernetes, observabilidad, SRE).

Evítalos o espera si:

  • Estás en fase inicial con equipo pequeño (un monolito modular te hará más rápido).
  • No tienes aún CI/CD, monitorización ni testing automatizado decente.
  • Tu dominio es simple y el costo operativo no compensa.

Regla práctica: Empieza “mono-modular”. Cuando un módulo tenga razones claras (escala, ownership, velocidad), extráelo a microservicio.

7) Diseño: de la teoría a lo práctico

7.1 Bounded Context (DDD)

Define límites de negocio claros: Pedidos, Pagos, Catálogo, Usuarios.
Cada contexto = un microservicio con su modelo y su BD.

7.2 Contratos y eventos

  • Sincronía: REST/gRPC para consultas/acciones.
  • Asincronía: eventos tipo “OrderCreated”, “PaymentCaptured”.
    Beneficio: menor acoplamiento, mejor resiliencia.

7.3 Datos: nada de “joins” remotos

  • Cada servicio propietario de su tabla. Para leer datos ajenos, usa APIs o proyecciones/eventos.

7.4 Idempotencia y consistencia eventual

  • Reintentos seguros (misma operación no debe duplicar efectos).
  • Acepta que algunas vistas tarden unos segundos en reflejar cambios.

8) Operativa: lo que suele romper (y cómo evitarlo)

Problemas típicos

  • “Zoo de servicios” sin observabilidad → imposibles de depurar.
  • Dependencias en cascada → caídas en dominó.
  • Contratos que cambian sin versionado → clientes rotos.
  • “Base de datos compartida por atajo” → acoplamiento mortal.

Buenas prácticas

  • Tracing distribuido (OpenTelemetry), métricas (Prometheus), logs centralizados.
  • Circuit breakers (resilience4j), timeouts, bulkheads.
  • Versionado de APIs (v1, v2) y contratos (OpenAPI, Pact).
  • Catálogo de servicios (Backstage) y documentación viva.
  • SRE: objetivos SLO/SLI, alertas útiles y runbooks.

9) Microservicios en Python (bonus práctico)

  • Frameworks API: FastAPI (rápido y tipado), Flask (ligero).
  • Mensajería: Kafka (eventos), RabbitMQ (colas).
  • Testing: pytest + contract tests (Pact), tests de integración con docker-compose.
  • Contenedores: Docker + Kubernetes (Helm, Kustomize).
  • CI/CD: GitHub Actions/GitLab CI; despliegues canary/blue-green.

10) Costes y ROI (la conversación seria)

  • + Productividad por equipo (release independiente).
  • + Escalado eficiente (pagas por lo que usas).
  • – Coste de plataforma (infra, observabilidad, seguridad).
  • – Complejidad cognitiva (más piezas, más conocimiento).

Conclusión financiera breve: compensa cuando tu velocidad de cambio y necesidad de escalar superan el coste de operar la plataforma.

🚀 Da el siguiente paso en tu carrera como QA

Has descubierto qué estudiar para ser QA, ahora es momento de dominar las herramientas y habilidades que te abrirán más puertas.
Entra en nuestro Centro de Recursos y accede a todos los libros y guías exclusivas que he publicado, diseñados para que aprendas de forma práctica y profesional.

👉 Accede ahora y transforma tu futuro

¿Te resultó útil esta guía? Compártela con otros profesionales de QA y mantente actualizado con las últimas tendencias salariales en el mundo del testing de software.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *