Despite the many advantages of Microservices there are a fair few drawbacks to distributed architecture including complexity, operational overhead, security, and performance. I have created a nine-phase guide to teach you how to solve these problems through the implementation of the most widely used technologies in the industry. By phase9 you will have fully deployed a microservices application to a Kubernetes GKE cluster, complete with distributed tracing and performance monitoring. Enjoy!
Author: Sophia Gavrila
This guide is broken into several modules for learning Microservices, Telemetry, Docker & Kubernetes:
-
Phase 1: Understanding the Cloned Spring Boot Microservices 🧠
-
Phase 2: How to Build, Deploy, and Scale Microservices using Docker 🐳
-
Phase 3: Configuration Management with Spring Cloud Config 🔑
-
Phase 4: Service Discovery & Registration with Eureka and Feign Client ☎️
-
Phase 5: Making Microservices Resilient with Circuit Breakers 💪
-
Phase 6: Routing & Cross Cutting Concerns with Spring Cloud Gateway ✂️
-
Phase 7: Distributed Tracing & Log Aggrigation with Spring Cloud Sleuth, Zipkin, and RabbitMQ 📨
-
Phase 8: Monitoring Metrics & Health with Prometheus and Grafana 📈
-
Phase 9: Automatic Self-Healing, Scaling & Deployments with Kubernetes 🐙
The Docker images for all services within this application (except for accounts
) were generated automatically using Cloud Native Buildpacks. The command used to generate them (in the root directory of each service) is:
mvn spring-boot:build-image -Dmaven.test.skip=true`
- Final
docker-compose
files are inphase9/accounts/docker-compose/<env>
- Final
docker-compose
files for monitoring are inphase9/accounts/docker-compose/monitoring
- Kubernetes manifests are in
phase9/accounts/kubernetes
Microservices are a form of service-oriented architecture style wherein applications are built as a collection of different smaller services rather than one whole app. Microservices architecture breaks apps down into their smallest components, independent from eachother so that they may be easily scaled and shipped.