12章Stateful Service(ステートフルサービス)
分散されたステートフルなアプリケーションは、永続化されたアイデンティティ、ネットワーク、ストレージ、順序性といった機能を必要とします。Stateful Service(ステートフルサービス)パターンでは、ステートフルアプリケーションを管理するのに理想的な強力な保証を持つこれらの構成要素を提供する、StatefulSetを説明します。
12.1 問題
ここまで、分散アプリケーションを作るたくさんのKubernetesの構成要素を見てきました。ヘルスチェックやリソース制限のあるコンテナ、複数のコンテナを持つPod、動的なクラスタ規模の配置、バッチジョブ、スケジュールされたジョブ、シングルトンなどなどです。これらの構成要素に共通した特徴は、管理対象のアプリケーションを同一、交換可能、置き換え可能なコンテナから構成されるステートレスなアプリケーションとして扱い、Twelve-Factor App原則(https://12factor.net)に従っていることです。
ステートレスアプリケーションの配置、回復性、スケールの面倒を見るプラットフォームがあるというのは非常に大きな価値ではありますが、考えるべき大きなワークロードがまだあります。それが、各インスタンスが一意であり、かつ長期にわたって動作する特徴を持つ、ステートフルアプリケーションです。
現実世界においては、スケーラビリティの高いステートレスサービスの背後にはステートフルなサービスがあり、その代表的なものはデータストアの形をとります。Kubernetesの初期、ステートフルなワークロードに対するサポートがなかった頃は、クラウドネイティブなモデルの利点を活かすためにステートレスアプリケーションはKubernetesに配置しつつも、クラウドでない伝統的なネイティブな仕組みに管理されたパブリッククラウドかオンプレミスハードウェア上のKubernetesクラスタ外にステートレスなコンポーネントを配置するのが解決策でした。すべての大企業が多数のステートフルなワークロード(レガシーなものもモダンなものも)を持っていることを考えれば、ステートフルなワークロードをサポートしないことは、汎用的なクラウドネイティブプラットフォームとして知られるKubernetesの大きな制限事項でした。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access