Course Outline
Day 1: Fundamentals of Event-Driven Architecture in Go
- Introduction to EDA
- Defining Event-Driven Architecture.
- Contrasting Monolithic, Microservices, and Event-Driven Systems.
- Why Go’s concurrency model and lightweight goroutines are ideally suited for EDA.
- Core Concepts and Advantages
- Understanding decoupling, scalability, and resilience in enterprise environments.
- Defining key roles: Events, Producers, Consumers, and Event Brokers.
- Examining real-world case studies where Go drives high-performance event systems.
- CAP Theorem and EDA Trade-offs
- Overview of Consistency, Availability, and Partition Tolerance.
- How EDA impacts these architectural properties.
- Strategies for balancing consistency and availability in Go-based systems.
Day 2: Events, Messages, and Communication Patterns in Go
- Understanding Event Types
- Distinguishing between Domain Events and Integration Events.
- Managing Synchronous vs. Asynchronous events in Go applications.
- Practical Messaging Patterns
- Implementing Publish-Subscribe (Pub/Sub) in Go.
- Designing event payloads using JSON, Protocol Buffers, or Avro within Go applications.
- Implementing Event Handling in Go
- Survey of popular Go libraries and frameworks for messaging.
- Code demonstrations: dispatching and processing events via idiomatic Go patterns.
- Practical session: Constructing a basic event-driven service in Go.
Day 3: Messaging Systems and Event Brokers with Go
- Selecting and Integrating Event Brokers
- Overview of leading brokers: Apache Kafka, RabbitMQ, and NATS.
- Comparing use cases and best practices for Go-based systems.
- Establishing Messaging Infrastructure
- Configuring Docker Compose for Kafka, RabbitMQ, or NATS.
- Setting up topics, exchanges, queues, and channels.
- Review of Go client libraries.
- Practical Workshop
- Developing a Go microservice capable of producing and consuming events.
- Connecting the service to the selected event broker.
- Techniques for debugging and testing event flows.
Day 4: Deployment, Monitoring, and Advanced Topics in Go EDA
- Deploying Go Event-Driven Applications on Kubernetes
- Preparing Go applications for production via containerization.
- Deploying Kafka (or alternative brokers) on Kubernetes clusters.
- Introduction to KEDA (Kubernetes Event-Driven Autoscaling) for consumer scaling.
- Error Handling and Monitoring
- Managing event failures using robust strategies.
- Implementing observability within Go services.
- Advanced Topics and Q&A
- Investigating Serverless Event-Driven Architectures with Go.
- Event Choreography vs. Orchestration: Analyzing use cases and design implications.
- Identifying common pitfalls, learning from lessons, and applying best practices.
- Open Q&A session for interactive troubleshooting.
Requirements
- Strong command of Go (Golang), with specific expertise in goroutines and channels.
- Foundational knowledge of software architecture models, including monoliths and microservices.
- Working familiarity with Docker and Docker Compose.
- Basic understanding of REST APIs and core networking principles.
- Practical experience with command-line utilities and Git version control.
- Prior exposure to Kubernetes and messaging systems like Kafka, RabbitMQ, or NATS is beneficial but not mandatory.
Target Audience
- Go developers tasked with building scalable, event-driven applications.
- Software engineers migrating from monolithic or synchronous REST-based architectures to asynchronous systems.
- DevOps and cloud engineers managing containerized or distributed microservices.
- Technical architects and system designers investigating EDA patterns through the lens of Go.
Testimonials (7)
we write some code in GO and we learn some stuff regarding EDA like events, when and how.
Alin
Course - Event Driven Architecture Custom
It was an interactive course, no time to sleep :)). Also was nice to work in teams and then to debate according to each result.
Alina
Course - Event Driven Architecture Custom
I enjoyed most the discussions and the examples provided so we could reach by ourselves to the conclusions he wanted to share with us. I liked the pace, the english, the patience, that even if we did not came with the best answer he would not say it is wrong, but came with examples of what could be better.
Simona
Course - Event Driven Architecture Custom
The open discussions and going from understanding the problems/reasons (the `why`) to `EDA`.
Constantin
Course - Event Driven Architecture Custom
the approach of presenting things heavily based on interaction and examples
Virgil
Course - Event Driven Architecture Custom
The interactive nature of the course The self-discovery learning approach where you found answers yourselves The practical focus with real-life examples that made concepts more relatable
Roxana Sandu
Course - Event Driven Architecture Custom
Very interactive. The trainer was very knowledgeable and patient.