私は、コンテナ化されたアプリケーションを本番環境で実行する場所を整理しようとしているコミュニティメンバーと、次の会話のバージョンを数回以上持っています。
ユーザー:では、コンテナはどこで実行すればよいですか? ベア メタルまたは VM
私:それは「どちらか/または」の問題ではありません–それがDockerの美しさです。 その選択は、アプリケーションとビジネス目標(物理または仮想、クラウドまたはオンプレミス)に適したものにのみ基づいています。 アプリケーションとビジネスのニーズに応じて組み合わせます(そして変更します)。
ユーザー:しかし、確かにあなたは推薦を持っています。
私:私はあなたに誰も好きではない2つの単語の答えを与えるつもりです:それは異なります。
ユーザー:そうです、私はその答えが好きではありません。
私:私はあなたがそうしないだろうと思っていましたが、それは本当に正しい答えです。
テクノロジーの世界には難しい質問があり、「状況によって異なります」という答えは、しばしば警官になる可能性があります。 しかし、コンテナ化されたアプリケーションをどこで実行するかというと、まったく同じアプリケーションは2つとなく、まったく同じビジネスニーズを持つ企業はないため、本当に最良の答えです。
ITの決定は、パフォーマンス、スケーラビリティ、信頼性、セキュリティ、既存のシステム、現在のスキルセット、コストなど、無数の変数に基づいています。 誰かがDockerベースのアプリケーションを本番環境にデプロイする方法を決定するときは、これらすべてのことを考慮する必要があります。
Dockerは、基盤となるインフラストラクチャに関係なく、アプリケーションをシームレスにデプロイできるという約束を果たします。 ベア メタルまたは VM。 データセンターまたはパブリッククラウド。 一体、データセンターのベアメタルと、アプリケーションやビジネスで必要な場合は、複数のクラウドプロバイダーのVMにアプリをデプロイします。
ここで重要なのは、1つのオプションに縛られていないことです。 あるインフラストラクチャから別のインフラストラクチャにアプリを簡単に移動できます。 摩擦は基本的にゼロです。
しかし、その自由はまた、それらのアプリをどこで実行するかを決定するプロセスを実際よりも困難に思わせます。 答えは、あなたが今日何をしているのか、そしてあなたが将来何をする必要があるのか に影響を与えるでしょう。
したがって、「アプリをどこで実行すればよいか」と完全に答えることはできませんが、その決定を下すときに考慮すべき事項のリストを提供することはできます。
このリストは完全にはほど遠いと確信していますが、会話を開始して歯車を回すのに十分であることを願っています
待機時間: 待機時間の許容度が低いアプリケーションは、物理環境でより適切に機能します。 これは、金融サービスでかなり見られます(取引アプリケーションが代表的な例です)。
容量: VM は、システム負荷を最適化することで骨を作りました。 コンテナー化されたアプリが物理ボックス上のすべての容量を消費しない場合でも、仮想化には利点があります。
混合ワークロード: 物理サーバーは、オペレーティング システムの 1 つのインスタンスを実行します。 したがって、同じホスト上でWindowsコンテナとLinuxコンテナを混在させる場合は、仮想化を使用する必要があります
ディザスター リカバリー: 繰り返しになりますが、容量の最適化と同様に、VM の大きな利点の 1 つは、サイトの回復と高可用性に関する高度な機能です。 これらの機能は物理ホストに存在する可能性がありますが、仮想化には幅広いオプションがあります。
既存の投資と自動化フレームワーク :多くの組織は、インフラストラクチャのプロビジョニングなどに関する包括的なツールセットをすでに構築しています。 この既存の投資と専門知識を活用することは、新しい要素を導入するときに非常に理にかなっています。
マルチテナント: 一部のお客様は、カーネルを共有できないワークロードを持っています。 この場合、VM は、ベア メタルでコンテナーを実行する場合と比較して、追加の分離レイヤーを提供します。
リソース プール/クォータ: 多くの仮想化ソリューションには、仮想マシンがリソースを使用する方法を制御するための幅広い機能セットがあります。Dockerは リソース制約の概念を提供しますが、ベアメタルの場合は一種のものです。
自動化/API: 通常、API からベア メタルをプロビジョニングできるユーザーはほとんどいません。 目標が自動化である場合は、APIが必要になりますが、それはおそらくベアメタルを除外します。
ライセンスコスト:ベアメタルで直接実行すると、ハイパーバイザーライセンスを購入する必要がないため、コストを削減できます。そしてもちろん、コンテナをホストするOSに何も支払う必要がない場合もあります。
プラットフォームの技術的なメリットのみに基づいてアプリを実行する場所を決定でき、新しい情報が明らかになった場合にその決定を簡単に調整できることには、非常に強力なものがあります。
結局のところ、問題は「ベアメタルまたは仮想」であってはならず、どのインフラストラクチャがアプリケーションのニーズとビジネス目標に最も適しているかということです。したがって、組み合わせて適切な答えを今すぐ作成し、Dockerを使用すると、将来の変更に迅速かつ簡単に対応できることを知ってください。
このシリーズの マイク・コールマン による続きを読む:
次のリソースを確認して、Docker とコンテナーの詳細について学習を開始してください。
ドッカーについてもっと知る
- ドッカーは初めてですか? 10分間の オンラインチュートリアルをお試しください
- 無料の Docker Hub アカウントでイメージを共有し、ビルドを自動化します
- Docker 1.11 リリースノートを読む
- ドッカーウィークリーを購読する
- 今後の Dockerオンラインミートアップにサインアップする
- 今後の Docker ミートアップに参加する
- DockerCon EU 2015 のビデオを見る
- Docker への貢献を開始する