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
Curso de Aplicaciones Java Modernas con Arquitecturas Avanzadas
Módulo 1: 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
Módulo 2: 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
Módulo 3: 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
Módulo 4: 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
Módulo 5: 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
Módulo 6: 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
Módulo 7: 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
Módulo 8: 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
- 30 de Septiembre de 2024, 7:30pm-9:00pm.
- 3 de Octubre de 2024, 7:30pm-9:00pm.
- 5 de Octubre de 2024, 10:00am-12:00pm.
- 8 de Octubre de 2024, 7:30pm-9:00pm.
- 10 de Octubre de 2024, 7:30pm-9:00pm.
- 12 de Octubre de 2024, 10:00am-12:00pm.
- 15 de Octubre de 2024, 7:30pm-9:00pm.
- 17 de Octubre de 2024, 7:30pm-9:00pm.
- 19 de Octubre de 2024, 10:00am-12:00pm.
- 22 de Octubre de 2024, 7:30pm-9:00pm.
- 24 de Octubre de 2024, 7:30pm-9:00pm.
- 26 de Octubre de 2024, 10:00am-12:00pm.
- 29 de Octubre de 2024, 7:30pm-9:00pm.
- 31 de Octubre de 2024, 7:30pm-9:00pm.
- 2 de Noviembre de 2024, 10:00am-12:00pm.
- 5 de Noviembre de 2024, 7:30pm-9:00pm.
- 7 de Noviembre de 2024, 7:30pm-9:00pm.
- 9 de Noviembre de 2024, 10:00am-12:00pm.
- 12 de Noviembre de 2024, 7:30pm-9:00pm.
- 14 de Noviembre de 2024, 7:30pm-9:00pm.
- 16 de Noviembre de 2024, 10:00am-12:00pm.
- 19 de Noviembre de 2024, 7:30pm-9:00pm.
- 21 de Noviembre de 2024, 7:30pm-9:00pm.
- 23 de Noviembre de 2024, 10:00am-12:00pm.
- 26 de Noviembre de 2024, 7:30pm-9:00pm.
- 28 de Noviembre de 2024, 7:30pm-9:00pm.
- 30 de Noviembre de 2024, 10:00am-12:00pm.
- 3 de Diciembre de 2024, 7:30pm-9:00pm.
- 5 de Diciembre de 2024, 7:30pm-9:00pm.
- 7 de Diciembre de 2024, 10:00am-12:00pm.
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