CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回は宣言型APIについて説明しました。今回から、クラウドネイティブのキーワードの1つである疎結合について説明します。
疎結合は、複数のサービスをネットワークなどで接続し、個々の独立性を高くなるよう構成した状態のことです。第5回で説明したマイクロサービスは、まさに疎結合で構成されています。逆に、複数のサービスが互いに依存し、独立性が低く構成した状態を密結合と呼び、モノリシックが密結合の代表と言えます。
疎結合では、回復性、管理力、可観測性という特徴があります。
クラウドネイティブにおける回復性とは、ユーザーが意識することなく、システムが障害やリソース不足に対処してサービス継続する能力を指します。回復性は、自動回復、自己最適化、ゼロダウンタイムの更新をサポートすることで実現します。
自己回復と自己最適化は、Kubernetesのワークロードの全てに対して適用されます。
KubernetesのDeploymentSet と ReplicaSetは、ノードをまたがって提供されるサービスによく使用されます。DeploymentSetを作成すると、定義したPodがReplicaSet以下に1つ以上作成されます。このとき、Podの個数を指定できます。何らかの方法でPodを削除、Podがエラーにより停止、Podがサービスを停止したとき、自動的に該当のPodが削除され、新しいPodが作成されます。DeploymentSetは常にPodの状態を監視し、Pod数が定数を満たしていること、Podが正常であることを確認しているため、このような動作が行われます。このような動作により、Kubernetes におけるPodの自動回復を実現しています。 自動回復するワークロードはDeploymentSetだけではなく、ステートフルなアプリケーションを管理するためのStatefulSet、Nodeごとに単一のPodのコピーを保証するDaemonSetがあります。Kubernetesのコントロールプレーンも、これらのワークロードを使用して構築されているため、Kuberetes全体が自己回復すると言ってよいでしょう。
DeploymentSetでは、サービスの負荷状況にともなうPod数のオートスケーリング(自動増加)の機能があります。Kubernetesは、CPU使用量、メモリ空き容量などを監視するメトリクスを提供しています。オートスケールは、この監視しているメトリクスを単体、あるいは組み合わせて条件を指定し、条件を満たしたときにPod数を増やします。また、条件を満たさなくなった場合にPod数を指定個数まで戻す機能です。オートスケールを使用することで、自己最適化を実現します。
DeploymentSetでは、Pod内のコンテナや設定を更新しようとするとき、新しいReplicaSetを作成しそこに新しいPodを作成します。そして、古いReplicaSetから新しいReplicaSetへ移行します。移行する際には。いくつかの方法があります。通常は、新しいReplicaSetをスケールアウトし、増えたPodに対応して古いReplicaSetを停止していきます。これにより、サービスは徐々に新しいPodに引き継がれます。
古いReplicaSetは、Podを作成しない状態で残ったままになります。もし、新しいReplicaSetに問題が発生した場合は、古いReplicaSetを再度デプロイできます。この機能により、ゼロタウンタイムでのサービス移行、切り戻しが可能になります。
今回は、Kubernetesを例に疎結合で実現できる、回復性について説明しました。Kubernetesなどの疎結合を使用することで、サービスのあるべき姿を定義し、その通りにサービスの状態を維持できます。次回は、疎結合の管理力について説明します。次回をお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes