仮想化技術(VMとコンテナ)
一つのサーバーの上で複数のサービスを動作させる場合、そのサービス同士が互いに影響を与えないようにしたくなることがよくあります。そのようなときに、それぞれのサービス同士を隔離させ、かつコンピュータの資源を効率的に使う方法として、仮想化技術と呼ばれるものがあります。主要な仮想化技術としてはVM(仮想マシン)とコンテナがあります。
VMは1台のコンピュータの上でコンピュータの動作を仮想化する技術です。この技術により、1台のコンピュータの中にあたかも複数の仮想的なコンピュータ(VM)があるかのように扱うことができます。同じコンピュータの中ですがVM同 士の環境は隔離されており、互いに影響を与えることはありません。中でVMを動かす(一般的には物理的な)コンピュータのことをホスト、上で動くVMのことをゲスト、VMを管理するソフトウェアのことをハイパーバイザと呼びます。ゲストではホストとは別のOSが動いており、ハイパーバイザはその上で動くゲストのOSに対し、直接物理マシン操作しているかのように見せます。
コンテナはLinuxなどのOSの機能をうまく使って各アプリケーションを隔離する技術です。ホストとゲストで別のOSが動くVMとは異なり、ホストとゲストでOSは共有します。そのため、VMに比べると比較的軽量で高速です。コンテナを動かすためのソフトウェアとしてはDockerが有名です。そして、複数のコンピュータの上で動く多くのコンテナをうまく管理する(オーケストレーション)ツールとして、Kubernetesが有名です。