Chapter 13. Dealing with Service Failures

One of the vulnerabilities in building a large microservice-based application is dealing with service failures. The more services you have, the greater the likelihood of a service failing, and the larger number of other services that are dependent on the failed service.

Cascading Service Failures

Consider a service that you own. It has several dependencies, and several services depend on it. Figure 13-1 illustrates the service “Our Service” with multiple dependencies (Service A, Service B, and Service C) and several services that depend on it (Consumer 1 and Consumer 2).

What happens if one of our dependencies fails? Figure 13-2 shows Service A failing.

Unless you are careful, this can cause “Our Service” to fail, and that failure can cause Consumer 1 and Consumer 2 to fail. The error can cascade, as shown in Figure 13-3.

A single service in your system can, if unchecked, cause serious problems to your entire application.

Our Service.
Figure 13-1. Our Service and its dependencies and consumers
Our Service with a failed dependency.
Figure 13-2. Our Service with a failed dependency
Our Service with a failed dependency.
Figure 13-3. Cascading failure

What can you do to prevent cascading failures from occurring? ...

Get Architecting for Scale now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.