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.
- 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.
Enhanced Fault Tolerance
- If one service fails, it does not necessarily cause the entire app to crash.
Technological Flexibility