信頼性のパターンについてAzure、AWS、GCPの提唱するパターンに基づいてまとめる。
ユーザー(システムやアプリケーション)が期待する機能を提供し続けることができる性質のことである。
信頼性は次のような特性によって支えられる。
信頼性に関連するパターンをいくつかピックアップする。
ネットワーク通信に関わる処理を別のサービスに委譲することで、本来のサービスの負荷を軽減するパターン。
フロントエンドアプリケーションとバックエンドサービスの間に、フロントエンドアプリケーション専用のサービスを配置するパターン。
システムの一部が障害を起こしても、他の部分が影響を受けないようにするパターン。
データベースやAPIなどのリソースに負荷をかけないように、キャッシュを利用するパターン。
cf. キャッシュの書き込み方式
障害が発生した際に、障害が解消されるまで一定時間リクエストを拒否するパターン。
クローズド、ハーフオープン、オープンの3つの状態を持つ。
クローズド:リクエストを受け付ける状態 ハーフオープン:一部のリクエストを受け付ける状態 オープン:リクエストを受け付けない状態
リクエストを受け付ける前に、リクエストが正当なものかどうかをチェックするパターン。
例えば、サービス間で大きなペイロードを直接やりとりしないように、ペイロードをデータベースに保存して、そのIDをやりとりするなど。
複数のリソースを更新する際に、トランザクションが失敗した場合に、リソースを元の状態に戻すパターン。
複数のコンシューマーが同じメッセージングキューからメッセージを取得し、処理するパターン。
※learn.microsoft.com - 競合コンシューマー パターンを参考にしている。聞き慣れない名前だが、多分これはシンプルなメッセージングキューだと思う。
システム内の状態の変化をイベントとして記録して、システムの状態を再構築できるようにするパターン。
キューに優先順位をつけて、優先順位の高いキューを優先的に処理するパターン。
パブリッシャーがメッセージを送信し、サブスクライバーがメッセージを受信するパターン。
パブリッシャーとサブスクライバーはトピックを介してメッセージをやりとりする。