Part 1: Building Microservices
🧰 Overview of Tech Choices for Building Microservices
When building microservices, we will have several technology options based on team’s skills, business needs, and project scale.
🖥️ Backend Frameworks
| Technology |
Language |
Best For |
| .NET Core / ASP.NET Core |
C# |
Enterprise apps, Windows/Linux support, high performance |
| Spring Boot |
Java |
Enterprise Java apps, full ecosystem support |
| Node.js + Express |
JavaScript |
Lightweight services, high I/O apps, fast dev |
| Python + FastAPI / Flask |
Python |
AI/ML integration, quick prototyping |
| Go (Golang) |
Go |
High-performance, scalable systems |
| Rust / Actix |
Rust |
Systems requiring speed and safety (less common) |
🐳 Containerization & Orchestration
| Tool |
Purpose |
| Docker |
Containerize microservices for consistent environments |
| Docker Compose |
Run multiple services locally for development |
| Kubernetes (K8s) |
Manage and scale containers in production |
| Helm |
Package and deploy Kubernetes applications |
| Minikube / Kind |
Run a local Kubernetes cluster for dev/testing |
| Tool |
Purpose |
| Visual Studio / VS Code |
.NET, JS, Python, general development |
| IntelliJ IDEA / STS |
Java and Spring Boot |
| Postman / Insomnia |
API testing |
| GitHub Desktop / Git CLI |
Version control & collaboration |
| Docker Desktop |
Run containers locally |
| Azure CLI / AWS CLI / kubectl |
Cloud & K8s management |
🔧 DevOps & CI/CD
| Tool |
Purpose |
| GitHub Actions |
CI/CD automation for GitHub repos |
| Azure DevOps |
CI/CD pipelines, boards, repos, artifacts |
| Jenkins/ Teamscity |
Customizable open-source CI/CD tool |
| Octopus Deploy |
Deployment automation |
🗃️ Databases & Messaging
| Category |
Examples |
Usage |
| SQL DBs |
SQL Server, PostgreSQL, MySQL |
Relational data, transactions |
| NoSQL DBs |
MongoDB, Cassandra, Redis |
Flexible schema, caching, high-speed |
| Messaging |
RabbitMQ, Kafka, Azure Service Bus |
Asynchronous communication, events |
| Tool |
Purpose |
| OpenAPI / Swagger |
Define and document REST APIs |
| GraphQL |
Flexible querying for frontend |
| gRPC |
High-performance binary RPC communication |
| Pact / Postman |
Contract and API testing |
🌐 Monitoring & Logging
| Tool |
Purpose |
| Prometheus + Grafana |
Metrics collection and dashboards |
| ELK Stack (Elastic, Logstash, Kibana) |
Centralized logging |
| Jaeger / Zipkin |
Distributed tracing in microservices |
| Application Insights (Azure) |
Logs, metrics, traces |