Course Outline
Day 1: Foundations of Event-Driven Architecture in Go
- Introduction to EDA
- Defining the principles of Event-Driven Architecture
- Contrasting Monolithic, Microservices, and Event-Driven Systems
- Leveraging Go’s concurrency model and lightweight goroutines for effective EDA implementation
- Core Concepts & Benefits
- Achieving decoupling, scalability, and resilience in enterprise-grade systems
- Identifying Events, Producers, Consumers, and Event Brokers
- Examining real-world examples and case studies of high-performance event systems powered by Go
- CAP Theorem & Trade-offs in EDA
- Understanding the balance between Consistency, Availability, and Partition Tolerance
- Analyzing the impact of EDA on these system properties
- Developing strategies to balance consistency and availability in Go-based architectures
Day 2: Events, Messages, and Communication Patterns in Go
- Understanding Event Types
- Distinguishing between Domain Events and Integration Events
- Managing synchronous versus asynchronous events in Go applications
- Messaging Patterns in Practice
- Implementing Publish-Subscribe (Pub/Sub) patterns in Go
- Designing and structuring event payloads using JSON, Protocol Buffers, or Avro within Go projects
- Implementing Event Handling in Go
- Reviewing popular Go libraries and frameworks for messaging
- Examining code examples: dispatching and processing events using idiomatic Go patterns
- Practical session: Constructing a basic event-driven service in Go
Day 3: Messaging Systems & Event Brokers with Go
- Selecting and Integrating Event Brokers
- Overview of leading brokers: Apache Kafka, RabbitMQ, and NATS
- Evaluating use cases and best practices for integrating these systems with Go
- Setting Up Messaging Infrastructure
- Configuring Docker Compose environments for Kafka, RabbitMQ, or NATS
- Managing topics, exchanges, queues, and channels
- Surveying available Go client libraries
- Hands-On Workshop
- Developing a sample Go microservice capable of producing and consuming events
- Connecting the service to the selected event broker
- Debugging and validating event flows
Day 4: Deploying, 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
- Utilizing KEDA (Kubernetes Event-Driven Autoscaling) to manage event consumer scaling
- Error Handling and Monitoring
- Applying strategies to handle event failures effectively
- Establishing observability standards in Go services
- Advanced Topics & Q&A
- Investigating Serverless Event-Driven Architectures with Go
- Comparing Event Choreography and Orchestration: use cases and design implications
- Reviewing common pitfalls, key lessons, and industry best practices
- Facilitating an open Q&A session and interactive troubleshooting discussion
Requirements
- Strong proficiency in Go (Golang), with a solid understanding of goroutines and channels
- Foundational knowledge of software architecture models, including monoliths and microservices
- Familiarity with containerization tools, specifically Docker and Docker Compose
- Basic comprehension of REST APIs and core networking concepts
- Practical experience with command-line interfaces and Git version control
- Beneficial prior exposure to Kubernetes and messaging systems such as Kafka, RabbitMQ, or NATS
Target Audience
- Go developers focused on building scalable, event-driven applications
- Software engineers aiming to transition 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 implemented in 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.