Introduction
- An architectural style where the app is built as a collection of small, independent services.
- Each service runs its own process and communicates with others via HTTP/REST or messaging queues.

Reasons for adopting microservices
Improved Scalability & Resource Efficiency
- Individual components can be scaled independently based on demand.
- No need only ONE part is heavy, but scale EVERYTHING
- Scaling the entire app can optimizes infrastructure costs.
Faster Development and Deployment
- Smaller, specialized teams can develop, test, and deploy each services independently.
- Accelerates time-to-market and enabling continuous delivery.
- If many developers working on same codebase, merge conflicts, blocking each other
- No need small change, deploy entire system
Enhanced Fault Tolerance
- If one service fails, it does not necessarily cause the entire app to crash.