では、コンテナまたはVMはいつ使用しますか?

最近、私はトレードショーでDockerの基本と、アプリケーションがアイデアからユニバーサルコントロールプレーンで管理されたSwarmクラスターで実行される本番ワークロードに移行する方法について講演していました。 その講演の一環として、コンテナーが VM ではないことについて話しました。 出席者のほとんどが現在仮想化システム管理者として働いていたため、これは特に関連性がありました。

セッションの QA の部分で、出席者の 1 人から "アプリケーションはいつ VM に入り、いつコンテナーに入るのか" と聞かれました。

もちろん、私はこれらの種類の質問(パットの答えがない質問)に対する私の答えを始める方法で私の答えを始めました。 「ホストで実行できるコンテナーの数はいくつですか」や「物理または仮想のどちらにデプロイするか」などの質問。

私は答えました:「それは異なります」(聴衆からの聞こえるうめき声を挿入し、あなたからも私は想像します)

物理サーバーと仮想サーバーでのDockerコンテナの実行に関する前回のブログ投稿で書いたように、変数が多すぎます。

ただし、以前の投稿で行ったように、アプリケーションをデプロイする場所を検討する際に考慮する必要がある 3 つの異なるシナリオを示します。

さらに深く掘り下げる前に、Dockerは従来の仮想化と同じではないことを繰り返します。 類似点はありますが、Dockerの中核となるのは、アプリケーションを迅速かつ最高レベルの柔軟性で提供することです。 さらに、理想的な展開では、コンテナベースのアプリケーションは、仮想マシンに見られる従来のモノリシックモデルとは異なり、一連のステートレスマイクロサービスとして提供されます。

そのコンテキストを使用して、アプリケーションをデプロイする場所を決定するときに考慮すべき 3 つのシナリオを次に示します。

1)新しいアプリケーションをゼロから始める(または既存のアプリケーションをゼロから書き直す)場合、マイクロサービスベースのアーキテクチャを中心に記述することに専念している場合、コンテナは簡単です。

企業は既存のモノリシック アプリはそのまま残し、Docker コンテナーとマイクロサービスを使用して次のバージョンを開発します

Dockerを活用することで、企業はアプリケーションの開発と配信の取り組みを加速しながら、ほぼすべてのインフラストラクチャで変更なしで実行できるコードを作成できます。

2)マイクロサービスに基づくソフトウェアの開発に取り組んでいますが、アプリが完全に書き直されるまで待つのではなく、Dockerのメリットをすぐに享受し始めたいと考えています。 このシナリオでは、お客様は既存のアプリケーションを VM から Docker コンテナーに "リフト アンド シフト" します。

モノリシック アプリケーションをコンテナーで実行すると、開発チームはそれを少しずつ分解し始めることができます。 一部の関数をモノリスから移動し、Docker コンテナーに疎結合サービスとしてデプロイを開始できます。

新しいコンテナーは、必要に応じて古いレガシ アプリケーションと対話でき、時間の経過とともにアプリケーション全体が分解され、Docker コンテナー内に一連のポータブルでスケーラブルなサービスとしてデプロイされます。

3)企業がDockerが提供するいくつかの利点を望んでおり、モノリシックアプリケーションを書き換えるつもりなしにVMからコンテナに移動する2番目のケースとよく似ています。

通常、これらのお客様は、Docker コンテナーがすぐに使用できる移植性の側面に関心があります。 CIO があなたのところに来て、「データ センターで実行した 1,000 台の VM を来週の終わりまでにクラウドに保存したい」と言った場合を想像してみてください。 これは、最も筋金入りのVM忍者にとっても困難な作業です。 データセンターからクラウドへの移植性は、特にベンダーを変更したい場合は、うまくいきません。 データセンターに vSphere があり、クラウドが Azure であるとします — VM コンバーターは、その可能性があります。

ただし、Dockerコンテナでは、これはかなり歩行者の作業になります。 Dockerコンテナは本質的に移植性があり、VMまたはクラウドで変更せずに実行でき、コンテナはVMからVMへ、ベアメタルへと移植可能であり、移行を容易にするために多くの手間をかけずに実行できます。

これらのシナリオのいずれかがあなたに共鳴する場合は、おそらくDockerを試す良いケースがあります。

このシリーズでもっと読む:
  • 物理を使用するか、仮想を使用するか:それがコンテナのデプロイに関する質問です
  • アプリケーションの仮想化とDockerがあります
  • コンテナーと VM の連携
  • コンテナーは VM ではありません
開始するためのその他のリソース:

ドッカーについてもっと知る