回復性のパターンResiliency patterns

回復性とは、障害を正常に処理して復旧するシステムの機能です。Resiliency is the ability of a system to gracefully handle and recover from failures. クラウド ホスティングには、マルチテナントのアプリケーションが多い、共有プラットフォームを使用する、リソースと帯域幅を競合する、インターネットで通信する、コモディティ ハードウェア上で実行する、という特性があります。この特性は、一時的な障害と永続的な障害の両方が発生しやすくなることを意味します。The nature of cloud hosting, where applications are often multi-tenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. 迅速かつ効率的に障害を検出して復旧することが、回復性を維持する上で重要となっています。Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

パターンPattern 概要Summary
BulkheadBulkhead アプリケーションの要素をプールに分離し、1 つの要素が失敗しても、他の要素が引き続き機能できるようにします。Isolate elements of an application into pools so that if one fails, the others will continue to function.
Circuit BreakerCircuit Breaker リモート サービスまたはリソースとの接続時の修正に要する時間が一定しないエラーを処理します。Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
補正トランザクションCompensating Transaction 一連のステップ (最終的に一貫性のある操作を形成する) で実行された作業を元に戻します。Undo the work performed by a series of steps, which together define an eventually consistent operation.
Health Endpoint MonitoringHealth Endpoint Monitoring 公開されたエンドポイントを通じて、外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
Leader ElectionLeader Election 1 つのインスタンスを、他のインスタンスの管理を担当するリーダーとして選定することで、分散アプリケーション内で連携するタスク インスタンスのコレクションによって実行されるアクションを調整します。Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.
Queue-Based Load LevelingQueue-Based Load Leveling タスクとそのタスクが呼び出すサービスとの間でバッファーとして機能するキューを使用して、断続的な大きい負荷を平準化します。Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.
RetryRetry 予測される一時的な障害をアプリケーションが処理できるようにします。アプリケーションがサービスまたはネットワーク リソースに接続しようとする際に、失敗した操作を透過的に再試行します。Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed.
Scheduler Agent SupervisorScheduler Agent Supervisor 分散されている一連のサービスやその他のリモート リソースに対して、一連のアクションを調整します。Coordinate a set of actions across a distributed set of services and other remote resources.