2020年4月3日

クラウドネイティブなオープンソースのKubernetesが注目される理由

アプリケーション、マイクロサービス、ソフトウェア デファインド インフラストラクチャなどのアジャイルな開発とデリバリの実現には、オープンソースのKubernetesが最適です。

今日ではあらゆる規模のビジネスでデジタルトランスフォーメーションが推進されており、効率性、明確性、スピードの向上などを目的として、アプリケーションやビジネスプロセスの抜本的な見直しが図られています。このトランスフォーメーションを強力に後押ししているのが、クラウド革命の先駆けともなり、オンデマンドの柔軟性、アップタイムの向上、コストの削減などを可能にする、コンテナーおよびマイクロサービスベースのアーキテクチャーです。オープンソースのフレームワークは企業が求める多様なユースケースに容易に適合できるため、クラウドネイティブテクノロジーが至る所で活用され始めています。

クラウドネイティブであるとは、アプリケーションやサービス、およびその開発手法が、スケーラブルで、信頼性に優れ、パフォーマンスが高いという特徴を持つことを意味します。クラウドネイティブなアーキテクチャーは、大規模でモノリシックなアプリケーションではなく、軽量コンテナー内で実行されるマイクロサービスで構成されます。また各アプリケーションの基盤となるネットワークおよびハードウェアインフラストラクチャも、それ自体がソフトウェア構成要素です。

多くのIT部門では、クラウドネイティブなオープンソースのアプリケーションやサービスの開発を目的として、DevOpsチーム (職務横断型の小規模な開発運用チーム) への再編が進められています。個々のチームは、アプリケーションまたはサービス (マイクロサービス) のごく一部分を担当し、アプリケーションの残りの部分との統合に責任を負います。このようにして開発されるアプリケーションやサービスは、動作の安定性やリソース効率に優れ、エラーから手際よく復旧することが可能です。

こうした環境の中核に位置するのがKubernetesで、ソフトウェアベースのインフラストラクチャ、サービス、およびアプリケーションの実現に、このコンテナーオーケストレーターを使用する開発者が増加しています。Kubernetes (K8s) は、コンテナ化アプリケーションの展開、拡張、および管理を自動化するオープンソースのシステムです。この重要な役割のために、Kubernetesを利用する企業にとって、Kubernetesがクラウドネイティブかつオープンソースであることが、互換性のないコード、アップグレードの失敗、最終的な廃止といったリスクを最小限に抑制するうえで大きな意味を持ちます。

 

エンタープライズアーキテクチャーの中核を担うKubernetes

今日の企業は、スケーラブルなビジネスクリティカル アプリケーションの構築、展開、および運用を、オープンソースソリューションのエコシステムに依存する度合いを強めています。このエコシステムの中心にあるのがマイクロサービスとコンテナーです。開発者らはこれらの構築に、オープンソースのフレームワーク、クラウドネイティブなAPI、オーケストレーター、メッシュ、および基盤となるインフラストラクチャを使用し、さまざまなレベルの抽象化を利用することで、可用性に優れたスケーラブルで堅牢なシステムを実現しています。

Kubernetesはオープンソースエコシステムの柱として、クラウドネイティブなソフトウェアを支えています。このコンテナーオーケストレーターは必要に応じた拡大/縮小が容易で、クラッシュまたは劣化したコンテナーを自動的に再起動したり、ダウンタイムなしにアプリケーションを自動更新したりすることも可能です。

Kubernetes環境におけるコンテナーイメージの標準はDockerです。2013年に登場したオープンソースのDocker Engineは、コンテナーに関する既存のLinux概念を活用して、開発者や運用担当者がアプリケーションを基盤となるOSやインフラストラクチャから簡単に分離できるようにしました。Dockerコンテナーは大きな成功を収めており、先進的なアプリケーションアーキテクチャーのビルディングブロックとして至る所で活用されています。なおオープンソースプロジェクトのDockerとは別に、Dockerという企業も存在しており、独自のコンテナーオーケストレーション エンジンなどの機能を組み込んだプレミアムバージョンを販売しています。そのためDockerは、Kubernetesと競合すると同時に、Kubernetesを支える存在でもあります。

コンテナーベースのアーキテクチャーとKubernetesは、この5年間で最先端技術からメインストリームへと発展を遂げました。451 Research社は、アプリケーションコンテナーテクノロジーの市場規模が2022年には43億ドルに達すると見ています。これは2019年の推定市場規模である21億2,600万ドルの2倍以上で、2017年から2022年にかけての年平均成長率は30%に達する見込みです。

現在どれほどの数のコンテナーが存在しているかを見積もることは不可能ですが、コンテナーの70~85%が何らかのKubernetesフレーバー上で実行されていると推測されます。最も人気が高いフレーバーは、特定ベンダーのフレーバーではなく、直接的なオープンソースのKubernetesです。Kubernetes革命は減速の兆しを見せておらず、Deloitte社は2020年にはエンタープライズアプリケーションの75%が (購入されるのではなく) 内部開発されるようになると予測しています。

 

クラウドネイティブとオープンソース

遡ること2017年11月に、Cloud Native Computing Foundation (CNCF) により、Kubernetesプロジェクトのための標準化されたAPIセットが確立されました。CNCFによって確立された標準、ガバナンス、認証、および適合性テストにより、ある認定Kubernetesディストリビューション上で動作するワークロードが他の認定バージョン上でも正しく動作することが保証されるため、Kubernetesの導入に伴うリスクが最小限に抑制されます。Kubernetesの分岐バージョンは、アプリケーションの機能を損なう恐れがあります。

CNCFは、ベンダーまたはコミュニティにより開発される個々のKubernetesバージョンが必須のAPIをサポートしていることを保証する、Certified Kubernetes Conformance Program (Kubernetes適合性認定プログラム) を運用しています。これにより、さまざまなKubernetesバージョン、インスタレーション、およびベンダー間の一貫性と相互運用性が保証されます。オープンソースのKubernetesにベンダーが存在するのを不思議に思われた方もあるかもしれませんが、これらのベンダーは一元的な販売・サポート体制によるメリットに加えて、ベンダー固有のアプリケーションスタックや管理ツールとの統合機能も提供しています。ベンダー各社は、コミュニティにより提供済みの最新機能をユーザーが利用できるように、タイムリーなアップデート (少なくとも年1回) を行うことを求められています。またエンドユーザーは、CNCFが使用しているのと同じオープンソースの適合性評価アプリケーションを実行することにより、自分が使用しているKubernetesディストリビューションまたはプラットフォームが適合性を維持しているかどうかを確認できます。

今日ではソフトウェアベースのインフラストラクチャサービスが増えつつあり、Kubernetesはそうしたソフトウェアの運用にも使用されています。またコンテナー内で実行されるクラウドネイティブなアプリケーションは、さまざまなアプリケーションサービスを必要とします。これらのアプリケーションが正しく動作するためには、ルーティング (イングレス制御)、サービス検出、ロードバランシング、APIセキュリティと管理、監視などの機能が欠かせません。こうしたアプリケーションサービスの大半もコンテナ化されており、サポート対象のアプリケーションとともにクラスター内に展開され、そのすべてがKubernetesによってオーケストレーションされます。

このようにKubernetesは、アプリケーションやサービスを実行するコンテナーのオーケストレーションに加えて、基盤となるインフラストラクチャを提供する役割も担っている点に注目してください。DevOpsプロセスを最適化するために、多くの企業では、Kubernetes環境下のコンテナー内にアプリケーションを展開する際に、インフラストラクチャが (コンテナー内) に自動的にプロビジョニングされるように構成しています。このことはKubernetesがアプリケーション、サービス、およびインフラストラクチャのためのミッションクリティカルなプラットフォームとなっていることを意味します。

Kubernetesにすべてを委ねることを選択した企業にとって、リスクを最小限に抑制するために、Kubernetes自体がクラウドネイティブかつオープンソースの状態に維持されることが重要になります。そのために欠かせないのがオープンソースとオープン標準で、それぞれがもたらすメリットの違いを把握することも大切です。

多くの企業がオープンソースソフトウェアの利点と考えているのが、オープンソースの場合はコードが仕様どおりの処理を実行していること (および仕様にない処理を実行していないこと) を自身で検証できる点です。企業はオープンソースのKubernetesのコードを調べて、セキュリティポリシーや政府規制に準拠しているかどうかを確認できます。さらに万一コミュニティによるKubernetesの新規バージョンの開発が停止されたとしても、企業自身がこのオープンソースソフトウェアを修正、更新、アップグレード、および調整することも可能です。2020年を迎えた今日、仕様にない動作、ロックイン、老朽化、廃止などの恐れがある独自仕様のクローズドテクノロジーをインフラストラクチャの中核に据えたいと考える企業はもはやないでしょう。

ソフトウェアおよびソフトウェアフレームワークはKubernetesと通信するために一貫性のある承認済みのAPIを必要とし、またKubernetes自身も下位のインフラストラクチャと通信するために同様のAPIを必要とします。この連鎖の切れ目は障害につながります。例えばKubernetesのヘルスチェックで不合格になったコンテナーが再起動されたが、最近変更された互換性のないAPIが必須のネットワークリソースを起動できなかったために、アプリケーションのミッションクリティカルな機能が失われるといったケースです。こうした問題を避けるためには、APIの文書化、標準化、および一貫性が適切に維持されることが重要で、さもなければ大量のベアメタルやコードを結び付けるソフトウェアインフラストラクチャが混乱に陥る恐れがあります。

 

クラウドネイティブなオープンソースのKubernetesの利点

クラウドテクノロジーの利点は広く知られており、人気が高まっています。今日では競争力の強化を目的として、拡張性と可用性に優れたマイクロサービスベースのコンテナ化アプリケーションを利用する企業が増えています。Kubernetesはこうした環境の構築に役立ち、またオープンソースのクラウドネイティブなKubernetesにはロックインのリスクもありません。

Kubernetesは、インフラストラクチャリソースのプロビジョニング、構成、管理、および廃止に要する時間と労力の節減に大きな効果を発揮します。DevOpsチームはコードプッシュを自動化することで、継続的インテグレーション、自動ユニットテスト、ゼロダウンタイム展開などを実現できます。また開発者はビジネス問題への対応が容易になり、フレームワーク間の緊密な統合によりコードを迅速にリリースして、イノベーションを推進できます。

Kubernetesによってオーケストレーションされるコンテナーベースのアーキテクチャーを使用することで、企業はコストのかかる専用の常時稼動インフラストラクチャから脱却し、節減できた経費を革新的なソフトウェアの開発に振り向けられるようになります。Kubernetesにコンテナーリソースの稼働率や状態を監視させ、必要に応じてコンテナーを再起動または追加するように構成することも可能です。また疎結合されたマイクロサービスと、Kubernetesに組み込まれた自動復旧やスケーラビリティの組み合わせによるコスト削減効果も期待されます。

今日の企業は継続的なイノベーションを求められており、絶えず新たな製品を開発し、既存の製品やサービスに機能を追加する必要があります。そのためには既存の環境を危険にさらすことなく変革を推進できる、拡張性と信頼性に優れたアーキテクチャーが不可欠です。こうしたアーキテクチャーを構築することで、アプリケーション全体を毎回再構築することなく、アプリケーション機能を柔軟に追加または更新できるようになります。Kubernetesによってオーケストレーションされるマイクロサービスベースのコンテナ化アプリケーションは、このようなアジリティの実現に大きく貢献します。

 

急成長を続けるKubernetes

2011年にMarc Andreesen氏が当時の状況を「ソフトウェアが世界を飲み込みつつある」と表現したのは有名ですが、2020年の今日ではKubernetesが世界を飲み込みつつあります。Kubernetesはテストや展開の自動化機能により、マイクロサービスアーキテクチャーへの移行を促進します。このコンテナーオーケストレーターは、シンプルかつ明瞭なYAMLベースの構成ファイルに依存しており、ソフトウェアインフラストラクチャのオンザフライでの変更 (およびロールバック) が開発者1人でも実行できるほど容易です。またDevOpsチームは、ローリング展開、コンテナーのヘルスチェック、自己修復アプリケーションなどによりゼロダウンタイムを実現できます。

クラウドネイティブなオープンソースのKubernetesは、ほぼあらゆる場所で実行可能です。Kubernetes向けアプリケーションの開発では、任意のインフラストラクチャ上に同一コードを何度も繰り返し展開できます。すなわち標準に準拠したオープンソースのKubernetesを実行している企業では、クラウドネイティブなワークロードを、データセンター、ハイブリッドクラウド、パブリッククラウド、さらにはエッジデバイスなど、さまざまな環境で実行することが可能になります。

この記事/コンテンツは、記載されている特定の著者によって書かれたものであり、必ずしもヒューレット・パッカード エンタープライズの見解を反映しているわけではありません。

enterprise.nxt

ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。

ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。

enterprise.nxt
ニュースレターのご登録

enterprise.nxtから最新のニュースをメールで配信します。