Course Outline
Day 1: Foundations of Event-Driven Architecture in Go
- Introduction to EDA
- Defining Event-Driven Architecture
- Contrasting Monolithic, Microservices, and Event-Driven Systems
- How Go's concurrency model and lightweight goroutines suit EDA requirements
- Core Concepts & Benefits
- Achieving decoupling, scalability, and resilience in enterprise settings
- Identifying Events, Producers, Consumers, and Event Brokers
- Examining real-world cases and studies where Go drives high-performance event systems
- CAP Theorem & Trade-offs in EDA
- Reviewing Consistency, Availability, and Partition Tolerance
- Assessing the impact of EDA on these properties
- Strategies for balancing consistency and availability in Go-based systems
Day 2: Events, Messages, and Communication Patterns in Go
- Understanding Event Types
- Distinguishing Domain Events from Integration Events
- Synchronous versus Asynchronous events within Go applications
- Messaging Patterns in Practice
- Implementing Publish-Subscribe (Pub/Sub) in Go
- Designing and structuring event payloads using JSON, Protocol Buffers, or Avro within Go
- Implementing Event Handling in Go
- Surveying popular 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: Messaging Systems & Event Brokers with Go
- Selecting and Integrating Event Brokers
- Overview of prominent brokers: Apache Kafka, RabbitMQ, and NATS
- Comparing use cases and best practices for Go-based systems
- Setting Up Messaging Infrastructure
- Docker Compose configuration for Kafka, RabbitMQ, or NATS
- Configuring topics, exchanges, queues, and channels
- Overview of Go client libraries
- Practical Workshop
- Developing a sample Go microservice that generates and processes events
- Connecting the service with 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
- Containerizing Go applications for production environments
- Deploying Kafka (or alternative brokers) on Kubernetes clusters
- Introduction to KEDA (Kubernetes Event-Driven Autoscaling) for scaling event consumers
- Error Handling and Monitoring
- Managing event failures using effective strategies
- Implementing observability in Go services
- Advanced Topics & Q&A
- Exploring Serverless Event-Driven Architectures with Go
- Event Choreography versus Orchestration: Use cases and design considerations
- Common pitfalls, key lessons, and best practices
- Open Q&A session and interactive troubleshooting
Requirements
- Competence in Go (Golang), with specific experience using goroutines and channels
- Foundational comprehension of software architecture models, including monolithic and microservice structures
- Familiarity with Docker and Docker Compose
- Basic understanding of REST APIs and general networking principles
- Proficiency with command-line interfaces and Git version control
- Advantageous but not mandatory: prior experience with Kubernetes and messaging systems such as Kafka, RabbitMQ, or NATS
Intended Audience
- Go developers focused on creating scalable, event-driven applications
- Software engineers shifting from monolithic or REST-centric architectures to asynchronous systems
- DevOps and cloud professionals working with 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.