Event-Driven Architecture and Data Streaming
Building Modern Distributed Systems with Apache Kafka and Spring Boot
This hands-on workshop demonstrates practical patterns for building event-driven systems. Learn CQRS, event sourcing, asynchronous messaging, and real-time data streaming through a complete Spring Boot application that simulates an e-commerce order processing system.
Omar Bautista
Software Engineer
As a Software Engineer, I am driven by my passion for technology and constantly seek opportunities to expand my skillset. Currently, my expertise encompasses a range of technologies including Java, Spring, Spring Boot, Groovy, Grails, Hibernate, Jenkins, Docker, Unit and Integration Testing, Spock Framework, and Relational Databases, among others. In addition to my technical proficiency, I have gained valuable experience collaborating with both remote and on-site teams. I strongly believe in the power of knowledge sharing and actively engage in exchanging insights with my peers, fostering a culture of continuous self-improvement.
What We'll Learn During This Session
Building systems around immutable event logs that capture state changes as a sequence of facts.
Separating read and write operations for scalability and maintainability using CommandService and QueryService patterns.
Topics, producers, consumers, and message-driven architecture for distributed systems.
Spring Kafka, REST APIs, JPA, and multi-module project structure for production-ready applications.
When to use async messaging vs synchronous REST APIs and how to design hybrid systems effectively.
E-commerce order processing with dual communication patterns demonstrating practical implementation.
JSON vs Avro with Confluent Schema Registry for schema evolution and compatibility management.
BDD-style testing with Spock Framework for event-driven systems and CQRS patterns.
Workshop Objectives
Learn core patterns like event sourcing, CQRS, and message-driven communication in distributed systems.
Implement Spring Boot + Kafka applications with proper service separation, testing, and deployment strategies.
Know when to use Kafka vs REST and how to design hybrid systems that leverage both patterns effectively.
Work with a real multi-module application simulating order processing workflows with CQRS pattern.
Workshop Sections
Learn how to store state as immutable events and derive current state through event replay.
2Separate commands from queries with dedicated service layers for optimal scalability.
3Understand topics, producers, consumers, partitions, and the Kafka distributed architecture.
4Configure Spring Kafka producers and consumers with proper error handling and retry logic.
5Learn when to use REST vs Kafka and design hybrid systems with both patterns.
6Explore the multi-module Maven structure with common, backend, and frontend modules.
7Follow a complete e-commerce order workflow from cart to fulfillment with Kafka.
8Migrate from JSON to Avro serialization with schema evolution strategies.
9Write BDD-style tests with Spock Framework for services and Kafka producers.
10Configure Docker Compose for Kafka, Zookeeper, and MySQL with health checks.
11Production considerations for event-driven systems including monitoring and schema evolution.
Technology Stack
Backend
Spring Boot 4.0.6 • Java 25 • Spring Kafka • MySQL 8.x • Spring Data JPA
Frontend
Thymeleaf • Tailwind CSS • JavaScript
Infrastructure
Apache Kafka 3.x • Zookeeper • Docker Compose • Maven 3.x
All open source • Production ready • Multi-module Maven structure