Course Outline
Day 1: Core Principles of Event-Driven Architecture in Go
- EDA Fundamentals
- Defining Event-Driven Architecture.
- Contrasting Monolithic, Microservices, and Event-Driven paradigms.
- Leveraging Go’s concurrency model and lightweight goroutines for optimal EDA performance.
- Key Concepts and Advantages
- Achieving decoupling, scalability, and resilience in enterprise environments.
- Clarifying the roles of Events, Producers, Consumers, and Event Brokers.
- Case studies and real-world instances of Go powering high-performance event systems.
- CAP Theorem and EDA Trade-offs
- Reviewing Consistency, Availability, and Partition Tolerance.
- Analyzing the effect of EDA on these system properties.
- Techniques for balancing consistency and availability in Go-centric systems.
Day 2: Events, Messages, and Interaction Patterns in Go
- Classifying Event Types
- Distinguishing between Domain Events and Integration Events.
- Managing Synchronous versus Asynchronous events within Go applications.
- Applying Messaging Patterns
- Implementing Publish-Subscribe (Pub/Sub) mechanisms in Go.
- Structuring and designing event payloads using JSON, Protocol Buffers, or Avro within Go.
- Executing Event Handling in Go
- Surveying widely used Go libraries and frameworks for messaging.
- Code demonstrations: dispatching and processing events through idiomatic Go patterns.
- Practical session: Constructing a basic event-driven service using Go.
Day 3: Messaging Systems and Event Brokers with Go
- Choosing and Connecting Event Brokers
- Reviewing leading brokers: Apache Kafka, RabbitMQ, and NATS.
- Evaluating use cases and best practices for Go-based implementations.
- Establishing Messaging Infrastructure
- Configuring Docker Compose for Kafka, RabbitMQ, or NATS.
- Setting up topics, exchanges, queues, and channels.
- Overview of available Go client libraries.
- Practical Workshop
- Developing a sample Go microservice that both emits and processes events.
- Connecting the service to the selected event broker.
- Debugging and verifying event flows.
Day 4: Deployment, Monitoring, and Advanced Go EDA Topics
- Releasing Go Event-Driven Apps on Kubernetes
- Preparing Go applications for production via containerization.
- Deploying Kafka (or alternative brokers) within Kubernetes clusters.
- Introduction to KEDA (Kubernetes Event-Driven Autoscaling) for scaling event consumers.
- Error Management and Monitoring
- Addressing event failures using defined strategies.
- Integrating observability features into Go services.
- Advanced Insights and Q&A
- Investigating Serverless Event-Driven Architectures with Go.
- Comparing Event Choreography and Orchestration: Use cases and design implications.
- Common pitfalls, experiential lessons, and industry best practices.
- Open Q&A session and collaborative troubleshooting.
Requirements
- Strong proficiency in Go (Golang), with specific experience in utilizing goroutines and channels.
- Foundational understanding of software architecture patterns, including monolithic and microservice structures.
- Working knowledge of Docker and Docker Compose.
- Basic comprehension of REST APIs and core networking principles.
- Practical experience with command-line interfaces and Git version control.
- Beneficial but not mandatory: prior interaction with Kubernetes and messaging systems such as Kafka, RabbitMQ, or NATS.
Intended Audience
- Go developers seeking to create scalable, event-centric applications.
- Software engineers shifting from synchronous monolithic or REST-based designs to asynchronous architectures.
- DevOps and cloud professionals 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.