なぜコンテナオーケストレーションが必要なのか
これまでのITシステムに対するニーズは、既存ビジネスや企業内のバックオフィス業務を効率化するところにあった。しかし昨今では、新しいビジネスを生み出したり、新しいビジネスチャンスを見つけるために、ITシステムを積極的に活用していこうという機運へと移り変わっている。これを別の角度から見ると、かつては数年単位でアップデートすればよかったシステムから、スマートフォン向けアプリのように、12ヶ月未満という短いライフサイクルで、頻繁にアップデートするアプリケーションが求められるようになったことを意味している。
このような高頻度リリースを実現するための開発トレンドとして、「マイクロサービスアーキテクチャ」や「継続的インテグレーション/デリバリー」(以下、CI/CD)といったものがある。大規模なシステムを疎結合な複数のサービスの組み合わせで実現するマイクロサービスアーキテクチャは、変更の影響範囲をサービス単位に止められるため、高頻度のリリースに適する設計方式である。
他方のCI/CDは、ソースコードの変更からテスト、本番環境へのリリースまでの開発プロセスを極力自動化し、アプリの品質の安定と高頻度リリースを実現する取り組みだ。最近とみに普及の速度が高まっているアジャイル開発では、欠くべからざる環境である。
マイクロサービスアーキテクチャ、CI/CDのいずれにも、昨今注目を浴びている「コンテナ」が寄与するものは大きい。マイクロサービスアーキテクチャでは、多くの細かいアプリケーションを動かすために、コンテナを用いて独立した仮想的環境をコンパクトに実現することで、その独立性と高集約性のメリットを得ることができる。CI/CDにおいても、アプリケーションの設定情報などを含めた実行環境をコンテナとしてパッケージ化し、同じコンテナを使い回すことで、テスト環境の構築を容易に自動化することができる。この手法であれば、人手によるミスの発生も防ぐこともでき、より円滑に高頻度のリリースサイクルを回すことが可能となるのだ。
こうして高頻度リリースの需要の高まりとともに、コンテナの活用が広まってきたが、並行して、コンテナを大量に管理・運用するためのオペレーションが複雑化するという課題が顕在化してしてきた。「3桁以上デプロイしたコンテナ同士を連携し、負荷に応じてスケールさせる」こともよくあるケースだという。このような環境を、物理サーバーや従来型の仮想化と同じような方法で運用するのは、とてもではないが無理である。
このようなコンテナの大量デプロイやスケーリングなどを自動管理するために登場したのが「コンテナオーケストレーションツール」である。コンテナオーケストレーションツールは、物理的あるいは仮想マシンで作った多くのハードウェアを、1つの大きなリソースのプールであると抽象化して見せてくれる。このプールに対し、任意のアプリケーションのコンテナに動くよう指示を出せば、どこかのハードウェアでコンテナが立ち上がって動き出す。アプリケーションを動かすことで負荷が増えると、自動的に適切なハードウェアを選択して、うまく冗長化してコンテナを分散してくれる。他にもアプリケーションをアップデートしたいときには、そのように指示を出せば自動的にローリングアップデートをしてくれるし、何かしらの障害によって一部のコンテナが落ちてしまったとしても、それを検知して自動で立ち上げてくれる。
では、コンテナオーケストレーションツールとして、どれを選ぶのが良いのだろうか。
Kubernetesの優位性とは
日本オラクル クラウド・テクノロジー事業統括 セールスコンサルタントの早川 博氏が“コンテナオーケストレーションツールのデファクトスタンダード”というのが「Kubernetes」である。Kubernetesはグーグルが2014年に発表したツールで、現在はCloud Native Computing Foundationに移管されている。早川氏はこのKubernetesについて、「他のコンテナオーケストレーションツールとは異なる点が2つある」と指摘する。
一つは、様々なOSSと組み合わせることにより、柔軟に機能拡張することが可能である点だ。Kubernetesの能力以上に、もっとリッチな監視の仕組みが欲しいとか、多くのコンテナから出力されるログを分析したいといったときにも、多くのデベロッパーが実装した機能を活用することができるほか、Kubernetesの適用領域を拡大して機械学習プラットフォームとして使ったり、分散ストレージとしてKubernetesを使うといったことも可能となっている。
もう一つは、Kubernetesの利用を始める上で、幅広い選択肢がある点だ。Kubernetesがデファクトスタンダードの地位を勝ち得た大きな要因として、Kubernetesクラスターを構築・運用管理の省力化を図るためのマネージドサービスを、グーグルやマイクロソフト、AWSといった主要クラウドベンダーが提供していることが挙げられる。あるいは自由にカスタマイズしたりエッジな要件に対応したい場合には、Kubernetes構築ツールを利用してインストールしたり、フルスクラッチでインストールしたりするなど、要件に応じて最適な環境を手に入れることができるのだ。