¿Crees que es muy tarde para que tu aplicación se beneficie de aplicar las técnicas de Domain-Driven Design, Arquitectura Hexagonal y CQRS?

En esta formación, combinamos técnicas de refactoring con los principales fundamentos de Domain-Driven Design, para que puedas rescatar y modernizar cualquier aplicación legacy.

Objetivos de aprendizaje

  • Conocer y aplicar los principios del paradigma de Domain-Driven Design para escribir aplicaciones mantenibles en colaboración con los expertos de dominio.

  • Conocer y aplicar los patrones arquitectónicos que soportan una implementación exitosa de Domain Driven Design, como rich domain model, ports and adapters y los building blocks del modelo de dominio.

  • Identificar la lógica de negocio acoplada de un proyecto legacy en forma de modelo anémico y separarla usando value objects y service layer hacia un modelo rico.

  • Evitar el acoplamiento con la base de datos usando el patrón repositorio.

  • Desacoplar diferentes bounded context (in-process o remotos) mediante eventos de dominio.

  • Cómo identificar los invariantes del dominio y determinar las fronteras entre los agregados en consecuencia.

¿Cómo funciona nuestra metodología?

  • Píldoras de teoría

    Aprenderás los conceptos teóricos con videos cortos, fácilmente digeribles, que puedes ver cuantas veces quieras.

  • Katas prácticas

    Aplicarás lo aprendido con una serie de ejercicios prácticos propuestos.

  • Soporte en comunidad

    Tendrás acceso al servidor de Discord de Exeal donde podrás conversar, resolver dudas y compartir experiencias con los demás alumnos.

  • Acceso de por vida

    Tendrás acceso para siempre a todos los materiales del curso, así como a las nuevas actualizaciones del mismo.

Temario del curso

    1. Antes de comenzar...

    1. ¿Qué es (y qué no es) Domain-driven Design?

    2. Las 3 claves del DDD: Colaboración, Modelado e Incremental

    3. Diseño táctico y diseño estratégico

    1. El antipatrón Modelo de Dominio Anémico

    2. ¿Qué es la encapsulación?

    3. ¿Qué son los invariantes?

    4. Ejemplo de invariantes: Cuadrado

    5. Ejercicio: Identificación de invariantes

    6. ¿Por qué es importante preservar los invariantes?

    7. Relación entre modelo anémico y encapsulación

    8. Ventajas de un modelo anémico: ¿Cuándo usarlo?

    9. Modelos anémicos y bounded contexts

    10. La regla Tell Don't Ask

    1. Introducción al bloque de value objects y validación

    2. ¿Qué es un value object? Inmutabilidad e intercambiabilidad

    3. Ejemplos de value objects y entidades: Dirección, Número de tarjeta bancaria, Factura, Referencia de factura

    4. Importancia de usar value objects

    5. ¿Cómo identificar value objects?

    6. Ejercicio: identificar y crear value objects

    7. Ejemplo con C# de la librería CSharpFunctionalExtensions para implementar ValueObjects

    8. Solución: Identificar y crear value objects

    9. ¿Qué es la validación de datos?

    10. Estrategias de validación: Always valid domain model y validación funcional

    11. Ejercicio: Implementar reglas de validación con ResultT

    1. ¿Qué es un agregado?

    2. Normas para implementar agregados

    3. ¿Cómo escoger fronteras entre agregados?

    4. Relación entre CRUD y agregados

    5. Heurísticas para identificar agregados

    6. Heurísticas para diseñar agregados

    7. Ejercicio: Identificación de agregados

    1. ¿Qué son los Eventos de Dominio?

    2. Características de los Eventos de Dominio

    3. Ventajas de usar Eventos de dominio

    4. Vivimos en un mundo de consistencia eventual

    5. Elevar vs despachar eventos

    6. Eventos de dominio vs eventos de integración

    7. Ejemplo: Elevando eventos de dominio en C#

    8. Despachando eventos de dominio

    9. Ejemplo: Despachando eventos de dominio en C# con EntityFramework

    10. Protegerse de errores al despachar los eventos: Patrón Transactional Outbox

    11. Consistencia semifuerte en transacciones distribuidas: Patrón Saga

About this course

  • €149,00
  • 44 lecciones
  • 2 horas de contenido de video

Instructor

Technical Coach Pedro Pardal

Software engineer y tech lead con +12 años de experiencia construyendo aplicaciones web escalables en el cloud, y liderando equipos multidisciplinares usando metodologías ágiles. Inspirado por los valores de Software Craftsmanship y prácticas de Extreme Programming y DevOps, poniendo especial énfasis en la entrega temprana de valor, comunicación transparente con el cliente y excelencia técnica.

Precio regular