Virtual Machines
概要
仮想マシン(VM)は、ソフトウェアとして存在し、プロバイダのハードウェア上で動く完全なコンピュータです。完全に制御できるオペレーティングシステムが手に入り、ログインして好きなものをインストールし、物理マシンと同じようにアプリを実行できます。ホスティングの選択肢の中で最も手を動かす方式です。
強み
- 完全な制御 — フルのオペレーティングシステム、任意のソフトウェア、任意の構成。
- 予測可能な性能。借りている限り、そのマシンはあなたのもの。
- サーバーレスやエッジと違い、実行時間やランタイムの制限がない。
- 何でも動く: データベース、レガシーソフトウェア、カスタムデーモン、長時間ジョブ。
- 数十年分のツールを備えた、成熟しよく理解されたモデル。
トレードオフ
- すべてを自分で管理する: OS の更新、セキュリティパッチ、バックアップ、監視。
- マシンが忙しくても遊んでいても料金を払う。
- スケーリングは手動 — リサイズやマシンの追加を自分で行う。
- 可動部が多いほど、壊れる経路も多い。
- 関数やコンテナと比べて、プロビジョニングが最も遅い。
使いどころ
完全な制御が必要なとき、あるいは軽量な選択肢では満たせない要件があるときは VM を使いましょう。専門的なソフトウェア、永続的な状態、セルフホストのデータベース、GPU ワークロード、あるいは既存のアプリを書き直さずに移行する場合などです。
バイブコーディングとの相性
VM は AI エージェントに最も広いキャンバスを与えますが、最も多くの責任も与えるため、手動のクリックではなく Infrastructure as Code に頼りましょう。SSH 越しに手作業でサーバーを構成する代わりに、マシン全体が再現可能でレビュー可能になるよう、プロビジョニングスクリプト(cloud-init ファイルやシェルのセットアップスクリプト)をエージェントに書かせましょう。ヒント: セットアップを単一のブートストラップファイルにスクリプト化し、自動セキュリティ更新を設定するようエージェントに依頼しましょう。そうすれば、構成を失うことなくいつでも VM を破棄して再作成できます。
#!/usr/bin/env bash
# bootstrap.sh — provision an Ubuntu VM
set -euo pipefail
apt-get update && apt-get upgrade -y
apt-get install -y nginx
systemctl enable --now nginx
# enable unattended security updates
apt-get install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
# Run the bootstrap on a fresh server
scp bootstrap.sh user@my-server:/tmp/
ssh user@my-server "sudo bash /tmp/bootstrap.sh"