Microservices
ScalingMicroservices is an architectural style where an application is composed of small, independently deployable services, each running in its own process and communicating via lightweight protocols like HTTP or messaging.
The microservices architecture decomposes a monolithic application into a collection of loosely coupled services, each responsible for a specific business capability. Each service can be developed, deployed, and scaled independently by different teams.
Benefits include independent deployability (deploy one service without redeploying the entire system), technology diversity (each service can use the best language/framework for its task), fault isolation (a failure in one service doesn't bring down the entire system), and organizational alignment (teams own specific services end-to-end).
Challenges include distributed system complexity (network calls replace function calls), data consistency across services (no shared database), operational overhead (monitoring, logging, tracing across many services), and the need for service discovery, API gateways, and circuit breakers.
The rule of thumb: start with a monolith and extract microservices as the system and team grow. Premature decomposition into microservices adds complexity without proportional benefit.
Related Terms
Ready to design?
Practice using microservices in a real system design on Supaboard's interactive whiteboard.
Browse Challenges