Microservice architecture builds an application from small, independent processes that collaborate to deliver its features. Each service can be updated on its own deployment schedule. Because the services run separately and communicate over a network, the application is a distributed system—not simply a collection of small modules. section 1.5 section 1.6
The practical goal is to manage growth. Distinct service boundaries help keep responsibilities from becoming tangled as an application evolves. They also make it easier to scale, upgrade, replace, or reconnect parts of the system. Those benefits come at a cost: building and operating distributed services demands more skill, tooling, and automation than building a comparable monolith. section 1.4 section 1.10.5 section 1.10.3
Shape services around responsibilities, not a target line count:
- Give each service one well-defined area of responsibility; keep code within it focused on that area. section 1.14.2
- Minimize unnecessary connections and shared information between services so changes are less likely to ripple across the application. section 1.14.2
- Choose a size that fits the domain. Splitting services too finely increases communication and overall system complexity. section 1.14.5
A video-streaming application
A browser-facing gateway can work with separate services for video streaming, storage, and upload. Start with one locally running service, add services for local testing with Docker Compose, then deploy the application to a Kubernetes cluster. Docker images package the services; automated testing and a deployment pipeline support further changes. The design leaves room to replicate services and give them separate deployment schedules as demand grows. section 1.15 section 1.2
Microservices are a choice, not a requirement. A monolith may be simpler for a small or short-lived application. Real systems can also sit between the two: a monolith with helper services, or many small services alongside a few larger ones. Weigh the flexibility you need against the added distributed-system work. section 1.7 section 1.13 section 1.10.2













