コンテナオーケストレーションとは
コンテナオーケストレーションは、アプリを動かすための「コンテナ(OS上で仮想的に独立した実行環境を作る技術)」を、大量かつ自動的に管理・運用する仕組みのことです。Webサービスが大規模になると、何百個、何千個ものコンテナを同時に動かす必要があり、これらを人間が手動で監視・管理するのは不可能です。コンテナオーケストレーション(代表例:Kubernetes)を使えば、コンテナの起動や停止、アクセスの偏りを防ぐ負荷分散、異常終了したコンテナの自動再起動などをシステムがすべて自動で行ってくれます。
具体例
お正月の福袋セールやキャンペーンによって、あるWebサイトへのアクセスが急激に10倍に増えたとします。コンテナオーケストレーションツールはこれを検知し、サーバーを処理する「コンテナ」の数を自動で10倍に増やし(オートスケーリング)、負荷を分散させます。アクセスが落ち着いたら、自動でコンテナ数を元に戻してコストを節約します。
【コンテナオーケストレーションの主な役割】\n・デプロイ自動化: 新機能のリリース時に、アプリを無停止で順次入れ替える\n・スケーリング: アクセス数に応じてコンテナの数を自動で増減させる\n・自己修復 (Self-healing): 故障したコンテナを自動で削除し、新しいものを即座に立ち上げるもう少し詳しく
コンテナオーケストレーションを牽引する代表的な技術が「Kubernetes(K8s)」です。これは、複数のサーバーマシンを束ねて1つの巨大なコンピュータ(クラスタ)として扱い、その上でコンテナを効率よく実行するためのプラットフォームです。基本的な仕組みとして、システムが常に目指すべき理想の状態(定義したレプリカ数やネットワーク構成など)を「マニフェストファイル(YAML形式等)」で記述し、これをクラスタに適用(宣言的API)します。コンテナオーケストレーションエンジンは、現在の状態(実態)を常に監視し、もし異常終了などで理想の状態から乖離した場合は、自動的に新しいコンテナを起動して状態を合致させる「自己修復(セルフヒーリング)」を行います。また、コンテナ間の通信経路を自動設定する「サービスディスカバリ(Service Discovery)」や、アクセス負荷を分散する「ロードバランシング(負荷分散)」、データベースのパスワードなどの秘密情報を安全に管理・注入する「シークレット管理」といった機能も組み込まれています。これらにより、コンテナ環境上での大規模なマイクロサービスの運用管理コストを最小限に抑えています。
試験でのポイント
応用情報技術者試験では、クラウドネイティブなインフラ技術の文脈でコンテナオーケストレーション(またはKubernetes)の特徴が問われます。「大量のコンテナの配置(スケジューリング)、オートスケーリング、ロードバランシング、自己修復といった運用プロセスを自動化・管理する仕組み」という定義を正しく選択できる必要があります。また、従来のハイパーバイザ型仮想化技術(ゲストOSを丸ごと起動するため起動が遅くリソース消費が大きい)と、コンテナ技術(ホストOSのカーネルを共有するため軽量で高速起動が可能)の違いについても整理しておきましょう。コンテナが軽量であるからこそ、オーケストレーションツールによる迅速なオートスケーリング(負荷に応じた動的なコンテナ増減)や、新しいアプリケーションのバージョンを無停止で適用する「ローリングアップデート」が容易に実現できるという論理関係を理解しておくことが合格への鍵です。
関連する用語
OSのカーネルを共有して動作する軽量な仮想化技術であるコンテナ(Dockerなど)、負荷に応じて稼働数を自動的に増減させるオートスケーリング、およびサービスを停止することなく順番にアップデートを反映するローリングアップデートがあります。これらを組み合わせることで、最新のクラウドインフラ運用技術を把握できます。