This repository is not a production-ready microservices system. It is a practical learning example to understand how microservices work, how services communicate, and how to design boundaries with different languages.
This project shows a polyglot microservices approach:
- A Go gateway service for HTTP entry and request routing.
- A Go order service for order orchestration and persistence.
- A Python catalog service for catalog/business logic.
- gRPC + Protocol Buffers for internal service-to-service communication.
I intentionally used both Go and Python to show when teams may pick different languages per service responsibility.
- Go is a strong fit for gateway-style high-concurrency request handling as goroutines use all the cpu cores without any hesitation.
- Python is a strong fit for data/ML-friendly domains where recommendation logic can evolve faster so i used it in the catalog-service but for now i didn't use any ML model for books recommendations.
- In real systems, language choice should follow team strengths, runtime requirements, and long-term maintainability.
gRPC is used for internal service communication because it provides:
- Strong contracts via
.protofiles. - Type-safe generated clients/servers in multiple languages.
- Efficient binary transport for service-to-service calls.
If you want to know about the architecture and what tech stack is used where and why:
If you want to understand actual runtime flow of this repo, including all 4 routes:
If you want setup using Makefile:
If you want setup using Docker:
M.Bhavani Shankar Student at Anits Collage Vizag Andhra Pradesh India