Arquitectura Software Moderna DDD, Eventos, Microservicios
- estudios

Sobre el curso
Sección titulada «Sobre el curso»Este curso enseña a diseñar arquitecturas de software adecuadas a sistemas complejos del mundo real combinando tres enfoques complementarios: Domain-Driven Design (DDD) como técnica para modelar el dominio del negocio, la arquitectura orientada a eventos como mecanismo para desacoplar componentes, y los microservicios como estilo de despliegue independiente.
El programa cubre el lado estratégico del DDD (descubrimiento de subdominios, lenguaje ubicuo, contextos delimitados y mapas de contexto) y el táctico (entidades, value objects, agregados, repositorios, servicios de dominio, eventos de dominio y factorías). Sobre esa base introduce patrones de mensajería asíncrona, event sourcing, CQRS y sagas, así como las decisiones de integración entre servicios mediante APIs síncronas, colas y brokers de eventos.
Está orientado a desarrolladores backend con experiencia que afrontan productos donde la complejidad de dominio empieza a desbordar el monolito, líderes técnicos que toman decisiones de arquitectura, y equipos que quieren adoptar microservicios con criterio en lugar de por moda. Pone énfasis en cuándo no usar cada técnica para evitar la sobreingeniería.
Conocimientos adquiridos
Sección titulada «Conocimientos adquiridos»El curso me ha permitido desarrollar las siguientes capacidades:
- Distinguir entre dominio, subdominio core, de soporte y genérico
- Construir lenguaje ubicuo compartido entre desarrollo y negocio
- Identificar bounded contexts (contextos delimitados) y sus fronteras
- Elaborar context maps describiendo relaciones entre contextos
- Modelar entidades, value objects y agregados con invariantes claras
- Diseñar repositorios como abstracción de persistencia
- Definir servicios de dominio para reglas que no encajan en una entidad
- Emitir y consumir eventos de dominio
- Aplicar event storming para descubrir comportamiento del sistema
- Separar comandos de consultas mediante CQRS
- Implementar event sourcing como fuente de verdad del estado
- Coordinar transacciones distribuidas mediante sagas
- Elegir entre coreografía y orquestación según el caso
- Diseñar mensajes idempotentes y tolerantes al reintento
- Integrar servicios mediante message brokers (Kafka, RabbitMQ)
- Decidir entre comunicación síncrona y asíncrona según contexto
- Aplicar API Gateway y BFF (Backend for Frontend)
- Gestionar service discovery y configuración centralizada
- Versionar contratos entre servicios sin romper consumidores
- Aplicar patrones de resiliencia: circuit breaker, retry, bulkhead
- Diseñar observabilidad con logs, métricas y trazas distribuidas
- Decidir granularidad apropiada de microservicios
- Reconocer anti-patrones (monolito distribuido, db compartida)
- Migrar de monolito a microservicios de forma incremental
Este conocimiento permite tomar decisiones de arquitectura con criterio en sistemas complejos, evitar la sobreingeniería habitual al adoptar microservicios y construir software alineado con el negocio que pueda evolucionar de forma sostenible a lo largo del tiempo.