Event Driven Architecture
25
People
2
Days
About Course
Course Objective
This workshop equips participants with a practical approach to evolve systems safely from a monolith
toward Event-Driven Architecture (EDA). Participants will learn how to reduce tight coupling, remove
long synchronous dependency chains, and design reliable asynchronous flows using proven patterns and
hands-on refactoring exercises.
Learning Outcomes
By the end of this workshop, participants will be able to:
1. Explain key principles of Event-Driven Architecture and identify suitable use cases.
2. Differentiate and apply Command, Event, and Query appropriately in system design.
3. Design modular boundaries and event flows that reduce synchronous dependencies.
4. Define event contracts, including naming conventions, payload structure, and versioning approach.
5. Apply CQRS and read model patterns to support fast reads and reduce runtime coupling.
6. Design for asynchronous reliability, including retries, idempotency, DLQ, and replay.
7. Compare choreography and orchestration and select an appropriate coordination approach.
8. Address distributed consistency challenges using Saga/compensation and the Outbox pattern.
9. Produce an incremental migration plan from monolith to modular monolith and event-driven
architecture.
Tools and Technology
This workshop equips participants with a practical approach to evolve systems safely from a monolith
toward Event-Driven Architecture (EDA). Participants will learn how to reduce tight coupling, remove
long synchronous dependency chains, and design reliable asynchronous flows using proven patterns and
hands-on refactoring exercises.
Learning Outcomes
By the end of this workshop, participants will be able to:
1. Explain key principles of Event-Driven Architecture and identify suitable use cases.
2. Differentiate and apply Command, Event, and Query appropriately in system design.
3. Design modular boundaries and event flows that reduce synchronous dependencies.
4. Define event contracts, including naming conventions, payload structure, and versioning approach.
5. Apply CQRS and read model patterns to support fast reads and reduce runtime coupling.
6. Design for asynchronous reliability, including retries, idempotency, DLQ, and replay.
7. Compare choreography and orchestration and select an appropriate coordination approach.
8. Address distributed consistency challenges using Saga/compensation and the Outbox pattern.
9. Produce an incremental migration plan from monolith to modular monolith and event-driven
architecture.
Tools and Technology
- Node.js
- PostgreSQL
- Apache Kafka
- RabbitMQ
- Kubernetes
Workshop Agenda
Day 1 — From Monolith to Modular Monolith
Topics
Day 1 — From Monolith to Modular Monolith
Topics
- Identifying bounded contexts
- Reducing tight coupling
- Internal domain events
- Command vs Event vs State
- Designing proper module boundaries
Hands-on Workshop
Refactor a monolith into a clean modular monolith with a clear internal event flow.
Day 2 — From Modular Monolith to Event-Driven System
Topics
Refactor a monolith into a clean modular monolith with a clear internal event flow.
Day 2 — From Modular Monolith to Event-Driven System
Topics
- When to extract a service
- Sync vs async trade-offs
- Kafka vs RabbitMQ
- Delivery guarantees and idempotency
- Saga and compensation
- Dual-write problem and Outbox pattern
Hands-on Workshop
Extract modules into services, introduce messaging, and handle duplicates, retries, and failure scenarios
Extract modules into services, introduce messaging, and handle duplicates, retries, and failure scenarios
Instructor
Twin Panitsombat
Distinguished Software Stylist
Prerequisite
- Backend development experience (Node.js preferred)
- Basic understanding of REST/HTTP and database fundamentals
- Familiarity with Docker and CLI tools is beneficial
Course Outline
Who this course is for ?
- Software Developers
- Tech Leads and Architects
- Product Owners and Business Analysts working across multiple systems
- Teams maintaining systems with increasing dependencies, latency, and operational complexity