ESCARQJVILTDesarrollo de Software
ESCUELA - Ruta Profesional en Arquitectura de Software y Diseño de Dominios Complejos con Java
70 Presencial-Remoto €0.00
Descripción
Esta ruta formativa está diseñada para guiar a desarrolladores y arquitectos de software a través de un recorrido progresivo en diseño de software, buenas prácticas de arquitectura y patrones avanzados para sistemas distribuidos. Utilizando Java y Spring Boot como plataforma base, cada módulo profundiza en conceptos clave que habilitan la construcción de aplicaciones escalables, mantenibles y alineadas al dominio de negocio.
Cada bloque está diseñado para poder cursarse tambien de forma independiente (cursos ARQJAV01-02-03-04), lo que permite a los participantes elegir la formación más adecuada según su nivel de experiencia o necesidades específicas del proyecto en el que trabajan.
Cada bloque está diseñado para poder cursarse tambien de forma independiente (cursos ARQJAV01-02-03-04), lo que permite a los participantes elegir la formación más adecuada según su nivel de experiencia o necesidades específicas del proyecto en el que trabajan.
Objetivos
En un entorno donde la complejidad del software crece exponencialmente, esta Escuela ofrece un enfoque práctico y aplicable para abordar los desafíos reales de diseño y arquitectura de sistemas.
A través de ejercicios guiados, modelado de dominio, refactorizaciones estructurales y patrones distribuidos modernos, los participantes lograrán:
• Mejorar la calidad del código y la mantenibilidad del software
• Reducir la deuda técnica y facilitar la evolución de sistemas legados
• Aplicar arquitecturas robustas en entornos Java con Spring Boot
• Integrar patrones de diseño como DDD, CQRS y Event Sourcing
Esta propuesta formativa está orientada a generar un impacto real en la práctica profesional, y es ideal tanto para quienes desean fortalecer sus fundamentos como para equipos que buscan alinear sus aplicaciones con las mejores prácticas actuales.
A través de ejercicios guiados, modelado de dominio, refactorizaciones estructurales y patrones distribuidos modernos, los participantes lograrán:
• Mejorar la calidad del código y la mantenibilidad del software
• Reducir la deuda técnica y facilitar la evolución de sistemas legados
• Aplicar arquitecturas robustas en entornos Java con Spring Boot
• Integrar patrones de diseño como DDD, CQRS y Event Sourcing
Esta propuesta formativa está orientada a generar un impacto real en la práctica profesional, y es ideal tanto para quienes desean fortalecer sus fundamentos como para equipos que buscan alinear sus aplicaciones con las mejores prácticas actuales.
Audiencia
Curso dirigido a:
• Desarrolladores backend (junior a senior)
• Arquitectos de software
• Líderes técnicos y consultores IT
• Equipos de desarrollo de aplicaciones críticas o distribuidas
• Desarrolladores backend (junior a senior)
• Arquitectos de software
• Líderes técnicos y consultores IT
• Equipos de desarrollo de aplicaciones críticas o distribuidas
Prerrequisitos
• Conocimientos básicos de Java
• Familiaridad con programación orientada a objetos
• Experiencia básica con Spring Boot (no excluyente)
• Conocimientos básicos de herramientas como IDE, Git y Maven
• Familiaridad con programación orientada a objetos
• Experiencia básica con Spring Boot (no excluyente)
• Conocimientos básicos de herramientas como IDE, Git y Maven
Temario
**BLOQUE 1: DISEÑO DE SOFTWARE CON PRINCIPIOS SOLID Y ARQUITECTURA EN CAPAS - 10 horas**
**Módulo 1: Fundamentos del diseño orientado a objetos (1h)**
• Clases, objetos, encapsulamiento, abstracción
• Principios de diseño: cohesión, acoplamiento, legibilidad
• Anti-patrones comunes (God Object, Service Anémico)
**Módulo 2: Principios SOLID con Java (3h)**
• SRP: diseño de clases con responsabilidad única
• OCP: extensión sin modificación
• LSP: uso correcto de herencia e interfaces
• ISP: diseño de interfaces enfocadas
• DIP: inversión de dependencias con Spring
• Prácticas: identificación de violaciones y refactor en parejas
**Módulo 3: Arquitectura en capas con Spring Boot (3h)**
• Capas: presentación, aplicación, dominio, infraestructura
• Estructura de paquetes y convenciones de nombres
• Implementación de una funcionalidad tipo (API REST básica)
• Prácticas: codificación en parejas de una funcionalidad en 3 capas
**Módulo 4: Validación arquitectónica con ArchUnit y cierre (3h)**
• Introducción a ArchUnit
• Reglas básicas de separación de capas
• Aplicación completa en Spring Boot con reglas de arquitectura
• Análisis de problemas comunes en arquitecturas mal estructuradas
• Evaluación final: revisión crítica de una app base
**BLOQUE 2: DE LA ARQUITECTURA EN CAPAS A LA ARQUITECTURA HEXAGONAL - 20 horas**
**Módulo 1: Limitaciones de la arquitectura tradicional en capas (2h)**
• Análisis de una aplicación base en 3 capas
• Problemas típicos: acoplamiento, lógica dispersa, difícil testeo
• Necesidad de separar la lógica del dominio
**Módulo 2: Introducción a la Arquitectura Hexagonal (4h)**
• Principios: Ports & Adapters, inversión de dependencias
• Separación entre lógica de negocio y entradas/salidas
• Estructura de carpetas: dominio, aplicación, infraestructura, entrada
• Práctica: identificación de capas reales en la app base
**Módulo 3: Refactor hacia arquitectura Hexagonal (6h)**
• Casos de uso como núcleo de la aplicación
• Adaptadores primarios y secundarios
• Controladores como adaptadores de entrada
• Repositorios como adaptadores de salida
• Práctica guiada: refactor estructural de la aplicación base
**Módulo 4: Testing y validación de arquitectura (4h)**
• Testing centrado en el dominio y los casos de uso
• Dobles de prueba para adaptadores (Mocks, Stubs)
• ArchUnit: validación de dependencias entre capas
• Práctica: implementación de pruebas de arquitectura
**Módulo 5: Revisión, prácticas integradoras y cierre (4h)**
• Evaluación final: transformación completa de un módulo
• Presentación de soluciones por parejas
• Revisión crítica de decisiones arquitectónicas
• Preparación para evolución futura hacia DDD
**BLOQUE 3: CURSO PRÁCTICO DOMAIN-DRIVEN DESIGN (DDD) - 20 horas**
**Módulo 1: Introducción y fundamentos de DDD (2h)**
• Contexto histórico y filosófico de DDD
• Complejidad en software de negocio
• Tácticas vs estrategia: una visión global
**Módulo 2: Modelado táctico (6h)**
• Entidades, Value Objects y Agregados
• Reglas de negocio vs reglas de aplicación
• Repositorios de dominio vs adaptadores de persistencia
• Servicios de dominio vs servicios de aplicación
• Práctica: modelado y codificación de agregados con lógica rica
**Módulo 3: Modelado estratégico (4h)**
• Bounded Contexts
• Context Maps y relaciones entre contextos
• Ubiquitous Language en equipos mixtos
• Práctica: identificación y separación de contextos
**Módulo 4: Organización del código y validación de diseño (4h)**
• Separación de módulos por contexto
• Integración con arquitectura Hexagonal
• Validación con ArchUnit: dependencias y estructura
• Práctica: reestructuración modular de aplicación existente
**Módulo 5: Práctica integradora y revisión (4h)**
• Desarrollo de un contexto funcional completo (por parejas)
• Modelado colaborativo guiado por casos de negocio
• Presentación de decisiones de diseño
• Feedback grupal y cierre
**BLOQUE 4: CQRS y EVENT SOURCING CON KAFKA Y DEBEZIUM - 20 horas**
**Módulo 1: Introducción a CQRS y Event Sourcing (2h)**
• Limitaciones del CRUD tradicional en dominios complejos
• Principios de CQRS: separación de comandos y queries
• Fundamentos de Event Sourcing: persistencia basada en eventos
**Módulo 2: Modelado de comandos y eventos (4h)**
• Diseño de comandos y handlers en Spring Boot
• Eventos de dominio vs eventos de infraestructura
• Persistencia de eventos: Event Store y serialización
• Práctica: creación de un flujo básico de comandos/eventos
**Módulo 3: Apache Kafka como bus de eventos (4h)**
• Introducción a Kafka: tópicos, particiones, offset
• Producción y consumo de eventos de dominio con Spring Kafka
• Organización de eventos por tipo y contexto
• Práctica: orquestación de flujo de eventos entre bounded contexts
**Módulo 4: Integración con Debezium y proyecciones de lectura (4h)**
• Qué es Debezium y cómo captura cambios (CDC)
• Creación de proyecciones (read models) reactivas a cambios
• Estrategias de sincronización eventual y tolerancia a fallos
• Práctica: implementación de vista de lectura con cambios detectados por Debezium
**Módulo 5: Arquitectura completa y validación (4h)**
• Integración total: CQRS + ES + Kafka + Debezium en arquitectura hexagonal
• Validaciones de estructura con ArchUnit
• Pruebas de resiliencia y entrega final por equipos
• Evaluación final: presentación y análisis de decisiones
**Módulo 1: Fundamentos del diseño orientado a objetos (1h)**
• Clases, objetos, encapsulamiento, abstracción
• Principios de diseño: cohesión, acoplamiento, legibilidad
• Anti-patrones comunes (God Object, Service Anémico)
**Módulo 2: Principios SOLID con Java (3h)**
• SRP: diseño de clases con responsabilidad única
• OCP: extensión sin modificación
• LSP: uso correcto de herencia e interfaces
• ISP: diseño de interfaces enfocadas
• DIP: inversión de dependencias con Spring
• Prácticas: identificación de violaciones y refactor en parejas
**Módulo 3: Arquitectura en capas con Spring Boot (3h)**
• Capas: presentación, aplicación, dominio, infraestructura
• Estructura de paquetes y convenciones de nombres
• Implementación de una funcionalidad tipo (API REST básica)
• Prácticas: codificación en parejas de una funcionalidad en 3 capas
**Módulo 4: Validación arquitectónica con ArchUnit y cierre (3h)**
• Introducción a ArchUnit
• Reglas básicas de separación de capas
• Aplicación completa en Spring Boot con reglas de arquitectura
• Análisis de problemas comunes en arquitecturas mal estructuradas
• Evaluación final: revisión crítica de una app base
**BLOQUE 2: DE LA ARQUITECTURA EN CAPAS A LA ARQUITECTURA HEXAGONAL - 20 horas**
**Módulo 1: Limitaciones de la arquitectura tradicional en capas (2h)**
• Análisis de una aplicación base en 3 capas
• Problemas típicos: acoplamiento, lógica dispersa, difícil testeo
• Necesidad de separar la lógica del dominio
**Módulo 2: Introducción a la Arquitectura Hexagonal (4h)**
• Principios: Ports & Adapters, inversión de dependencias
• Separación entre lógica de negocio y entradas/salidas
• Estructura de carpetas: dominio, aplicación, infraestructura, entrada
• Práctica: identificación de capas reales en la app base
**Módulo 3: Refactor hacia arquitectura Hexagonal (6h)**
• Casos de uso como núcleo de la aplicación
• Adaptadores primarios y secundarios
• Controladores como adaptadores de entrada
• Repositorios como adaptadores de salida
• Práctica guiada: refactor estructural de la aplicación base
**Módulo 4: Testing y validación de arquitectura (4h)**
• Testing centrado en el dominio y los casos de uso
• Dobles de prueba para adaptadores (Mocks, Stubs)
• ArchUnit: validación de dependencias entre capas
• Práctica: implementación de pruebas de arquitectura
**Módulo 5: Revisión, prácticas integradoras y cierre (4h)**
• Evaluación final: transformación completa de un módulo
• Presentación de soluciones por parejas
• Revisión crítica de decisiones arquitectónicas
• Preparación para evolución futura hacia DDD
**BLOQUE 3: CURSO PRÁCTICO DOMAIN-DRIVEN DESIGN (DDD) - 20 horas**
**Módulo 1: Introducción y fundamentos de DDD (2h)**
• Contexto histórico y filosófico de DDD
• Complejidad en software de negocio
• Tácticas vs estrategia: una visión global
**Módulo 2: Modelado táctico (6h)**
• Entidades, Value Objects y Agregados
• Reglas de negocio vs reglas de aplicación
• Repositorios de dominio vs adaptadores de persistencia
• Servicios de dominio vs servicios de aplicación
• Práctica: modelado y codificación de agregados con lógica rica
**Módulo 3: Modelado estratégico (4h)**
• Bounded Contexts
• Context Maps y relaciones entre contextos
• Ubiquitous Language en equipos mixtos
• Práctica: identificación y separación de contextos
**Módulo 4: Organización del código y validación de diseño (4h)**
• Separación de módulos por contexto
• Integración con arquitectura Hexagonal
• Validación con ArchUnit: dependencias y estructura
• Práctica: reestructuración modular de aplicación existente
**Módulo 5: Práctica integradora y revisión (4h)**
• Desarrollo de un contexto funcional completo (por parejas)
• Modelado colaborativo guiado por casos de negocio
• Presentación de decisiones de diseño
• Feedback grupal y cierre
**BLOQUE 4: CQRS y EVENT SOURCING CON KAFKA Y DEBEZIUM - 20 horas**
**Módulo 1: Introducción a CQRS y Event Sourcing (2h)**
• Limitaciones del CRUD tradicional en dominios complejos
• Principios de CQRS: separación de comandos y queries
• Fundamentos de Event Sourcing: persistencia basada en eventos
**Módulo 2: Modelado de comandos y eventos (4h)**
• Diseño de comandos y handlers en Spring Boot
• Eventos de dominio vs eventos de infraestructura
• Persistencia de eventos: Event Store y serialización
• Práctica: creación de un flujo básico de comandos/eventos
**Módulo 3: Apache Kafka como bus de eventos (4h)**
• Introducción a Kafka: tópicos, particiones, offset
• Producción y consumo de eventos de dominio con Spring Kafka
• Organización de eventos por tipo y contexto
• Práctica: orquestación de flujo de eventos entre bounded contexts
**Módulo 4: Integración con Debezium y proyecciones de lectura (4h)**
• Qué es Debezium y cómo captura cambios (CDC)
• Creación de proyecciones (read models) reactivas a cambios
• Estrategias de sincronización eventual y tolerancia a fallos
• Práctica: implementación de vista de lectura con cambios detectados por Debezium
**Módulo 5: Arquitectura completa y validación (4h)**
• Integración total: CQRS + ES + Kafka + Debezium en arquitectura hexagonal
• Validaciones de estructura con ArchUnit
• Pruebas de resiliencia y entrega final por equipos
• Evaluación final: presentación y análisis de decisiones