liveBook · Manning

Distributed system

As explained in Bootstrapping Microservices, Second Edition: With Docker, Kubernetes, GitHub Actions, and Terraform

An application architecture in which components execute as separate processes or services that communicate across a network.

A distributed system runs an application as separate services that communicate over a network. Microservices are one way to organize those services, not a requirement that every service be tiny. Compared with a monolith, this structure can make a growing application easier to divide across teams and scale, but it takes more work to build and run. section 1.0 section 1.12 section 1.1

The practical gains come from treating services separately. A heavily used service can receive more resources without scaling everything else. Updating one service can limit deployment risk and make a rollback smaller, though a faulty update can still break part of the application. section 1.9

Distribution also introduces new techniques, protocols, and tradeoffs. Do not assume that splitting an application automatically makes it simpler: building, operating, and understanding the whole system are difficult. Weigh the benefits against those costs before choosing how far to split it. section 1.1 section 1.10.2

Stop when the split stops paying off

A conversion from a monolith might leave a smaller monolith alongside several services. Early splits can bring substantial value; continuing toward ever-smaller services may bring diminishing returns until the costs outweigh the gains. section 12.7.2

Figure 12.28 A timeline of conversion to microservices. In the early days, you get a high ROI. As you proceed, however, you’ll get diminishing ROI, and it might not make sense to go all the way to the developer’s utopia of microservices.

The conversion timeline shows why reaching a useful distributed architecture need not mean splitting every component into a microservice. section 12.7.2

How Bootstrapping Microservices, Second Edition: With Docker, Kubernetes, GitHub Actions, and Terraform covers it

How deep it goes
Explains operational benefits and tradeoffs, but keeps distributed-computing theory secondary to building and deploying an application.
Examples
Uses resource allocation for busy services and a partial monolith-to-microservices conversion to illustrate design choices.
What it assumes
Assumes a developer learning to build applications, while introducing distributed-application techniques from a minimal starting point.
What you can do after
Evaluate/understand when separate services offer enough scaling and deployment value to justify their operating costs.
How it connects
Connects distributed systems to microservices, monoliths, service communication, scalability, and deployment risk.

Also explained in

Compare how 15 books explain distributed system →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Bootstrapping Microservices, Second Edition: With Docker, Kubernetes, GitHub Actions, and Terraform. The section links point to the parts of the book it draws on.