仮想マシン(VM)は、ホスト ハードウェア上に分離された環境を提供するソフトウェア ベースのコンピュータです。仮想マシンは、プログラムとオペレーティング システムの実行、データの保存、ネットワークへの接続、他のコンピューティング機能の実行が可能です。クラウド コンピューティングや AI など、現在活用されているテクノロジーの多くは、仮想マシンのコンセプトに基づいており、オペレーティング システムやソフトウェアを物理マシンから分離できます。たとえば、クラウド コンピューティングの VM は、クラウド サービス プロバイダのサーバーのリソースを仮想化するために使用されます。これにより、互いに分離されながらリソースを共有できるマルチテナント クラウド アーキテクチャが実現します。
仮想マシンは、仮想化技術を使用して仮想ハードウェア(物理マシン上のコンピュータの仮想バージョン)を作成します。VM が実行される物理マシンはホストと呼ばれ、ホスト上で実行されている VM はゲストと呼ばれます。
各ゲスト VM は、他のゲストから完全に隔離された、ホスト上の分離パーティションで実行されます。ハイパーバイザと呼ばれるソフトウェア レイヤ上で実行される単一のホストマシン(多くの場合はサーバー)上で、複数の VM をホストできます。
ハイパーバイザは、CPU、GPU、TPU、メモリ、ストレージ、ネットワークなどのホストマシンの物理リソースを、必要に応じてゲスト VM にプロビジョニングして動的に割り当てることができるプールに抽象化し、柔軟性を高め、全体的な効率を向上させます。
一般的に、仮想マシンにはプロセス VM とシステム VM の 2 つのタイプがあります。
アプリケーション仮想マシンまたはマネージド ランタイム環境(MRE)とも呼ばれるプロセス VM は、アプリまたは単一プロセスの実行中に OS の仮想環境を作成し、使用を終了すると同時にそれらを破棄します。プロセス VM を使用すると、プラットフォームに依存しない環境を作成し、どのプラットフォームでもアプリやプロセスを同じように実行できます。 その具体的な例が App Engine の Node.js ランタイムです。これにより、基盤となるオペレーティング システムに関係なく、Google Cloud のマネージド環境で Node.js プログラムを実行できます。
ハードウェア仮想マシンとも呼ばれるシステム VM は、オペレーティング システム全体をシミュレートし、複数の OS 環境を同じマシン上で動作させることができます。一般的に「仮想マシン」と呼ばれているのは、このタイプの VM です。システム VM は独自の OS とアプリケーションを実行でき、ハイパーバイザは物理ホストマシンのリソースをモニタリングしてシステム VM 間で分散させます。
Google を含む一部のクラウド プロバイダは、各インスタンスの仮想プロセッサと仮想メモリの正確な量をカスタマイズできる機能も提供しています。これにより、各ワークロードの「適切なサイズ設定」がより正確になり、そのコンピューティング インスタンスの利用率の低下と、それに関連するリソースおよびソフトウェア ライセンスの費用を回避できます。たとえば、ワークロードによっては、コンピューティング コアとメモリの比率が高いことが必要な場合もあれば、その逆の場合もあります。仮想マシンのカスタマイズにより、これらのユースケースに対応しながら、使用されないリソースの過剰なプロビジョニングや過剰な支払いを防ぐことができます。
VM とコンテナ はどちらもアプリケーションを分離するために使用されますが、その方法は根本的に異なります。仮想マシンは、オペレーティング システムを含む物理ハードウェア スタック全体を仮想化します。これにより、各 VM は自己完結型の隔離された環境になりますが、VM が大きくなり、より多くのリソースを占有する傾向もあります。
対照的に、コンテナは OS レイヤのみを仮想化するため、より軽量です。コンテナは、各アプリケーションに完全なオペレーティング システムをバンドルするのではなく、ホストの OS カーネルを共有します。これにより、コンテナは VM よりも少ないリソースを使用し、分離された状態を維持しながらより高速に起動できます。そのため、コンテナは新しいアプリケーション開発に魅力的です。過去 10 年間に開発されたアプリケーションの多くはコンテナ向けに作成されているため、e コマース、バックオフィス、AI などの多くのワークロードは「コンテナ ネイティブ」です。
VM は仮想化コンピューティング リソースの基本的な構成要素であり、クラウドとオンプレミスの両方で、アプリケーション、ツール、環境を構築するうえで主要な役割を担います。
以下に、企業が仮想マシンを使用する一般的な方法をいくつか示します。
複数の物理マシンを VM として再構成し、他の VM とともにホスト上で実行できるため、組織は拡散を減らすことができます。VM は、最もパフォーマンスが重視されるアプリケーションでも実行できることが長年にわたって証明されています。
中心となる IT 組織が各ビジネスユニットと各機能領域の VM をプロビジョニングして管理することで、リソースへのアクセスが迅速化され、企業の可視性が向上します。
VM は、テスト用と開発用の独立した環境として機能し、周囲のインフラストラクチャには影響を与えずに、完全な機能を備えています。
VM は簡単にオンまたはオフにしたり、移行や適応を行ったりして、開発とデプロイの柔軟性を最大限に高めることができます。
VM が提供する柔軟性とポータビリティは、移行の取り組みのスピードを上げるうえで重要です。
VM を使用してクラウド環境でシステムをレプリケーションすると、セキュリティと確実性のレイヤが追加されます。クラウド環境は継続的に更新することもできます。
VM は、オンプレミス環境と並行してクラウド環境を作成するための基盤を提供します。これにより、従来のシステムの使用を中断することなく、柔軟性の高い環境を実現できます。
特にクラウド VM を選択した場合、仮想マシンには次のような多くのメリットがあります。
スケーラビリティ
クラウドベースの VM を使用すると、アプリケーションのスケーリングが容易になり、可用性とパフォーマンスが向上します。独自の物理サーバーに投資することなく、需要に応じて容量を増やすことができます。
移植性
仮想マシンは、ハードウェア リソース、オペレーティング システム、すべてのアプリケーションを含む単一のソフトウェア パッケージです。VM はサーバー間だけでなく、オンプレミスのハードウェアからクラウド環境へも簡単に移行できます。
フットプリントとコストの削減
VM を使用すると、1 台のマシンから複数の仮想環境を実行できるため、物理インフラストラクチャのフットプリント、電気料金、メンテナンスと管理の費用を削減できます。
プロビジョニングの高速化
VM は簡単に複製できるため、ゼロからセットアップすることなく、新しい同一の環境をスピンアップできます。
信頼性
仮想マシンとそのコンポーネントは仮想的に存在し、他のゲスト VM から分離されています。VM がクラッシュしても、他のゲスト VM は動作を続け、物理ホストマシンは影響を受けません。
セキュリティの強化
仮想マシンを使用すると、ホスト オペレーティング システムに影響を与えることなく、複数のオペレーティング システムを実行できます。VM を使用すると、ホストマシンに対するリスクを抑えながら、アプリのテストやセキュリティの脆弱性の調査を行うための安全な仮想環境を作成できます。
ただし、VM を実行する場合に留意すべき考慮事項がいくつかあります。仮想マシンの最大の潜在的課題の 1 つは、ホストマシンの堅牢性が足りない場合に、複数のオペレーティング システムとハイパーバイザー レイヤーを実行するとパフォーマンスが低下する可能性があることです。また、仮想ハードウェアは物理マシンの物理ハードウェアと比べて効率性で劣る場合があります。 最後に、ほとんどのクラウド プロバイダが提供する仮想マシンは、CPU とメモリが固定されているため、リソースを効率的に使用できません。
ただし、これらの懸念の多くは、クラウド サービス プロバイダが提供する VM を使用することを選択すれば解消できます。クラウド VM は、1 台のマシンではなく、データセンター全体のコンピュータのコンピューティング能力を活用できるため、従来の VM に比べて多くの利点があります。さらに、Google Compute Engine の仮想マシンサイズでは、カスタム マシンタイプが提供されています。過剰な容量が含まれている可能性のある事前定義されたマシンタイプから選択するのではなく、ワークロードに合わせて CPU とメモリの比率を調整できるため、実際に使用したリソースに対してのみ料金を支払うことができます。この的を絞ったアプローチにより、無駄を最小限に抑え、クラウド支出を大幅に削減できます。特に、オンプレミスから Google Cloud に移行する場合や、他のクラウド プロバイダから移行する場合に効果的です。 また、Compute Engine は、エンタープライズ ワークロード、メモリ消費量の多い構成、機械学習やハイ パフォーマンス コンピューティングなどの要求の厳しいワークロードに関するお客様の特定のニーズに応じて最適化された仮想マシンタイプも提供します。
Google Cloud では、VM インスタンスのセキュリティを強化し、整合性を検証できるように、Shielded VM も提供しています。Google Cloud の Shielded VMは、高度なプラットフォーム セキュリティ機能と制御を活用し、リモート攻撃、権限昇格、悪意のある内部関係者などの脅威から企業のワークロードを保護します。
ソリューション
ソリューション