ITは長年にわたり、大きな変化を幾度も経験してきました。物理インフラから仮想インフラへの移行は、運用パターンとアーキテクチャに大きな変化をもたらしました。しかし、仮想化だけではITの進展には限界がありました。物理コンポーネントを仮想化しても、クラウドネイティブなアーキテクチャは実現しません。そこで登場するのがコンテナ化です。
コンテナは、コードだけでなく、その基盤となるさまざまな依存関係もパッケージ化できる、標準化されたソフトウェア単位です。これにより、アプリケーションをより高速かつ確実に実行し、ある環境から別の環境へ容易に移行できます。
例えばDockerコンテナイメージは、軽量で、独立して動作する実行可能なソフトウェアパッケージです。アプリケーションの実行に必要なコード、ランタイム、システムツール、システムライブラリ、設定など、あらゆる要素を含んでいます。そのため、開発者のツールキットに欠かせない要素として、急速に普及しました。
なぜでしょうか。コンテナはソフトウェアを基盤となる環境から分離します。また、セキュリティも提供します。コンテナにはいくつかのセキュリティ上の弱点が生じる可能性があるものの、コンテナ内のアプリケーションには強力なデフォルトの分離機能が備わっているため、一般的にはセキュリティが向上します。
コンテナ化市場における主なトレンドを以下に紹介します。
分離とポータビリティ
多くの点で、コンテナはVMに似ています。ただし、大きな違いは、分離の仕組みがより緩やかなことです。これにより、複数のアプリケーションでOSを共有できます。コンテナは基盤となるインフラから切り離されているため、そのポータビリティによって、クラウドやOSをまたいだ容易な移行と、クラウドネイティブ開発が可能になります。
その結果、コンテナを利用すれば、開発者はアプリケーションのコーディングに伴う作業の多くを省けます。あらかじめパッケージ化された要素を活用し、アプリケーション固有のニーズに対応するコードだけを書けばよいからです。これにより、ソフトウェアは開発、テスト、デプロイのいずれも容易になります。
DevOpsに必要なのはVMではなくコンテナ
Red Hatによると、多くの
組織がDevOpsの反復的な手法に魅力を感じています。現在では非常に多くの企業で利用されていますが、その可能性を十分に引き出せずに苦労している企業も少なくありません。よく発生する問題の1つがプロビジョニングです。Enterprise Strategy Group(ESG)の調査では、ITプロフェッショナルの67%が、開発者や業務部門のチームを支援するために、インフラのプロビジョニングを迅速化するようプレッシャーを受けていると回答しました。
DevOpsが難しい理由の1つは、開発者が慣れ親しんだ方法、つまりクラウド上で仮想マシン(VM)を稼働させる方法に戻りがちなことです。そして、それがDevOpsの進展を妨げる傾向にあります。コンテナは、DevOpsを構築し、マイクロサービスを活用するための、より自動化されたプラットフォームを提供します。
DevOpsを成功させるには、定型作業を自動化し、標準化された環境を構築する能力が不可欠です。要するに、クラウドネイティブなプラットフォーム上でコンテナ化環境を運用することで、DevOpsへの変革が促進されます。したがって、コンテナの採用がDevOpsの成功を後押しするというトレンドが生まれています。
ハイパースケーラーに追随する
IT調査会社Omdiaによると、コンテナはクラウドサービスプロバイダー、特にGoogle、Amazon、Microsoftなどの大手で盛んに利用されています。Omdiaによれば、Infrastructure as a Service(IaaS)環境で利用されているソフトウェアコンテナのうち、平均45%がクラウドプロバイダー所有のデータセンターに置かれています。
IaaSやPlatform as a Service(PaaS)環境は、長年にわたってクラウドプロバイダーが推奨する選択肢でしたが、最近まで導入率は比較的低いままでした。コンテナがこの流れを変え、IaaSとPaaSを推進する大きな要因の1つとなっています。
ディープラーニングのワークロード
大きなトレンドの1つが、コンテナ内で人工知能(AI)ワークロードを管理することです。コンテナ技術によって、組織は分離、ポータビリティ、無制限のスケーラビリティ、動的な動作を実現できます。そのため、AIインフラの管理は従来より自動化しやすく、容易で、ビジネスに適したものになります。Alluxioのオープンソース担当副社長兼創設エンジニアであるBin Fan氏によると。
「ディープラーニングのワークロードはますますコンテナ化され、自律運用をさらに後押ししています」とFan氏は述べています。「このトレンドに対応するため、組織はKubernetesと連携し、より柔軟なクラウド環境でAIワークロードを実行できます」
ステートフルなワークロード
アプリケーションおよびプラットフォームの開発者は、データをオフロードするためにデータベースなどのリポジトリを切り出す従来の方法から、着実に離れつつあります。その代わり、設計を簡素化し、機能を追加するために、より多くの要素をコンテナ化プラットフォームへ移行できるようになっています。
「コンテナ化は、より多くのステートフルなワークロード、特にデータベースや、Kubernetesおよびコンテナ上でストレージを必要とするものに利用されるようになります」と、VeritoneのCTOであるAl Brown氏は述べています。
このトレンドの一環として、開発者はAmazon Elastic Container Service(ECS)のような汎用クラウドサービスや、Amazon Fargateのサーバーレスコンピューティングプラットフォームから、より高いリソース効率を提供するOpenShiftなどのKubernetesベースのサービスへ移行しています。
「これは、イノベーションのクラウド固有バージョンから、KubernetesやOpenShiftのより標準的なバージョンへ移行する動きです」とBrown氏は述べています。