[和訳]物理にするか、仮想化にするか。-コンテナ配置に伴う質問- #docker
![](https://www.creationline.com/tech-blog/cms_x3GWkuX/wp-content/uploads/2015/08/small_h-trans.png)
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は To Use Physical Or To Use Virtual: That is the container deployment question (2016/4/29) の和訳です。
コミュニティメンバと何度か次のような会話をしたことがあります。本番稼働用のコンテナ化アプリをどの環境で動かすべきかについてです。
ユーザ:コンテナをどこで起動するべきですか。ベアメタルですか。それとも、VM ですか。
私:これが Docker の素晴らしい点ですが、答えは 1 つではありません。それぞれのアプリケーションやビジネス目標に応じて、物理か仮想か、クラウドかオンプレミスかの選択は変わってきます。それぞれのアプリケーションやビジネスの様々な必要性を考慮して決定します。
ユーザ:それではどれが推奨されてますか。
私:あまり好まれない言葉ですが、答えは“状況次第”です。
ユーザ:うーん、はっきりしないんですね。
私:そうおっしゃると思いました。しかし、これが正しい答えなんです。
テクノロジーの世界には、答えるのが難しい質問があります。そのような質問には、“状況次第”が正しい答えになる場合が多くあります。今回のようなコンテナ上のアプリケーションをどこで起動するかのような問いに対しては、特に正しい答えと言えます。全く同じアプリケーションや全く同じビジネスにおける必要性を持つ会社など存在しないからです。
IT に関連する決定は様々な要素を考慮します。パフォーマンス、スケーラビリティ、信頼性、セキュリティ、既存のシステム、現状の技術力、そしてコストなどがあります。商用環境に Docker ベースのアプリケーションをデプロイする際は、これらすべてを考慮する必要があります。
既存のインフラに拘わらずDocker アプリケーションのデプロイはシームレスに行えます。ベアメタルと VM、データセンタとパブリッククラウドのうちのどれか一つ限定ではありません。所有しているデータセンタではベアメタル上で起動し、クラウドプロバイダ上では VM の利用もできます。
重要なのは 1 つの選択に縛られないことです。アプリケーションが起動するインフラを自由に変更できます。伴う弊害は実質的に一切ありません。
しかし、どのインフラを選択するかを決定しなければなりません。答えは、現状と今後の状況に大きく影響されるでしょう。
「どこで起動するべきですか。」への直接的なお答えはできませんが、何を考慮すべきかは回答できます。
次に挙げるリストは完璧なものではありませんが、最初の取り掛かりとしてご利用ください。
レイテンシ:レイテンシへの十分な対応がされていないアプリケーションは、物理上で優れた動作をします。金融関連のサービスで頻繁に見られます。(トレーディング用のアプリケーションが主な例です。)
キャパシティ:仮想マシンはシステム負荷を最適化する骨組みを作りました。コンテナ化したアプリが物理環境上のキャパシティをすべて消費しないのであれば、まだ仮想化の利点があります。
混合ワークロード:物理サーバーは実行中のシステムで単一のインスタンスを実行します。従って、WindowsとLinuxコンテナを同じホスト上で混合したい場合、仮想化を利用する必要があります。
障害復旧:キャパシティ最適化のように、仮想マシンの素晴らしい利点の一つは、サイト復旧と高可用性についての高度な機能です。これらの機能は物理ホストにも存在するかもしれませんが、仮想化の方が幅広い選択肢があります。
既存の投資と自動化フレームワーク:多くの組織がすでに、インフラストラクチャーにプロビジョニングするために、普遍的なツールのセットを構築済みです。この既存の投資とノウハウを活用することで、新しいものを導入する際に役立つことが多くあります。
マルチテナント機能:お客様の中には、カーネルを共有できないワークロードを使っている方もいます。この場合VMが、ベアメタルでコンテナを実行するのではなく、独立したレイヤーを追加します。
リソースプール/クォータ:多くの仮想化ソリューションには、仮想マシンのリソース利用を制御できる多機能セットがあります。Dockerはリソース制限の概念を提供しますが、ベアメタルでは、あなた自身が自力で行います。
自動化/API:組織内では、ベアメタルをAPIで構築できる人はごくわずかです。最終目標が自動化である場合は、APIが必要でしょうし、そうであればベアメタルを除外するでしょう。
ライセンス費用:ベアメタルで直接実行すれば、ハイパーバイザーライセンスを購入する必要がなくなるので、コストを削減できます。そしてもちろん、コンテナにホストするOSにさえ、一切お金をかける必要がなくなるでしょう。
アプリを実行するにはどこが望ましいかを単に検討するだけでも、プラットフォームの技術的メリットに基づき決断を下すのも非常に力が要ります。また、新しく情報が明らかになった場合に、その決断を簡単に適合させるのも同様に非常に力が要ります。
結果として、「ベアメタルか、それとも仮想化か」という質問は適切でありません。-質問とは、アプリケーションの必要性とビジネスの目標を最も達成するインフラストラクチャーは何かです。そのため、本日正確な回答を申しあげるのであれば、様々なものを上手く組み合わせ、Dockerに慣れることが答えです。慣れてさえいれば、今後のあらゆる変更に対してもすぐに簡単に対応できます。
このシリーズでMike Colemanの投稿をさらに読んでみる:
・コンテナは仮想マシンではない
・コンテナと仮想マシンを一緒に利用する
・アプリケーションの仮想化とDockerは別物である
Dockerに関してさらに学ぶには
・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.10リリースノートを読んでみましょう。
・Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
・DockerCon 2016に登録してみましょう。
・DockerCon EU 2015のビデオを見てみましょう。
・Dockerコミュニティへの貢献を始めましょう。