どのように、サーバ仮想化の技術は進化したのか
ホスト型、ハイパーバイザ型、コンテナ型には、どのような違いがあるのか
サーバ仮想化とは、物理サーバのリソースを抽象化することで、リソースを統合・分割して運用する技術であり、ホスト型、ハイパーバイザ型、コンテナ型という3タイプが存在する。
ホスト型のサーバ仮想化では、ホストOS上の仮想化ソフトウェアの上で、「アプリケーション実行環境(仮想マシン)=アプリケーション-ミドルウェア-ゲストOS」が動く。
ハイパーバイザ型では、ハイパーバイザの上で、「アプリケーション実行環境(仮想マシン)=アプリケーション-ミドルウェア-ゲストOS」が動作する。
そしてコンテナ型では、ホストOS上でコンテナ管理ソフトウェア(コンテナエンジン)が動作し、コンテナエンジンの上で、「アプリケーション実行環境(コンテナ)=アプリケーション-ミドルウェア」が動作する。
つまり、サーバ仮想化を実現するシステムの構造が異なるのだ。
高速な動作と簡易な環境構築のため、コンテナ仮想化は生まれた
サーバ仮想化の技術が「ホスト型⇒ハイパーバイザ型⇒コンテナ型」と進化してきたのは、アプリケーションの動作速度の遅延、動作に求められるリソースの不足、環境構築の手間といった課題を解決するためだ。
ホスト型からハイパーバイザ型への進化では、ハイパーバイザというコンピュータ(ハードウェア)を仮想化するソフトウェアの導入により、ゲストOSから直接ハードウェアを制御でき、複数の仮想マシンを効率よく稼働できるようになった。
そのため、アプリケーションの実行速度低下を最低限に抑えられ、仮想マシンの容易な環境移行も可能である。
一方、ハイパーバイザ型からコンテナ型への進化では、1つのOS上ですべてのコンテナが動作し、コンテナ単位でOSを立ち上げたり、管理したりする必要がなくなった。
そのため、プロセッサやメモリやストレージの消費が抑えられて高速な動作が可能になり、環境構築に必要な手間と時間を大幅に削減できるようになった。
ただし、コンテナ仮想化には、「ホストOSに対応していないアプリケーションは実行できない」「ホストOSに負荷が集中するため、別のコンテナにおける負荷の影響を受けやすく、セキュリティ上のリスクも高い」などのデメリットもある。