仮想マシンとは?クラウド上のエミュレートされたコンピュータ
仮想マシン(VM)は、ソフトウェアでエミュレートされたコンピュータです。1 台の物理マシンを多数の隔離された VM で共有する hypervisor 上で、独自の完全なオペレーティングシステムを実行します。
VM により、1 台の物理サーバーが複数のサーバーであるかのように振る舞えます。hypervisor は各 VM に CPU、メモリ、ディスクを割り当て、各 VM はあたかもハードウェアを所有しているかのように完全な guest OS を実行します。VM はクラウド compute(EC2 インスタンス、Compute Engine の VM)や多くの CI runner の基盤です。
仮想化の仕組み
hypervisor はハードウェアと guest オペレーティングシステムの間に位置し、各 VM に仮想的な CPU、メモリ、ディスク、ネットワークのセットを与えます。guest OS は仮想化されていることに気づかず通常どおり動作し、hypervisor は同一 host 上の VM 間の隔離を強制します。
VM と container の比較
VM はハードウェアを仮想化し、独自のカーネルを持つ完全な OS を実行するため、より重く起動が遅くなりますが、強く隔離します。container は host のカーネルを共有するため、より軽く数ミリ秒で起動します。多くのシステムは、隔離と密度を両立させるために VM の中で container を実行します。
VM が適している用途
- レガシーまたは OS 固有のソフトウェアの実行。
- テナントや workload 間の強い隔離。
- 既存サーバーのクラウドへの lift-and-shift。
- オペレーティングシステムの完全な制御。
クラウドの VM
クラウドプロバイダーは VM を秒単位または時間単位で貸し出します。AWS の EC2、GCP の Compute Engine、Azure の Virtual Machines です。あなたはマシンタイプ(CPU、メモリ)とイメージを選び、プロバイダーが物理ハードウェアと hypervisor を扱います。
CI/CD における役割
CI runner は非常に多くの場合 VM です。各 job は新しい VM で実行され、その後破棄されるため、毎回クリーンで隔離された環境が得られます。Latchkey のようなマネージド runner プラットフォームは、VM ベースの runner をオンデマンドでプロビジョニングし、job がクリーンなマシンで開始し、完了時に VM を解放できるようにします。
重要なポイント
- VM は、hypervisor を介して完全な OS を実行する、ソフトウェアでエミュレートされたコンピュータです。
- VM は container より強く隔離しますが、より重く起動が遅くなります。
- CI runner は多くの場合、クリーンで隔離された環境のための、job ごとの新しい VM です。