検索
特集/連載

コンテナ実行環境として最適なのはベアメタルか仮想化環境かメリット/デメリットを考える

コンテナを実行する環境として、ベアメタルと仮想化環境が考えられる。当然ながらどちらにもメリットとデメリットがある。自社が重視すべき要件は何か。

Share
Tweet
LINE
Hatena

 コンテナは「例外なく使われる」というほどではないが、多くの企業がコンテナをどこかにデプロイしているか、コンテナの機能を調査している。

 コンテナのクラスタとオーケストレーションを仮想化環境で運用する場合も多いが、そうしなければならないわけではない。コンテナはベアメタルでも直接実行できる。本稿では、コンテナを実行する場所という点からベアメタルと仮想マシン(VM)の違いを見ていく。

コンテナを実行するのはベアメタルかVMか

 コンテナは仮想化の形式の一つだ。アプリケーションの実行に必要なマイクロサービスとアプリケーションがホストサーバのOSで実行される。コンテナとOSの間に存在するのはコンテナエンジンのみだ。これに対し、仮想サーバ環境ではハイパーバイザーがホストOSで実行され、最上位にはゲストOSが位置する。この環境でアプリケーションが実行される。

 コンテナをVMとベアメタルのどちらで実行するかという疑問のほとんどはこの事実に由来する。

パフォーマンス、利便性、コスト

 コンテナインフラをデプロイするかどうかの判断は、パフォーマンスと利便性の対比が軸になる。利便性が高いのは、コンテナオーケストレーターとそのノードをVMで運用する方法だ。だがパフォーマンスが若干失われる。ベアメタルのパフォーマンスメリットを得たい場合は、オンプレミス環境を独自に運用してハイパーバイザーの利便性を補う作業を自身で行う必要がある。

 コストも問題になる。ベアメタルサーバでは軽量版「Linux」(旧「CoreOS」とその子孫)を実行できるため、ハイパーバイザーライセンスコストの多くを回避できる。ただし、仮想化環境で利用できる高度な機能は得られない。

仮想化のメリットとデメリット

 ホストOSに仮想化レイヤーを重ねることは、ソフトウェアのレイヤーを加えることを意味する。これにはメリットもデメリットもある。

 仮想化環境ではハイパーバイザーが多くの機能を提供し、ハードウェアを最大限に活用できるようにする。この環境ではホストOSを共有しなくてもホスト同士でワークロードを簡単に移行できる。これは特にコンテナにとっては極めて便利だ。移植性は望ましいことだが、これは組み込まれているOSによって左右される。

 仮想化で得られるメリットには犠牲が伴う。抽象化レイヤーが重なることで、単純に物理リソースが多くのコンピューティング処理を行わなければならない。

 ベアメタルと仮想化環境で実行されるコンテナの最も顕著な違いはパフォーマンスだ。仮想化環境にはオーバーヘッドがあり、ベアメタルはVMよりも25〜30%パフォーマンスが優れていることがStratoscaleによるベンチマークテストで明らかになっている。

 VM環境では、起動時に確保されたストレージなどのリソースがプロビジョニングされた状態のままになる傾向がある。ベアメタルやクラウドでの使用を目的とした「Kubernetes」を提供しているDiamantiによると、仮想化環境でのリソース使用率を15%下げ、ハードウェア使用率を5分の1に削減できるという。

ベアメタルのデメリット

 ベアメタルのコンテナにはデメリットがある。

 最も重要なのはコンテナ環境がOSに依存することだ。Linux用に構築されたコンテナはLinuxでしか実行できない。これにより移行が制限される可能性がある。クラウドならば移行できる可能性があるが、コストが高くなる恐れがある。オンプレミスとクラウド間でワークロードを移行できることがコンテナの主なメリットの一つだと考えると、この問題は良いニュースとは言えない。

 ベアメタルには、仮想化環境ならば使えるロールバックやスナップショットといった機能が不足している。コンテナをベアメタルにデプロイすると、冗長性を通じたリスクの緩和が困難になる恐れがある。VMならノードをVM間に分割できるかもしれない。だが、コンテナノードをベアメタルにインストールすると、ノード数が少なくなり移植性や共有性が低下する可能性がある。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る