
Arquitectura Moderna de Servicios en Java
Descripción
Este curso está diseñado para proporcionar una comprensión profunda y práctica de las arquitecturas modernas en el desarrollo de aplicaciones Java. A lo largo del curso, exploraremos cómo implementar y combinar enfoques avanzados como Clean Architecture, Event Driven Architecture (EDA), Microservicios, Arquitectura Hexagonal y Domain Driven Design (DDD) para crear aplicaciones escalables, robustas y mantenibles. El curso está estructurado en módulos que combinan teoría, práctica y casos de estudio para ofrecer una formación integral.
Este curso será impartido con clases en vivo y en linea, las clases serán grabadas y el acceso al contenido y material será perpetuo para cada asistente.


Clases en vivo y en linea
Las clases serán grabadas con acceso perpetuo.
Puntos Clave
-
Principios de Clean Architecture: Cómo organizar aplicaciones en capas independientes, gestionar dependencias y aplicar los principios de separación de preocupaciones para lograr un código más mantenible y flexible.
-
Implementación de Event Driven Architecture (EDA): Cómo diseñar sistemas que se comunican mediante eventos, utilizando tecnologías como Apache Kafka y RabbitMQ para mejorar la escalabilidad y la flexibilidad de las aplicaciones.
-
Desarrollo de Microservicios en Java: Cómo construir, desplegar y gestionar microservicios, abordando la comunicación entre servicios, la gestión de datos y las técnicas para superar los desafíos comunes en un entorno de microservicios.
-
Aplicación de la Arquitectura Hexagonal: Cómo separar la lógica de negocio de las interfaces externas mediante puertos y adaptadores, y cómo integrar esta arquitectura con Clean Architecture y microservicios.
-
Modelado del Dominio con Domain Driven Design (DDD): Cómo utilizar DDD para crear modelos de dominio ricos y efectivos, definir entidades, agregados y repositorios, y gestionar eventos de dominio para una mejor alineación con los requisitos del negocio.
-
Principios SOLID en el Desarrollo de Software: Cómo aplicar los principios SOLID para diseñar sistemas de software robustos y flexibles, mejorando la calidad del código y facilitando el mantenimiento.
-
Uso de Tecnologías y Herramientas Modernas: Cómo integrar y utilizar tecnologías emergentes y herramientas innovadoras en el desarrollo Java, como librerías para EDA y frameworks para microservicios.
-
Prácticas de Testing en Arquitecturas Modernas: Estrategias para realizar pruebas efectivas en sistemas que utilizan Clean Architecture, EDA, microservicios y Arquitectura Hexagonal, asegurando la calidad y estabilidad del software.
-
Gestión de Configuraciones y Despliegue: Cómo manejar la configuración de aplicaciones en un entorno de microservicios, y las mejores prácticas para el despliegue y la integración continua.
-
Casos de Estudio y Aplicación Práctica: Cómo aplicar los conceptos aprendidos en proyectos reales, mediante el análisis de casos de estudio y el desarrollo de proyectos prácticos que refuercen el conocimiento adquirido.
Estos puntos cubrirán los aspectos fundamentales y avanzados del desarrollo de aplicaciones Java utilizando arquitecturas modernas, proporcionando a los estudiantes las habilidades necesarias para construir sistemas efectivos y sostenibles.
Temario
Arquitectura Moderna de Servicios en Java
Introducción a Java y el Desarrollo de Software Moderno
-
Fundamentos de Java
- Historia y evolución
- Características y ventajas de Java 17 hasta Java 23
- Configuración del entorno de desarrollo
-
Principios Básicos de Desarrollo de Software
- Principios SOLID
- Patrones de diseño comunes
- Introducción a los conceptos de arquitectura de software
Clean Architecture
-
Conceptos y Principios de Clean Architecture
- Definición y objetivos
- Organización en capas y gestión de dependencias
- Beneficios y desafíos
-
Implementación en Java
- Estructuración de paquetes y módulos
- Creación de interfaces y manejo de dependencias
- Ejemplos prácticos y mejores prácticas
-
Testing y Mantenimiento
- Estrategias de testing para Clean Architecture
- Técnicas de mantenimiento y evolución del sistema
Event Driven Architecture (EDA)
-
Introducción a Event Driven Architecture
- Principios y beneficios
- Comparación con arquitecturas tradicionales
-
Componentes de EDA
- Eventos, productores y consumidores
- Brokers de eventos y sistemas de mensajería
- Integración con aplicaciones Java
-
Implementación Práctica
- Uso de tecnologías como Apache Kafka y RabbitMQ
- Ejemplos y patrones comunes en EDA
Microservicios
-
Fundamentos de Microservicios
- Definición y características
- Ventajas frente a arquitecturas monolíticas
-
Diseño y Desarrollo en Java
- Creación y gestión de microservicios
- Comunicación entre microservicios (REST, gRPC)
- Gestión de datos y transacciones
-
Desafíos y Soluciones
- Configuración y despliegue
- Monitoreo y logging
- Seguridad y autenticación
Arquitectura Hexagonal
-
Principios de la Arquitectura Hexagonal
- Conceptos y beneficios
- Comparación con otras arquitecturas
-
Implementación en Java
- Definición de puertos y adaptadores
- Ejemplos prácticos y casos de uso
- Integración con Clean Architecture y Microservicios
-
Pruebas y Validación
- Estrategias de prueba para la Arquitectura Hexagonal
Domain Driven Design (DDD)
-
Introducción a Domain Driven Design
- Conceptos clave y beneficios
- Modelado del dominio y la importancia de los bounded contexts
-
Implementación de DDD en Java
- Creación de entidades, agregados y repositorios
- Gestión de eventos de dominio y servicios de dominio
- Integración con Clean Architecture y Arquitectura Hexagonal
-
Ejemplos Prácticos y Casos de Estudio
- Aplicación de DDD en sistemas reales
- Estrategias para la implementación efectiva
Casos de Estudio y Proyectos Prácticos
-
Análisis de Casos Reales
- Revisión de aplicaciones que utilizan Clean Architecture, EDA, Microservicios, Arquitectura Hexagonal y DDD
-
Desarrollo de Proyectos
- Planificación y diseño de proyectos
- Implementación y despliegue de soluciones
- Revisión, retroalimentación y mejoras
Tendencias y Futuro del Desarrollo Java
-
Nuevas Tecnologías y Herramientas
- Innovaciones emergentes en el desarrollo de Java
- Herramientas y frameworks avanzados
-
Preparación para el Futuro
- Adaptación a nuevas tecnologías y arquitecturas
- Estrategias para enfrentar desafíos futuros
Este curso ofrece una formación completa en el diseño y desarrollo de aplicaciones Java utilizando arquitecturas modernas y enfoques avanzados, proporcionando a los participantes las habilidades necesarias para construir sistemas robustos y escalables.
Fechas
El curso durará 10 semanas con un total de 50 horas efectivas, con 3 sesiones a la semana de 5 horas
- 18 de febrero de 2025, 7:30p.m.-9:00p.m.
- 20 de febrero de 2025, 7:30p.m.-9:00p.m.
- 22 de febrero de 2025, 9:00a.m.-11:00a.m.
- 25 de febrero de 2025, 7:30p.m.-9:00p.m.
- 27 de febrero de 2025, 7:30p.m.-9:00p.m.
- 01 de marzo de 2025, 9:00a.m.-11:00a.m.
- 04 de marzo de 2025, 7:30p.m.-9:00p.m.
- 06 de marzo de 2025, 7:30p.m.-9:00p.m.
- 08 de marzo de 2025, 9:00a.m.-11:00a.m.
- 11 de marzo de 2025, 7:30p.m.-9:00p.m.
- 13 de marzo de 2025, 7:30p.m.-9:00p.m.
- 15 de marzo de 2025, 9:00a.m.-11:00a.m.
- 18 de marzo de 2025, 7:30p.m.-9:00p.m.
- 20 de marzo de 2025, 7:30p.m.-9:00p.m.
- 22 de marzo de 2025, 9:00a.m.-11:00a.m.
- 25 de marzo de 2025, 7:30p.m.-9:00p.m.
- 27 de marzo de 2025, 7:30p.m.-9:00p.m.
- 29 de marzo de 2025, 9:00a.m.-11:00a.m.
- 01 de abril de 2025, 7:30p.m.-9:00p.m.
- 03 de abril de 2025, 7:30p.m.-9:00p.m.
- 05 de abril de 2025, 9:00a.m.-11:00a.m.
- 08 de abril de 2025, 7:30p.m.-9:00p.m.
- 10 de abril de 2025, 7:30p.m.-9:00p.m.
- 12 de abril de 2025, 9:00a.m.-11:00a.m.
- 22 de abril de 2025, 7:30p.m.-9:00p.m.
- 24 de abril de 2025, 7:30p.m.-9:00p.m.
- 26 de abril de 2025, 9:00a.m.-11:00a.m.
- 06 de mayo de 2025, 7:30p.m.-9:00p.m.
- 08 de mayo de 2025, 7:30p.m.-9:00p.m.
- 10 de mayo de 2025, 9:00a.m.-11:00a.m.
Requisitos
Conocimientos:
- Experiencia en programación con Java.
- Experiencia en desarrollo de servicios web.
Equipo de computo:
- Al menos 8GB de RAM (16GB deseable)
- Linux con kernel 3.10 o superior (Deseable Ubuntu, CentOS)
- MacOS
- Puede ser usado Windows, pero revisar requerimientos detallados en https://docs.docker.com/desktop/install/windows-install/#system-requirements