第3回 Kubernetesによる
モダナイゼーションの新たなアプローチ

これまで第1回では企業の情報システムのモダナイゼーションが迫られる背景について取り上げ、第2回ではモダナイゼーションが進まない現状、およびIT業界の600社以上が参加するCNCFのもと、開発と普及を促進するクラウドネイティブコンピューティングについて解説してきた。第3回は、モダナイゼーションを推進するためにCNCFが提唱するコンテナとKubernetesの利用価値について解説する。

日本IBM テクノロジー事業本部 高良真穂

コンテナが必要とされた背景

 オープンソース・ソフトウェア(以下、OSS)は、ソフトウェア開発費削減と開発期間短縮のために普及してきた。OSSは無償でソースコードが公開されており、ライセンスによる制約はあるが、利用・複製・改良・再配布が自由にできる。身近なところではデジタル家電のOSとしてLinuxが活用されている。また、最新技術の開発現場で、人工知能技術や自動運転車のソフトウェア開発、実行基盤として、広く利用される。そして、今後は企業の情報システムへ提供する段階となった。

 OSSの開発は、企業などに所属するエンジニアからなるコミュニティによって推進される。そして、IT業界はOSS開発プロジェクト推進とオープンスタンダード制定のために、財団を設立して、コミュニティ活動を支援している。このような組織の一つであるLinux Foundationに参加する企業は1万8,000社、開発者は72万人を超え、活動するプロジェクトは1,600を超える。前回紹介したCNCF(Cloud Native Computing Foundation)は、そのサブグループの一つである。

 しかし、OSSが普及するにつれ課題が顕在化した。OSSのソフトウェア部品を利用したソフトウェアは、時間経過とともに「実行形式のビルドができなくなる」「動作に不具合が起きる」などの問題が発生するようになる。これらの原因は、OSSプロジェクトが前進する中で、プログラム言語のライブラリなどのインターフェースや機能の仕様が変わるためだ。

 この課題を解決するために、Docker社が普及させたコンテナがある。アプリケーション開発に使用したOSSのライブラリやモジュール、すなわち、図1中の太線で囲んだ範囲をコンテナとして一体化する。そして、同じバージョンやパッチレベルの組み合わせを何度でも再現できるだけでなく、一部のモジュールを変更して、コンテナを世代管理できる。

 例えば、アプリケーション開発で使用したOSSパッケージの中で、脆弱性対応パッチを含むパッケージがリリースされた場合、その一部のパッケージだけを置き換えたコンテナをビルドして、変更の影響をテストできる。

 一つのOS上に複数のアプリケーションが共存するケースで、前提となるOSSのスタックを統一できなくなった場合、コンテナ以前は複数のサーバーに分割するなどの大掛かりな対策が必要となった。しかし、コンテナは一つの仮想サーバーのように隔離された実行環境であるとともに、コンテナ内の変更の影響を外部と隔離するため、OSSスタックの統一を必要としない。このようにOSSを使ったアプリケーションの開発と運用において、コンテナは必須の技術である。

コンテナに加えてKubernetesが必要な理由

 コンテナは画期的なアプリケーションの実行環境であるが、業務アプリケーションの開発では、受注や仕入れ在庫管理などの「機能要件」以外に、運用のための「非機能要件」が必須だ。非機能要件の例として、1秒当たりのリクエスト処理能力などの性能、事業拡大時にはリソースを増強して対応できるスケーラビリティ、ハードウェアの故障時にも処理を継続できる可用性などが挙げられる。また、応答時間を適切に保ちユーザーをいら立たせないために、監視やログ分析なども欠かせない。

 Kubernetesは、コンテナ化されたアプリケーションに対して、以下に挙げる非機能要件を担う。

Kubernetesの基本機能

・コンテナの組み合わせ利用(ポッド)
・スケールアウト/スケールアップ
・ロールアウト&ロールバック
・永続ストレージ利用
・自己修復(可用性)
・クラスタの分割利用
・監視&ログ分析
・運用自動化

 これまでは、アプリケーションの実行基盤を構築する際に、個別にサーバーの多重化、代表するIPアドレスの付け替え機能や自己回復などを実装することに、時間と費用をかけてきた。しかし、コンテナをKubernetesで実行することで、非機能要件の対応が軽減され、サービス提供までの時間を短縮することができる。さらに、マイクロサービス化されたアプリケーションの運用にとって、サービスを停止することなく、一部のマイクロサービスのコンテナを置き換えるロールアウトや前世代のコンテナへ戻すロールバックは欠かせない。ここに挙げた機能はほんの一部であるが、モダナイゼーションを推進するにあたり、Kubernetesは最強の実行環境となる。

ハイブリッドクラウドの実装に最適

 図2では、上半分にデータを含むアプリケーション運用の階層、下半分に各社クラウドが提供するサービスの階層を表した。この中で、各社クラウドのインターフェースに統一性ではないことを、サービス階層の上部の凸凹で表現した。

 Kubernetesは、このような各クラウドの特色の違いを吸収して、統一的な運用環境を提供する。これによりオンプレミスを含む複数のクラウドを、少人数のSREで効率良く運用できる。このことから、ハイブリッドクラウドの実装手段として、Kubernetesは注目を集めている。

 企業システムのモダナイゼーションの推進において、コンテナはOSS活用の課題を解決し、Kubernetesはマイクロサービス化したアプリケーションの円滑な運用、および非機能要件の実装を効率化する。さらに、ハイブリッド環境の統一的な運用を実現する。もはやKubernetesの導入をちゅうちょしてはいけない。企業は一刻も早く、人材の育成と導入を推進するべきだ。次回は企業システムのモダナイゼーションの中心的な対応となるマイクロサービスの推進について解説したい。