ホームForesight Journalコラムマルチクラウドを可能にした技術 ~コンテナとKubernetes

マルチクラウドを可能にした技術 ~コンテナとKubernetes

前回のコラムではマルチクラウドのメリットをご紹介しました。しかし、最近になるまでマルチクラウドは主要な選択肢としては考えられていませんでした。それが変わったのは、以前と今とで技術的な環境が大きく変わったためです。

クラウドの特長のひとつに、仮想化があります。1台の物理マシンの上で仮想的に複数台のマシンを稼働させる仮想化環境であれば、ハードウェアの障害が起きても他の物理マシンに移行(マイグレーション)させて稼働を続けたり、負荷の増減に応じてリソースを動的に変化させたり、急激な負荷の増大に対応するためにスケーリングさせたりといったことが可能です。それによって可用性が高まり、コストを引き下げることができ、データセンター全体の管理負荷を減少させることができるのです。
ただこれは、ひとつのクラウドベンダー内、あるいはクラウドとオンプレミスを同じベンダーの技術で組み合わせるハイブリッドクラウドの場合の話です。同じ事を異なるクラウドサービスを横断して行おうとすると、ハードルは一気に高まります。仮想マシンの移動や負荷分散を管理するツールは各クラウドベンダーが独自に作っているため、複数のサービスを使おうとすると各々のクラウドの管理ツールを横断して管理しなければならず、採用している技術やバージョンが異なる場合にそれをどう吸収するか、といったことも課題になります。技術的に不可能ではないにせよ、非常に煩雑だったのです。

コンテナ型仮想化の登場

そこで、新たな仮想化技術として注目されたのが、「コンテナ型仮想化」です。これに対し従来型の仮想化は「ハイパーバイザー型仮想化」などと呼んで区別するようになっています。 ハイパーバイザー型仮想化は、ハイパーバイザーによって1台のハードウェアを仮想的に分割して複数台のハードウェアに見せかける技術です。古くは高価なメインフレームを分割して安価に利用しようという狙いで開発された技術ですが、2005~6年にかけてIntelやAMDが仮想化を支援する機構をサポートしたことで、PCサーバーでも仮想化を効率的に利用できるようになりました。クラウドサービスの多くはPCサーバーを大量に使うことでコストを抑えていたため、クラウドでも仮想マシンの提供が中心になったのです。

これに対し、コンテナ型仮想化は、1台のマシンのひとつのOSの上で、独立した複数のアプリケーション実行環境を稼働させるものです。この実行環境にはアプリケーションの動作に必要なミドルウェアも含まれており、全体をパッケージ化した「コンテナ」が、コンテナエンジンを介してOSのプロセスとして動作するのです。
仮想マシンには個々にOSをインストールする必要があり、立ち上げには通常のマシンと同様に時間がかかります。必要とするメモリも同じです。しかし、コンテナはひとつのOSの上で動くため、プロセスを起動させる時間だけでよく、メモリもそのコンテナが使う分しか増えません。要するに、コンテナは仮想マシンよりも軽量で起動も速く、必要なリソースも少なくて済むのです。しかし、OS上のプロセスですから、同じOS用のアプリケーションに限定されます。コンテナは元々Linuxで開発された技術で、現在クラウドで使われているのはほとんどがLinuxベースのコンテナです。

コンテナ管理ソフトの誕生

こうして、仮想マシンを大量に使っていたGoogleなどのプラットフォーマーがコンテナの利用を始め、その利便性から一気にコンテナの利用が拡大しました。そのような中、コンテナの生成/起動/停止を効率的に行うためのツールとして注目されたのが、日本でも有名なDockerです。Dockerは大ヒットとなり、コンテナの普及に貢献しました。

Googleのエンジニアが2014年に公開したスライドには、「Everything at Google runs in a container(Googleではすべてをコンテナで実行している)」という記載があります。同じスライドに「1週間で20億個以上のコンテナを起動する」という記述もあり、その規模の大きさが伺えます。

数の増加と同時に、アプリケーションが大きくなり複数のコンテナに分割されて別々のサーバーで稼働するようにもなり、それらを管理するのが大変になってきました。Dockerはコンテナの生成環境であり、管理までの機能はありません。そこでGoogleが自社利用のために開発したのが、Kubernetesです。Kubernetesは「オーケストレーションソフトウェア」と呼ばれ、コンテナ間の通信を調整したり、コンテナが必要とするリソースに応じてどのサーバーで実行させるかをスケジュールしたり、負荷状況に応じて移動させたりして、コンテナの複雑な運用に対応します。Googleは2015年にKubernetesをオープンソースとして公開しました。
今ではDocker以外のコンテナ生成環境も増えてきていますが、オーケストレーションソフトウェアとしてはKubernetesがほぼ独占的なシェアを誇っています。こうして、Linux+Dockerなどのコンテナエンジン+Kubernetesの組み合わせが、コンテナ利用のデファクトスタンダードとして定着しました。

現在、Amazon、Microsoft、Googleなどのメガクラウドベンダーは軒並みKubernetesをサポートしており、マルチクラウドに対応するためのツールを揃えています。こうしてLinux+Kubernetesという共通基盤が生まれたことで、マルチクラウドが現実の選択肢として認知されるようになったのです。

オープンであることの大切さ

ここで大事なことは、Linuxはもちろん、DockerもKubernetesも、オープンソースで公開されているということです。KubernetesはGoogleが開発しましたが、Googleのものではなく、インターネットコミュニティ全体のものです。皆が開発に参加し、その成果は平等に使うことができます。ここまでの流れを見てきてわかるのは、技術を囲い込む時代は終った、ということです。以前は自社技術を非公開として顧客を囲い込むのがIT業界の一般的な戦略でしたが、今はオープンで無ければ受け入れられない時代になったということが示されたということではないでしょうか。
これは、今後のネットビジネスにおけるオープンソースの位置づけと取扱い方を考え直さなければならない時代になったということでもあります。Microsoftが近年オープンソースへのコミットを強化しているのも、その流れを敏感に感じ取っているからでしょう。

次回(最終回)は、マルチクラウドへの取り組みを加速させるITベンダー各社の戦略を見て参ります。
マルチクラウドコラム第3回目はこちらからご覧ください。
ITベンダー各社のマルチクラウド戦略

マルチクラウドの運用・管理でお困りではないでしょうか?

WEBサーバーを運用しているクラウドサービスに加えて、各種の業務用アプリケーションを運用している別のクラウドサービスなど、社内に複数のプロバイダーが提供するクラウドサービスが導入されていて、その運用・管理にお困りではないでしょうか?

マルチクラウドの運用ならばミツイワにおまかせください。
ミツイワの「マルチクラウド運用サービス」では、NIFCLOUDやAWSなどのクラウドサービスを安全・快適にお使いいただくための各種サービスを充実させております。24時間365日の監視を実装した基本サービスに加え、各社によって差のあるサービスを補完する機能や、運用負荷軽減に不可欠なオンサイトサポートなど豊富な機能をメニューから選択してご利用いただけます。
インターネットからのお問い合わせ
総合窓口へのお問い合わせ