Requisitos previos
• Experiencia básica con Spring Boot: crear una API REST y trabajar con Spring Data JPA.
• Nociones básicas de Docker son útiles, pero se explica todo lo que se usa en el curso.
Descripción del curso
En este curso aprenderás a diseñar y construir arquitecturas event-driven con Apache Kafka y Spring Boot, comprendiendo cuándo utilizar eventos, cómo gestionar la comunicación entre componentes y qué decisiones arquitectónicas tienen sentido en proyectos reales.
Construiremos bistro, un backend de reservas de restaurantes que evolucionará desde un monolito modular hasta una arquitectura basada en eventos con Kafka, extrayendo un módulo a microservicio únicamente cuando exista una razón concreta para hacerlo.
¿Qué hace diferente este curso? No comenzarás directamente con microservicios ni trabajarás con ejemplos aislados. Evolucionarás una aplicación real paso a paso, comprendiendo por qué se toma cada decisión, qué problemas resuelve y qué complejidad introduce.
¿Cómo está estructurado el curso?
El curso sigue una evolución progresiva: comenzarás con una arquitectura modular y añadirás comunicación mediante eventos a medida que el proyecto lo necesite. Cada clase se apoya en la anterior para que comprendas cómo funciona cada componente y qué aporta al sistema.
- Monolito modular: Construcción de una base limpia y organizada para el backend de reservas.
- Arquitectura event-driven: Introducción de eventos para comunicar componentes y gestionar procesos asíncronos.
- Apache Kafka: Integración de productores, consumidores y los mecanismos de mensajería.
- Extracción de microservicios: Evolución de un módulo hacia un servicio independiente cuando exista una justificación arquitectónica.
- Spec-Driven Development: Uso de especificaciones como fuente de verdad y de herramientas de IA como asistentes bajo tu control.
Tecnologías que utilizarás:
- Java 21: Desarrollo del backend y la lógica de negocio.
- Spring Boot 4.1: Construcción y configuración de la aplicación.
- Spring Kafka 4: Integración de Kafka con el ecosistema Spring.
- Apache Kafka: Publicación, consumo y distribución de eventos.
- JPA y PostgreSQL: Persistencia y gestión de los datos.
- Flyway: Control de versiones y evolución del esquema de la base de datos.
- Docker Compose: Preparación del entorno de desarrollo y sus servicios.
Conceptos de arquitectura y mensajería que aprenderás:
- Modelado de eventos: Diseñar eventos y contratos de comunicación entre componentes.
- Topics y particiones: Comprender cómo se organizan y distribuyen los mensajes en Kafka.
- Offsets y consumer groups: Gestionar el progreso de los consumidores y el procesamiento de mensajes.
- Garantías de entrega: Entender las garantías de Kafka y cómo afectan al procesamiento de eventos.
- Mensajes duplicados: Comprender qué ocurre cuando un mensaje se procesa más de una vez y cómo diseñar para esa posibilidad.
- Eventos locales y distribuidos: Decidir cuándo un evento debe permanecer dentro del proceso y cuándo debe cruzar la red.
- Errores de negocio y errores técnicos: Distinguir ambos tipos de situaciones y definir cómo debe responder el sistema.
- Diseño evolutivo: Preparar una aplicación para futuras extracciones sin introducir complejidad innecesaria desde el principio.
Spec-Driven Development e inteligencia artificial
Además de construir la arquitectura, aprenderás a utilizar Spec-Driven Development para definir las especificaciones como fuente de verdad durante el desarrollo. También trabajarás con herramientas de IA como asistentes, manteniendo el control sobre las decisiones y la implementación.
El objetivo es que comprendas cómo combinar un proceso de desarrollo guiado por especificaciones con decisiones arquitectónicas fundamentadas, evitando diseñar de más o delegar decisiones importantes sin entender sus consecuencias.
¿Para quién es este curso?
- Desarrolladores junior e intermedios que ya conocen Java y los fundamentos de Spring.
- Programadores que quieren aprender a construir sistemas asíncronos y distribuidos.
- Desarrolladores interesados en comprender Apache Kafka más allá de la configuración básica.
- Quienes buscan aprender a evolucionar un monolito modular hacia una arquitectura distribuida sin introducir microservicios innecesarios.
- Personas interesadas en aplicar Spec-Driven Development y herramientas de IA a proyectos reales.
¿Cómo aprenderás?
Aprenderás construyendo un backend real que crece clase a clase. Cada componente se introduce para resolver una necesidad concreta, permitiéndote comprender no solo cómo implementarlo, sino también por qué existe, qué problema resuelve y qué consecuencias tiene para la arquitectura.
🚀 Al finalizar el curso podrás diseñar, construir y analizar arquitecturas event-driven con Apache Kafka y Spring Boot, y desarrollar el criterio necesario para decidir cuándo utilizar eventos y microservicios y cuándo mantener una solución modular más sencilla.