コンテナのデプロイとは
コンテナは、ソフトウェアをビルド、パッケージ、デプロイするための手法の一つです。コンテナには、コード、ランタイム、ライブラリのほか、コンテナ化されたワークロードで実行する必要のあるその他すべてのものが含まれます。
コンテナのデプロイとは、コンテナをクラウドやオンプレミスのサーバなどのターゲット環境にプッシュする(デプロイする)ことを指します。1 つのコンテナにアプリケーション全体が含まれる場合もありますが、実際のコンテナのデプロイでは通常、複数のコンテナが使用されます。つまり、複数のコンテナをターゲット環境にプッシュします。動的で大規模なシステムでは、1 日に数百、数千のコンテナをデプロイすることもあります。
コンテナは、アプリケーションに応じてすばやくスピン アップおよびスピン ダウンできるように設計されています。これは、コンテナがマイクロサービスのビルド、パッケージ、デプロイの手法としてよく使われるためです。マイクロサービスとは、大規模なソリューション(モノリスまたはモノリシック アプリケーションとも呼ばれます)をより小さな論理ユニットに分割するソフトウェア アーキテクチャです。そのように分割されたマイクロサービスは、それぞれ別個のコンテナ内で独立して実行されます。最新のソフトウェア開発手法であるマイクロサービスには、デプロイおよびその後のコード変更のスピードを向上させるなど、数多くのメリットがあります。

Kubernetes の現状

Kubernetes 上での開発者体験を改善し、ソフトウェア デリバリを加速する 7 つの方法
コンテナのデプロイのメリット
コンテナ、およびオーケストレーション ツールなどのコンテナ関連テクノロジーは、今日のソフトウェア開発チームにとって、さまざまなメリットを提供する魅力的な技術です。特に、デジタル トランスフォーメーションの目標に取り組んでいるチームや、ソフトウェア製品のデリバリを従来よりも高速かつ高頻度にする必要があるチームには大きな価値をもたらします。コンテナのデプロイには次のようなメリットがあります。
スピード:コンテナは、特に CI/CD パイプラインで使用される場合、より高速かつ頻繁なデプロイの実現に向けた取り組みに貢献します。コンテナは一般的に、コンテナ オーケストレーションや、CI/CD による自動化の推進と同様に、インフラストラクチャのプロビジョニングやテストなど、コードの本番リリースのために必要な運用タスクを簡素化します。
俊敏性と柔軟性:コンテナは、スピン アップや使用後の破棄を、必要に応じて迅速に行えるように設計されています。つまり、流動的で進化し続けるビジネスの目標や状況に対応しやすいということです。特にマイクロサービス アーキテクチャと組み合わせて使用する場合、互いに分離されているという性質をもっているため、セキュリティ制御を強化できる、アプリケーション全体を再デプロイすることなくコンテナ化されたワークロードを更新できるなど、その他のメリットも得られます。
リソースの活用と最適化:コンテナは、基盤となる OS やインフラストラクチャから抽象化されています。そのため、軽量でシステム リソースへの負荷が少なくなります。これは、すべてのアプリケーションに各々のゲスト OS が必要となる仮想マシンとは大きく異なる点です。コンテナでは、複数のアプリケーションが同じ OS を共有できるので、複数のアプリケーションを同じマシンの共有リソース上で実行することができます。この効果は密度の向上とも呼ばれますが、同じホスト上で多くのコンテナを実行できることを意味します。
あらゆる環境で実行可能:基盤となる OS やインフラストラクチャから抽象化されているというコンテナの特長は、どのような環境でも一貫性のある方法で実行できるというメリットにもつながります。コンテナのデプロイ先の環境を問わず、コード(およびコンテナの稼働に必要なものすべて)は同一の方法で実行されます。パブリッククラウドやプライベートクラウド、オンプレミスのサーバやホスト型サーバ、開発者のラップトップなど、コンテナはあらゆる環境で一貫性のある方法で実行できるように設計されています。
コンテナのデプロイを利用する理由
コンテナのデプロイは、前述のマイクロサービス アプローチなど、さまざまな最新のソフトウェア戦略およびインフラストラクチャ戦略の推進に適しています。コンテナは実行環境から抽象化されているため、アプリケーションのデプロイの高速化と IT 運用チームのコスト削減に役立ちます。
その結果、コンテナ化されたアプリケーションは、ソフトウェア開発に対する従来のモノリシック(「レガシー」)アプローチから脱却した DevOps チームやその他の組織の間で人気の高い選択肢になっています。コンテナのデプロイは、継続的インテグレーション(CI)および継続的デリバリ(CD)のプロセスやツールとの組み合わせにも適しています(この「CD」と同じ頭字語で、関連しつつも異なる領域の概念を意味するもう一つの「CD」は継続的デプロイです。この概念は、継続的デリバリをさらに一歩進めて、コードの本番環境へのデプロイを、手動による承認プロセスを排して包括的に自動化することを指します)。
また、コンテナ化技術やコンテナのデプロイは、マルチクラウドやハイブリッドクラウドなどの分散された、または異種混在のインフラストラクチャ環境とも相性のいい技術です。
コンテナをデプロイする方法
コンテナのデプロイにはさまざまなツールを利用できます。たとえば、Docker はコンテナ プラットフォームおよびコンテナ ランタイムとして人気が高く、多くの開発者や開発チームがコンテナのビルドとデプロイに使用しています。Docker をコンテナのデプロイに使用するための出発点は、コンテナ用の Docker イメージをビルドすることです。また、Docker Hub リポジトリから既存の Docker イメージを入手することもできます。Docker Hub リポジトリでは、人気のあるサービスやアプリケーションのニーズに応じた、事前構成済みのイメージが提供されています。Docker のドキュメントには、利用を開始する際に役立つ詳細な技術説明文書があります。
各種の構成管理ツールや Infrastructure as Code ツールを利用すると、コンテナのデプロイの全体または一部を自動化するスクリプトを作成できます。これらのツールの多くは、Docker などのコンテナ プラットフォームと連携しています。こうしたツールにはそれぞれ、コンテナのデプロイやアプリケーションの構成を自動化するための独自の方法が備わっており、技術的な手順書も提供されています。構成管理ツールや Infrastructure as Code ツールを使ってスクリプト(プラットフォームごとに名前は異なります)を作成することで、コンテナのデプロイと管理における特定のタスクを、構成に関するベスト プラクティスに基づいて自動化できます。
関連するソリューションおよび製品
VMware Tanzu for Kubernetes Operations
最新のマルチクラウド コンテナ インフラストラクチャの基盤
VMware Tanzu Application Platform
Kubernetes 環境でマルチクラウド対応の優れた開発者体験を提供
VMware Tanzu Community Edition
VMware Tanzu の無償試用を開始