Introducción al diseño dirigido por dominios (DDD)

Este curso es una introducción al diseño basado en dominios
Este curso cubre los siguientes temas:
• Conceptos de diseño impulsado por dominio
• Diseño impulsado por dominios estratégicos o capacidades de negocio
• Bloques de construcción de diseño impulsado por dominio
• Arquitectura de aplicaciones bajo diseño controlado por dominio

Dirigido a

Este curso está dirigido a profesionales que trabajan como product owner, desarrolladores, ingenieros de negocio y en general a cualquier profesional que participe en el desarrollo de software con la nueva generación de herramientas.

Temario

Capítulo 1. Conceptos de diseño impulsados por dominios

  • Diseño impulsado por dominio: ¿qué es?
  • Diseño impulsado por dominio: lo que no es
  • Espacio de problemas complejos
  • Esfuerzo de diseño
  • División del trabajo
  • Diseño táctico
  • Diseño Estratégico
  • Idiomas separados
  • Lenguaje ubicuo 1/2
  • Lenguaje ubicuo 2/2
  • Capturando el lenguaje ubicuo 1/3
  • Capturando el lenguaje ubicuo 2/3
  • Capturando el lenguaje ubicuo 3/3
  • Dominio
  • Ejemplos de dominio
  • Tipos de dominios
  • Subdominios
  • Contexto
  • Modelo
  • Ejemplo de modelo de dominio: librería
  • Modelo de dominio de librería
  • Ejemplo de modelo de dominio: negocio de gabinetes personalizados
  • Resumen

Capítulo 2. Diseño basado en dominios estratégicos

  • Diseño Estratégico
  • El modelo de dominio
  • Creando el modelo
  • Preocupaciones separadas
  • Dominios frente a contextos
  • Contextos delimitados
  • Contextos delimitados independientes
  • Análisis de la superposición en contextos delimitados
  • Resolución de superposiciones con mapeo de contextos
  • Tipos de mapeo
  • Mapeo de asociaciones
  • Kernel compartido
  • Preocupaciones transversales
  • Cliente-Proveedor
  • Conformista
  • Capa anticorrupción
  • Servicio de host abierto
  • Caminos separados
  • Gran bola de barro (BBOM)
  • Integración vía base de datos
  • Resumen

Capítulo 3. Bloques de construcción de diseño impulsado por dominio

  • Bloques de construcción
  • Objetos de entidad
  • Objeto de valor
  • Objeto de valor: ejemplos
  • Agregado 1/2
  • Agregado 2/2
  • Un ejemplo de agregado 1/2
  • Un ejemplo de agregado 2/2
  • Módulo
  • Un ejemplo de módulo
  • Niveles de granularidad
  • Evento de dominio 1/2
  • Evento de dominio 2/2
  • Ventajas de eventos de dominio
  • Servicios
  • Ejemplos de servicios
  • Repositorio
  • Interfaz de repositorio genérico
  • Interfaz de repositorio de dominio
  • Fábrica
  • Ejemplo de fábrica
  • Resumen

Capítulo 4. Arquitectura de la aplicación bajo diseño controlado por dominio

  • Arquitectura general
  • Capa de interfaz / presentación
  • Capa de aplicación
  • Capa de dominio
  • Capa de dominio: en la práctica
  • Capa de infraestructura (servicios)
  • Tecnologías para usar con Domain Driven Design
  • Inyección de dependencia (DI)
  • Programación orientada a aspectos (AOP)
  • Programación orientada a aspectos (AOP)
  • API de persistencia de Java (JPA)
  • Resumen

Capítulo 5. Microservicios

  • ¿Qué es un «microservicio»?
  • Una analogía útil
  • SOA – Relación de microservicios
  • ESB – Relación de microservicios
  • Diseños monolíticos tradicionales y su función
  • Desventajas de los monolitos
  • Pasar de un monolito heredado
  • Al mudarse de un monolito heredado
  • Las fuerzas impulsoras detrás de los microservicios
  • ¿Cómo pueden ayudarlo los microservicios?
  • La arquitectura de microservicios
  • Microservicios de utilidad en AWS
  • Interconectividad de microservicios
  • Consideración de interoperabilidad de intercambio de datos
  • Administrar microservicios
  • Implementación de microservicios
  • Incrustar bases de datos en Java
  • Plataformas y marcos de aplicaciones orientados a microservicios
  • Resumen

Capítulo 6. Arquitectura hexagonal y microservicios

  • Una vista diferente de la arquitectura de aplicaciones
  • Capas tradicionales para la interfaz de usuario tradicional
  • Capas con DDD
  • Métodos de interacción modernos
  • Almacenamiento de datos moderno
  • Arquitectura hexagonal: puertos y adaptadores
  • DDD en arquitectura hexagonal
  • El patrón del adaptador
  • La estructura del patrón del adaptador
  • Comportamiento del patrón de adaptador
  • Entidades, valores y agregados
  • Repositorios: descripción general
  • Repositorios orientados a colecciones
  • Repositorios orientados a la persistencia
  • Servicios de dominio
  • Eventos de dominio
  • Descubriendo eventos
  • Modelado de eventos
  • Eventos y contextos delimitados
  • Publicar eventos de dominio
  • Almacenamiento de eventos de dominio
  • Reenvío de eventos de dominio
  • Integración entre contextos delimitados
  • Asignación a microservicios
  • Estilos de comunicación para microservicios
  • Interfaces de usuario: cruzar los límites del sistema
  • Estrategias de comunicación de la interfaz de usuario
  • Revisión de la integración entre contextos delimitados: opciones
  • Integración a través de servicios RESTful
  • Integración a través de formatos binarios
  • Integración a través de mensajería
  • Resumen

Ejercicios de laboratorio

  • Laboratorio 1. Conceptos de diseño basado en dominios
  • Laboratorio 2. Laboratorio de diseño basado en dominios estratégicos
  • Laboratorio 3. Proyecto de diseño basado en dominios