
In this workshop, you will learn how to systematically and effectively decompose a monolithic application into a microservices architecture. We will build an e-commerce system consisting of 5 microservices (Gateway, Kitchen, Order, Payment, Stock) using modern technologies such as Golang, MongoDB, Consul, RabbitMQ, Jaeger, Docker, Kubernetes and Kyverno.
You will practice implementing everything from API management, service discovery, monitoring to governance framework, while automating CI/CD processes with GitHub Actions and performance testing with Grafana K6.
Microservices Architecture is a software development approach where an application is decomposed into multiple small independent services, each running in its own process and communicating via APIs. Unlike monoliths, microservices enable independent scaling, separate deployment and technology diversity for each service.
Transitioning from monolith to microservices is not always the optimal choice. You need to carefully consider team size, complexity, operational overhead and business requirements before deciding on migration.
API Gateway acts as a single entry point for all client requests, handling routing, authentication, rate limiting and response aggregation. In this workshop, we use Golang to build an API Gateway with load balancing and circuit breaker capabilities.
Consul provides service registry and health checking for microservices. Instead of hardcoding service addresses, services will register themselves with Consul and discover each other through DNS or HTTP API.
Jaeger is used to trace requests across multiple services, helping identify performance bottlenecks and debugging in distributed environments. Combined with structured logging and metrics collection to provide comprehensive system visibility.
Kyverno is a policy engine for Kubernetes, allowing you to define and enforce governance rules such as security policies, resource quotas, naming conventions and compliance requirements through YAML policies.
RabbitMQ is used for event-driven communication between services. We will implement messaging patterns such as publish/subscribe, request/reply and saga pattern to ensure data consistency.
Grafana K6 is used to perform load testing, stress testing and capacity planning. The workshop will guide you through writing test scripts, analyzing performance metrics and optimization strategies.