liveBook · Manning

End-to-end argument

As explained in Think Distributed Systems

A systems design principle that places functionality at the endpoints when lower layers cannot implement it correctly and completely.

The end-to-end argument places failure handling in the lowest layer that can detect and mitigate a failure correctly and completely. Layer boundaries depend on the system perspective: a database may be the application layer above an operating system and hardware. section 3.3.3

Two failure messages

InsufficientFunds is an application-level failure because only the application can interpret and resolve it. CouldNotConnect is a platform-level failure because the platform can mitigate it by reestablishing the connection. section 3.3.3

Figure 3.10 Application-level vs. platform-level failure
A diagram of a financial system

AI-generated content may be incorrect.

Compare application-level and platform-level failures across the layered system. section 3.3.3

How Think Distributed Systems covers it

How deep it goes
Defines the placement rule and distinguishes application-level from platform-level failures through two concrete messages.
Examples
Uses InsufficientFunds and CouldNotConnect to contrast application-level and platform-level failure handling.
What it assumes
Assumes a layered view of software while distinguishing application, platform, and infrastructure perspectives.
What you can do after
Evaluate which system layer should detect and mitigate a given failure.
How it connects
Connects layered systems with application layers, platform layers, infrastructure layers, failure detection, and failure mitigation.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Think Distributed Systems. The section links point to the parts of the book it draws on.