特集

今後のアプリケーションの鍵を握る、Kubernetesとコンテナ

 コンテナとKubernetesは、アプリケーションの構築と実行方法を再定義し、企業のIT効率を高めるための原動力になっています。コンテナは、コンピューティング環境が変わってもアプリケーションを迅速かつ確実に実行するために、コードとそのすべての依存関係をパッケージ化したソフトウェアの標準ユニットです。コンテナには、管理可能なパッケージで実行するために必要なすべての情報が含まれているため、クラウドベースでのアプリケーションの展開が容易になります。今回は、コンテナのテクノロジーにおける重要な側面についてご紹介します。

データ中心の重要性

 企業が持つデータは、今後のビジネスの中心です。デジタル化を積極的に進めている組織は、新しい「クラウドネイティブ」テクノロジー・スタックを使用することで、このデータの価値を高めます。クラウドネイティブ・アプリケーションは、稼働する環境を選ばないため様々な環境間で簡単に移動可能であり、パブリッククラウドであろうとオンプレミスであろうと、より迅速な展開や修正が可能となります。クラウドネイティブ・アプリケーションは通常、マイクロサービスで構成され(後述)、コンテナにパッケージ化されます。この新しいクラウドネイティブ・スタックには、ストリーミング・データをリアルタイムで分析するアプリケーション、検索用に大量のデータをインデックスするアプリケーション、ますます大規模なデータセットで機械学習アルゴリズムをトレーニングするアプリケーションなどが含まれています。そして、このクラウドネイティブによる革命は間違いなく、コンテナとKubernetesの組み合わせによって推進されています。

 コンテナを使用することにより、細分化されたアプリケーションを最小限のオーバーヘッドで、高度なスケールと流動性により効率的に実行できます。Kubernetesは、これらすべての細分化されたアプリケーションを調整し、必要に応じて複合アプリケーションに集約できるような、マシンによるオーケストレーションを提供します。

コンテナの採用急増が、その重要性を物語っている

 この新しいクラウドネイティブ・スタックの採用率は驚異的な値です。451リサーチ社の調査(PDFファイル開きます)によると、新しいアプリケーションの95%はコンテナで開発されています。さらにピュアが今年3月に実施した調査によると、およそ7割の企業が、パンデミックによりKubernetesの利用が増加したと回答しており、またおよそ9割の企業が、今後2~3年において、Kubernetesが組織のインフラ管理において大きな位置を占めると回答しています。企業のクラウド戦略はマルチクラウドへの流れが加速し、コンテナもその鍵となっています。ガートナーによると、81%の企業がすでにマルチクラウドを採用しており、2つ以上のクラウド・プロバイダーを利用しているという結果が出ています。ガートナーはまた、世界の85%の企業が2025年までにコンテナを本番環境で運用すると予測しており、35%だった2019年から大幅に増加しています。

 まだ大きな成長の可能性がある初期のマーケットであるため、本質的に予測することは困難ですが、IDCは、コンテナ・インフラストラクチャ・ソフトウェアの商用市場だけで、2022年までに15億ドルを超えると予測しており、企業から注目を集めています。

マイクロサービスとコンテナ:完璧な組み合わせ

 簡単に言えば、マイクロサービスはアプリケーション内の個々の機能であり、アプリケーションを構築するための新しいアーキテクチャ・アプローチの基礎を形成します。マイクロサービスを使用することで、ITチームは、ユーザーに必要とされ、競合他社に先んじる必要のあるアプリケーションをより簡単に構築して実行できます。今日の最大のコンシューマーおよびエンタープライズ・アプリケーションの多くはマイクロサービスで実行されており、小規模な組織だけでなく、大規模かつ非常に複雑な組織においてもトレンドになっています。実際、組織が大きくなればなるほど、チームは分散し直接のコミュニケーションも限られることが多いため、マイクロサービスを採用することで得られるメリットはより大きくなります。

 お気に入りのストリーミング・サービスから、最後にメンテナンス通知を受け取ったのはいつでしょうか。それはないはずです。誰かが常に新しい番組を一気に見ているため、これらのサービスを更新するのに良いタイミングは常に存在しません。マイクロサービスの原則では、アプリケーションをAPIを介して通信する小さなユニットに分割する必要があり、この場合、各ユニットは他の部分から独立して更新できます。その結果、ストリーミング・サービスがパスワードリセット機能を更新する必要がある場合、何百万人ものユーザーをオフラインにする必要はありません。この機能は、個別に更新できる別のマイクロサービスです。これは、開発者にとってもユーザーにとっても、メリットとなります。

 マイクロサービスは定着しつつあり、これからのアプリケーションを支えます。では、どのような環境で実行する必要があるのでしょうか。コンテナは、マイクロサービスを動かす最適な環境です。コンテナは、マイクロサービス用の軽量で一貫性のある環境を提供し、開発者のデスクトップからテスト、最終的なデプロイまでアプリケーションを追跡できます。さらに、コンテナは物理マシンでも仮想マシンでも実行でき、仮想マシンよりも高速な数秒または数ミリ秒で起動します。

アプリケーションと全ての依存関係のパッケージ化

 従来、ソフトウェア・パッケージには、WindowsやLinuxなどの特定のオペレーティング・システムでアプリケーションを実行するために必要なすべてのコードが含まれていましたが、アプリケーションを実行するには、アプリケーションコードだけでなく、他のアプリケーションも必要です。たとえば、株価を検索するアプリケーションは、ライブラリを使用して会社名をティッカーシンボルに、またはその逆に変換する必要があるでしょう。この機能は一般的なものであり、付加価値はありませんが、ユーザーが「Apple」と入力して株式「AAPL」を取得できるようにすることは依然として重要です。ライブラリは、依存関係の一例で、 ITチームがそれを知らない場合でも、どのアプリケーションにもこのようなタイプの依存関係が多くある可能性があります。

 さまざまな環境でアプリケーションを簡単に実行できるように、アプリケーションコードをその依存関係とともにパッケージ化するメカニズムと形式を提供したことが、コンテナが注目を集めるようになった理由の1つです。これにより、開発用ラップトップ、テスト環境、本番環境の間の環境互換性と絶えず戦っていた開発者にとって大きな問題が解決されました。コンテナを使用してアプリケーションをパッケージ化することで、「一度コーディングすればどこでも実行」でき、アプリケーションの配信を劇的にスピードアップできます。

すべてのコンテナサービスが同じように提供されるわけではない

 課題に関しては、第1世代のクラウドネイティブ・アプリケーションがステートレスになるように設計されていました。アプリケーションは機能しましたが、関連するボリュームに永続データを保存する必要がなかったコンテナを使用していました。コンテナの利用が進むにつれて、開発者がコンテナ内にステートフル・アプリケーションを構築することが増えています。これは、永続的に保持すべきボリュームにデータを保存する必要があるアプリケーションです。ここで、ストレージの世界で困難が生じます。コンテナの柔軟性とオープン性が、ストレージ層でのハードルとボトルネックに変わり、従来のアプリケーション・スタックで何年も前から当たり前のように使われてきたシンプルなストレージ機能(高可用性、ディザスタ・リカバリ、バックアップ、暗号化)が、コンテナの世界では課題となるのです。さらに悪いことに、アプリケーションごとに独自のストレージ戦略を策定してしまうことがよくあり、組織全体の標準化やデータのコンプライアンスを推進することができません。

 組織全体を標準化するため、ベストプラクティスとして、クラウドネイティブ・アプリケーションと従来型アプリケーションの両方が必要とするデータサービスを提供するソリューションを、Kubernetesネイティブに対しても選択することをお勧めします(従来型アプリケーションはすぐにはなくならないため)。これは、Kubernetesが必要とするオンデマンドでプロビジョニングされた、ブロック、ファイル、およびオブジェクトストレージ・サービスを複数のパフォーマンス・クラスで提供します。また、即時のデータアクセス、あらゆる種類の障害に対する保護、クラウド間、さらにはエッジとの間でデータを移動する機能、およびアプリケーションがどこに移動しても堅牢なセキュリティを提供することができます。実際にKubernetesを活用することで、Kubernetesが現代の組織にとって何か特別なものではなく、必要なものであるということが分かるでしょう。

 コンテナやKubernetesは今、注目を集めている分野の一つです。特に多くの利点があるコンテナは今後、主流になり、急速に成長していくでしょう。ビジネスの成功には、コンテナ利用を開始し、加速するための戦略やプラットフォームを確実に整えることが不可欠です。