CursosWorkshop IAEmpresasPreciosBlogNewsletter
  • Cursos
  • Workshop IA
  • Empresas
  • Precios
  • Blog
  • Newsletter
Suscríbete
  • Cursos
  • Empresas
  • Comunidades
  • Blog
  • Tarjeta regalo
  • Newsletter
  • Soporte
  • Tienda
  • ConfAiBot
  • Contacta
  • Aviso legal
  • Condiciones generales
  • Política de privacidad
  • Política de cookies

Curso de Domain-Driven Design: DDD Aplicado

Standard
Javier FerrerRafa Gómez

Por Javier Ferrer y Rafa Gómez – Diseño y Arquitectura de Software

Aprende a modelar tus aplicaciones centrándote en tu dominio, definir Bounded Contexts, agregados, value objects, y mucho más. Todo de forma práctica y con ejemplos de código

Ir al curso

💸 ¡Primera lección disponible sin registro!

En el curso de Event-Driven Architecture analizamos cómo se comunican los distintos servicios de nuestra empresa, pero… ¿Cómo modelamos los servicios y aplicaciones de nuestra empresa?

Si queremos modelar un sistema complejo necesitamos complementar principios y técnicas como los principios SOLID o la Arquitectura Hexagonal con una parte estratégica. Es ahí donde entra Domain-Driven Design (DDD).

DDD hace de paraguas agrupando toda una serie de conceptos a nivel técnico y estratégico para promover:

  • Colaboración entre negocio o producto y el equipo técnico para modelar en código los problemas particulares de un determinado dominio (Bounded Contexts, Ubiquitous Language, Agregados, Value Objects, Eventos de Dominio, Entidades, Repositorios…)
  • Poner el foco de nuestra aplicación en el dominio. Manteniendo una alta tolerancia al cambio y evolución de los sistemas a lo largo del tiempo
  • Alta testabilidad de nuestra lógica de negocio gracias a desacoplarnos de la infraestructura
  • Facilitar la colaboración entre distintos equipos de desarrollo

Qué veremos en este curso:

  • Cómo definir Bounded Contexts y Modules
  • Diferencias entre Bounded Contexts, Subdomains, Modules, y Shared Kernel
  • Estructura de carpetas en un monorepositorio con múltiples aplicaciones y Bounded Contexts
  • Ejemplos de implementación de monorepo en PHP, Java y Scala
  • Arquitectura Hexagonal
  • Value Objects: Modelando nuestro dominio
  • Qué es un agregado y para qué sirve
  • Aggregate root vs Entity
  • Patrón Repository
  • Role interfaces vs Header interfaces
  • Comunicación entre Modules y Bounded Contexts
  • Migrando desde sistemas legacy gracias a la Capa Anticorrupción
  • Eventos de dominio
  • Shared Kernel: Qué compartimos entre Bounded Contexts
  • CQRS en DDD
  • Read Model: Optimizando para la lectura
  • Promoviendo un Module a Bounded Context
  • Ubiquitous Language: Cómo llevar la jerga del día a día al código

Este curso es agnóstico del lenguaje de programación, no obstante, para que no se quede en teoría pura, veremos ejemplos de implementación en PHP, Java y Scala.

Este curso complementa los cursos de SOLID, Arquitectura Hexagonal, CQRS, Comunicación entre [micro]servicios con Event-Driven Architecture, y CQRS y Event-Sourcing.

Por tanto, te recomendamos que primero hagas los que más te interesen para tener esos conceptos claros, y después profundices en los conceptos más estratégicos con este curso de DDD. ¡Sólo por 30€ tienes acceso a todos los cursos!

Aquí el primer vídeo del curso para que te hagas una idea de la calidad del contenido 😬

Vídeos del curso

  • DDD en 20 minutos

  • Cómo definir Bounded Contexts
  • Diferencias entre Bounded Contexts, Subdomains, Modules, y Shared Kernel
  • Estructura de carpetas en un monorepositorio
  • ¡Repasemos!
  • ¡A practicar! Define tus Bounded Contexts

  • Flujo de una petición en Arquitectura Hexagonal
  • Nuestro primer caso de uso: Student Sign Up
  • ¡Repasemos!
  • ¡A practicar! Crea un caso de uso

  • Refactorizando a Value Objects
  • ¿Dónde poner validaciones?
  • ¡Repasemos!
  • ¡A practicar! Añadiendo Value Objects

  • Introducción a agregados - Problemas de El Mundo Real™️
  • Aggregate root vs Entity: Ejemplo Video y VideoHighlight
  • Fallando miserablemente modelando Agregados 👼
  • ¡Repasemos!
  • ¡A practicar! Agregados y Entidades del mundo real

  • Refactorizando Student Sign Up aplicando repositorio
  • Role interfaces vs Header interfaces
  • Comunicar modules y Bounded Contexts: Repositories vs Application Service
  • ¡Repasemos!
  • ¡A practicar! Añadiendo repositorio

  • Cómo y por qué desacoplar entre módulos y Bounded Contexts
  • Refactoring del caso de uso añadiendo publicación de eventos
  • ¡Repasemos!
  • ¡A practicar! Publicando eventos

  • Definiendo contratos a nivel de interfaces de dominio
  • Definiendo contratos a nivel de eventos de dominio
  • Implementando eventos de dominio
  • ¡Repasemos!
  • ¡A practicar! Escuchando eventos

  • Qué compartimos entre Bounded Contexts
  • ¡Repasemos!
  • ¡A practicar! Revisando Shared

  • Flujo petición CQRS vs Hexagonal
  • Comunicar modules y Bounded Contexts: Application Service vs Query Bus
  • ¡Repasemos!
  • ¡A practicar! Refactorizando a CQRS

  • Comunicar modules y Bounded Contexts: Query Bus vs Eventos
  • Nueva feature: Horas totales de un curso
  • ¡Repasemos!
  • ¡A practicar! Consulta vía Query

  • Evitando JOINs denormalizando Read Model
  • Alternativas para agregar información
  • ¡Repasemos!
  • ¡A practicar! Agregando información

  • Promoviendo el módulo Notifications a Bounded Context
  • ¡Repasemos!
  • ¡A practicar! Promoviendo a Bounded Context

  • Monorepo vs. Multirepo
  • 🐘 Monorepo en PHP
  • ☕ Monorepo en Java
  • 🧬 Monorepo en Scala
  • ¡Repasemos!
  • ¡A practicar! Conociendo la estructura de la aplicación

  • Lenguaje ubicuo y flujo de trabajo outside-in en DDD
  • ¡Repasemos!
  • ¡A practicar! Diseñando nuevas features

  • Cómo convencer al equipo para aplicar DDD
  • ¿Buses síncronos vs. Asíncronos? ¿Integración en framework?
  • ¿Transaccionabilidad? ¿Sagas? ¿Lógica de Agregados?
  • ¡Repasemos!

  • Un poco de lio con el Tell, Don't Ask
  • Relación de Bounded Contexts y Aplicaciones
  • Crear un Validator que use Value Objects en el Controller

  • Conclusión y siguientes pasos
  • Feedback de mejora del curso y siguientes pasos
Ir al curso

Cursos relacionados

Standard
Patrones de diseño: Inbox y Outbox

📬 Patrones de diseño: Inbox y Outbox

Javier FerrerRafa Gómez

Aprende cuándo utilizar (y cuándo no) los patrones Inbox y Outbox.

Ver curso
Standard
Event bus en base de datos [Diseño de Infraestructura]

🚏 Event bus en base de datos [Diseño de Infraestructura]

Javier FerrerRafa Gómez

Añade escalabilidad utilizando tu propia base de datos como un Event Bus.

Ver curso
Standard
Auditoría Green Slope

🟢 Auditoría Green Slope

Javier FerrerRafa Gómez

Sesión de auditoría en la que revisamos el Diseño y Arquitectura de Software de Green Slope.

Ver curso
Ver catálogo completo

Paga según tus necesidades

lite (sólo mensual)

19 €
al mes
  • Cursos esenciales de programación para construir una base sólida
Popular

standard

24,92 €
Descuento vs mensual de 49 €
Pago anual de 299 €
al mes
  • Catálogo principal para dominar cómo escribir un código mantenible, escalable y testable
  • Recibir ofertas de empleo verificadas por Codely
  • Factura de empresa
  • Acumular descuentos al renovar

premium

41,58 €
Descuento vs mensual de 89 €
Pago anual de 499 €
al mes
  • Cursos exclusivos de IA para mantenerte siempre actualizado
  • Acceso anticipado a nuevos cursos
  • Descuento en workshops
  • Recibir ofertas de empleo verificadas por Codely
  • Factura de empresa
  • Acumular descuentos al renovar

No subiremos el precio mientras mantengas tu suscripción activa

SuscríbeteInicia sesión