Bulkhead

from Wikipedia, the free encyclopedia

A bulkhead is a stability pattern in software development . The name derives from Schott (English: bulkhead ) of a ship from.

In the case of bulkhead, a software system is divided into several subsystems so that if one of the subsystems is overloaded by a client, the other subsystems are still available for the other clients.

variants

Resources per client

A separate cluster of the application is provided for each client application. If one of the clusters fails, the functionality of the dependent client application is lost, but other client applications continue to function.

Resources per application

With this variant, a software system is divided up according to the purpose of use and a certain amount of resources (computing time, memory, bandwidth, etc.) is made available to each of these subsystems by a container management system.

For example, a payment system can be split into a credit card debit system and an account transfer system and hosted in separate containers. If one of the subsystems fails due to an overload, payments can continue to be made with the other subsystem.

Resources per operation

Here the interface of an application is finely divided according to operations and a certain amount of resources is made available to each operation. This variant is particularly suitable for facades and portals that address several systems in the background.

If, for example, the method of payByCreditCard()an API is not available, for example due to an overload or the failure of the underlying credit card system, the operation can still be payByWireTransfer()called.

In order to enable such a fine-grained distribution within an application, own frameworks such as Hystrix are used.

Resources per endpoint

A separate connection pool or thread pool is made available for each connection to an external resource .

However, it must be noted that a fallback should not always occur in the event of a resource failure. If, for example, a caching system fails, a fallback to the database would overload the database and thus generate a cascade error .

See also

Individual evidence

  1. a b Michael T. Nygard: Release It! Design and Deploy Production-Ready Software. O'Reilly, 2007, ISBN 978-0-9787392-1-8 (English, 326 pages).
  2. a b c d e Gregor Roth: Stability patterns applied in a RESTful architecture. In: Java World. October 13, 2014, accessed April 16, 2017 .