学習パス 04レッスン 5 / 10

クラウドネイティブ環境向けに設計する

再現可能なインフラ、置き換え可能なプロセス、永続的な状態、観察可能な動作を結び付けます。コンテナーへのパッケージ化以外も評価します。

実践12 分レビュー日

発行元 執筆方針

理解度を確認障害後に、プラットフォームがレポートのワーカーを置き換えます。再試行を安全にするのは何ですか?演習に取り組む
障害後に、プラットフォームがレポートのワーカーを置き換えます。再試行を安全にするのは何ですか?

学べること

  • コンテナーへのパッケージ化と、クラウドネイティブの動作を区別します。
  • 生成したサービスの状態、再試行、置き換えに伴うリスクを特定します。
  • エージェントと人が検証できる、プラットフォームの仕様と制約を定めます。

必要な動作を定める

クラウドネイティブの実践は、パブリック、プライベート、ハイブリッドの各環境で、繰り返し可能な開発と運用を支えます。CNCFは、変化しても管理、観察、障害への耐性を保つシステムを重視しています。コンテナーやオーケストレーションは、この方法を支援できます。それだけで、すべての性質が得られるわけではありません。

架空のレポートサービスから始めます。AIツールが、エンドポイント、ワーカー、コンテナーイメージを作ります。デモでは正しいPDFが生成されます。本番の前に、別の問いに答える必要があります。ジョブの途中で、プラットフォームがワーカーを置き換えるとどうなりますか?

これはインフラだけでなく、アプリ設計の問いでもあります。再起動でプロセスが戻っても、未完了の作業は失われるかもしれません。

プロセスと永続的な状態を分ける

試作品は、待機中のジョブと完成したレポートをコンテナーのディスクに置いています。コンテナーを置き換えると、両方が失われる可能性があります。ワーカーを増やすと、どのワーカーがリクエストを受けたかで、結果が変わる場合もあります。

改良した設計では、永続的なジョブ保管先と、承認済みのオブジェクトストレージを使います。リクエストはジョブの識別子を記録します。ワーカーはジョブを取得し、結果を作成して、その場所を記録します。利用者がレポートをダウンロードするときも、アクセス確認は必要です。

検討事項レポートサービスへの問い
状態プロセスを置き換えても、どのレコードを残す必要があるか?
設定同じ成果物を各環境でどう動かすか?
IDどのサービスIDがジョブを読み、結果を書き込めるか?
正常性ワーカーは作業を受け付け、その作業を完了できるか?
停止ワーカーが停止すると、取得済みのジョブはどうなるか?
処理能力ワーカー、データベース、ストレージ、他のサービスのどの上限に最初に達するか?

シークレットをイメージに含めないでください。承認済みのシークレット管理システムから供給します。どの設定変更に、新しいリリースやプロセスの再起動が必要かを記録します。

ワーカーを増やす前に再試行を設計する

ワーカーがPDFを保存し、ジョブ完了を通知する前に停止したとします。キューはそのジョブを再配信します。二回目の試行で、顧客への二重請求や矛盾する完了メッセージが発生してはいけません。

適切な箇所では、冪等な操作を使います。同じ論理リクエストを繰り返しても、意図した効果を保つようにします。安定したリクエスト識別子を定め、結果を永続的に記録し、各障害地点での動作を確認します。AWSは安全な再試行のガイドで、この方法を説明しています。

再試行にも上限が必要です。タイムアウト、再試行回数の上限、同時の再送を避ける遅延を設定します。永遠に繰り返すのではなく、失敗した作業を調査用に保存します。

望ましい状態をレビュー可能にする

宣言的な設定は、意図するデプロイ状態を示します。コントローラーは、その状態を維持しようと動作します。例えば、Kubernetes Deploymentはアプリのレプリカと管理された更新を扱います。それでも、アプリは置き換えを正しく処理する必要があります。

インフラとアプリの設定をバージョン管理します。通常の提供プロセスで変更をレビューします。ジョブの実際の完了、キュー内の待ち時間、失敗、依存先の上限を観察してください。プロセスが動いていても、レポートを生成できない場合があります。

チームが運用できるプラットフォームを選ぶ

クラウドネイティブにするために、すべてのアプリをマイクロサービス化する必要はありません。マネージドランタイム上のモジュール化されたアプリでも、要件を満たせます。サービスを増やすと、インターフェース、デプロイの判断、運用作業も増えます。

開発エージェントに、実際のプラットフォームの仕様と制約を渡します。サポートするランタイム、ID管理の方法、データサービス、デプロイのルール、必要な証拠を含めます。成功するリクエストだけでなく、中断や置き換えの動作もテストします。次に可用性と障害の範囲を学んでください。

演習に取り組む

架空のレポートサービスは、ジョブと完成ファイルをコンテナーのディスクに保存しています。リクエスト、ジョブ、ファイル、ダウンロードを通る流れを描きます。永続的に保つ状態を示してください。ワーカーがファイルを書いた後、ジョブ完了を通知する前に停止した場合の動作を定めます。

ワークシートをダウンロード(Markdown)
理解度を確認 ↑

学習を続ける

出典と参考資料

Taigaの関連資料

← 前のレッスン: 試作品の先に必要なインフラを定める