liveBook · Manning

Distributed system

As explained in Building Distributed Applications that Work

A distributed system is a system composed of multiple networked computing components that coordinate to provide shared behavior.

A distributed system is made of independently running components that communicate over a network and work together as one application. Unlike a monolith, where modules typically call one another inside a single process, its service boundaries turn interactions into network requests. Those boundaries let services be deployed or scaled separately, but make the complete application harder to run and debug. section 1.2

An online shop across service boundaries

A shopper uses a storefront that calls a catalog API. The wider system can include a database, cache, message broker, and background order processing. No single component provides the whole shopping experience; a request may cross several of them. section 1.0 section 1.1

Local development must account for components that start and fail independently:

  • Start services and infrastructure with the right configuration, ports, and volumes; a dependency may not be ready when another service starts. section 1.0
  • Connect services without relying on hardcoded addresses. Aspire’s AppHost declares resources and their relationships; service discovery resolves hosted applications by their registered names. section 1.0 section 1.10
  • Observe the whole request path. Shared logs, metrics, traces, and resource status help expose failures that would otherwise be scattered across processes and terminal windows. section 1.0 section 1.1

Aspire coordinates local development; it does not merge the services into one application. Integration tests can verify behavior across their boundaries, while the application model and dashboard make the running system easier to inspect. section 1.0 section 1.1

Figure 1.2 A distributed application consists of several specialist components separated by network connections.
figure

The diagram makes the network boundaries between specialist components visible. section 1.2

How Building Distributed Applications that Work covers it

How deep it goes
Defines independent networked components, contrasts monoliths, and outlines local orchestration without detailing network protocols or failure recovery.
Examples
Follows a shopper’s request through a storefront and catalog API, with data stores and background processing in the wider system.
What it assumes
Starts with familiar single-application development and introduces distributed-system and Aspire concepts for .NET developers.
What you can do after
Apply it via Aspire to run, connect, observe, and debug independent application components from one local development setup.
How it connects
Links service boundaries to monolithic architecture, orchestration, service discovery, and observability.

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 Building Distributed Applications that Work. The section links point to the parts of the book it draws on.