Course Outline
Day 1: Establishing Foundations of Event-Driven Architecture in Go
- Introduction to EDA
- The definition and scope of Event-Driven Architecture
- Contrasting Monolithic, Microservices, and Event-Driven System models
- Leveraging Go’s concurrency model and lightweight goroutines for optimal EDA performance
- Core Concepts & Advantages
- Achieving decoupling, scalability, and resilience in enterprise-grade systems
- Defining key roles: Events, Producers, Consumers, and Event Brokers
- Examining real-world case studies where Go drives high-performance event systems
- CAP Theorem & EDA Trade-offs
- An overview of Consistency, Availability, and Partition Tolerance
- Assessing the impact of EDA on these fundamental properties
- Developing strategies to balance consistency and availability in Go-based solutions
Day 2: Managing Events, Messages, and Communication Patterns in Go
- Classification of Event Types
- Distinguishing between Domain Events and Integration Events
- Navigating Synchronous vs. Asynchronous events within Go applications
- Practical Messaging Patterns
- Implementing Publish-Subscribe (Pub/Sub) mechanisms in Go
- Designing and structuring event payloads using JSON, Protocol Buffers, or Avro within Go
- Executing Event Handling in Go
- Surveying leading Go libraries and frameworks for messaging
- Code demonstrations: dispatching and processing events using idiomatic Go patterns
- Practical session: Constructing a basic event-driven service in Go
Day 3: Integrating Messaging Systems & Event Brokers with Go
- Choosing and Integrating Event Brokers
- Overview of leading brokers: Apache Kafka, RabbitMQ, and NATS
- Comparing use cases and optimal practices for Go-based implementations
- Configuring Messaging Infrastructure
- Establishing Docker Compose setups for Kafka, RabbitMQ, or NATS
- Configuring essential components: topics, exchanges, queues, and channels
- Reviewing Go client library options
- Practical Workshop
- Developing a sample Go microservice capable of producing and consuming events
- Connecting the service with the selected event broker
- Debugging and validating event flow pathways
Day 4: Deployment, Monitoring, and Advanced Topics in Go EDA
- Deploying Go Event-Driven Applications on Kubernetes
- Containerizing Go applications for production-ready environments
- Deploying Kafka (or alternative brokers) on Kubernetes clusters
- Introduction to KEDA (Kubernetes Event-Driven Autoscaling) for optimizing event consumer scaling
- Error Handling and System Monitoring
- Addressing event failures through robust strategy implementation
- Integrating observability features into Go services
- Advanced Concepts & Q&A
- Investigating Serverless Event-Driven Architectures using Go
- Comparing Event Choreography vs. Orchestration: Use cases and design implications
- Discussing common pitfalls, key takeaways, and industry best practices
- Open Q&A session and interactive troubleshooting exercises
Requirements
- Strong proficiency in Go (Golang), with particular focus on utilizing goroutines and channels
- Foundational understanding of software architecture models, including monolithic and microservice structures
- Competence in using Docker and Docker Compose
- Basic familiarity with REST APIs and core networking principles
- Practical experience with command-line interfaces and Git version control
- Recommended prior exposure to Kubernetes and messaging systems such as Kafka, RabbitMQ, or NATS
Target Audience
- Go developers focused on creating scalable, event-driven applications
- Software engineers shifting from monolithic or REST-centric architectures toward asynchronous system designs
- DevOps and cloud engineers working with containerized or distributed microservices
- Technical architects and system designers investigating EDA patterns within the Go ecosystem
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.