このドキュメントでは、Google Cloud のシングルゾーンの Compute Engine VM で実行される多層アプリケーションのリファレンス アーキテクチャについて説明します。このリファレンス アーキテクチャを使用すると、アプリケーションの変更を最小限に抑えながら、オンプレミス アプリケーションをクラウドへ効率的に再ホスト(リフト&シフト)できます。このドキュメントでは、クラウド アプリケーションのゾーン アーキテクチャを構築する際に考慮すべき設計要素についても説明します。このドキュメントは、クラウド アーキテクトを対象としています。
アーキテクチャ
次の図は、単一の Google Cloud ゾーンで実行されるアプリケーションのアーキテクチャを示しています。このアーキテクチャは、Google Cloud ゾーン デプロイ アーキタイプに対応しています。
このアーキテクチャは Infrastructure as a Service(IaaS)クラウドモデルに基づいています。必要なインフラストラクチャ リソース(コンピューティング、ネットワーキング、ストレージ)を Google Cloud にプロビジョニングするのは、ユーザー側の作業となります。ユーザーはインフラストラクチャを完全に制御できます。オペレーティング システム、ミドルウェア、アプリケーション スタックの上位レイヤの管理はユーザー側の責任となります。IaaS やその他のクラウドモデルの詳細については、PaaS、IaaS、SaaS、CaaS の違いをご覧ください。
この図には、次のコンポーネントが含まれています。
コンポーネント | 目的 |
---|---|
リージョン外部ロードバランサ |
リージョン外部ロードバランサは、ユーザーのリクエストを受信してウェブ階層の VM に分散します。 トラフィックの種類やその他の要件に応じて、適切な種類のロードバランサを使用します。たとえば、バックエンドがウェブサーバーで構成されている場合(上記のアーキテクチャを参照)、アプリケーション ロードバランサを使用して HTTP(S) トラフィックを転送します。TCP トラフィックをロードバランスする場合はネットワーク ロードバランサを使用します。詳細については、ロードバランサを選択するをご覧ください。 |
ウェブ階層のゾーン マネージド インスタンス グループ(MIG) | アプリケーションのウェブ階層は、ゾーン MIG の Compute Engine VM にデプロイされます。MIG はリージョン外部ロードバランサのバックエンドです。MIG の各 VM には、アプリケーションのウェブ階層の独立したインスタンスがホストされます。 |
リージョン内部ロードバランサ |
リージョン内部ロードバランサは、ウェブ階層の VM からアプリケーション階層の VM へのトラフィックを分散します。 要件に応じて、リージョン内部アプリケーション ロードバランサまたはネットワーク ロードバランサを使用できます。詳細については、ロードバランサを選択するをご覧ください。 |
アプリケーション階層のゾーン MIG | アプリケーション階層は、内部ロードバランサのバックエンドであるゾーン MIG の Compute Engine VM にデプロイされます。MIG の各 VM には、アプリケーション階層の独立したインスタンスがホストされます。 |
Compute Engine VM にデプロイされたサードパーティ データベース |
このドキュメントのアーキテクチャには、Compute Engine VM にデプロイされたサードパーティ データベース(PostgreSQL など)が含まれています。スタンバイ データベースは別のゾーンにデプロイできます。データベースのレプリケーションとフェイルオーバーの機能は、使用するデータベースによって異なります。 サードパーティ データベースをインストールして管理するには、更新の適用、モニタリング、可用性の確保のため、追加の労力と運用コストがかかります。Cloud SQL や AlloyDB for PostgreSQL などのフルマネージド データベース サービスを使用することで、サードパーティ データベースのインストールと管理のオーバーヘッドを回避し、組み込みの高可用性(HA)機能を利用できます。マネージド データベース オプションの詳細については、データベース サービスをご覧ください。 |
Virtual Private Cloud ネットワークとサブネット |
アーキテクチャ内のすべての Google Cloud リソースは、単一の VPC ネットワークとサブネットを使用します。 要件に応じて、複数の VPC ネットワークまたは複数のサブネットを使用するアーキテクチャを構築できます。詳細については、「VPC 設計のためのおすすめの方法とリファレンス アーキテクチャ」の複数の VPC ネットワークを作成するかどうかを決定するをご覧ください。 |
Cloud Storage リージョン バケット |
アプリケーションとデータベースのバックアップは、Cloud Storage のリージョン バケットに保存されます。ゾーンが停止しても、アプリケーションとデータは失われません。 また、バックアップと DR サービスを使用して、データベースのバックアップを作成、保存、管理することもできます。 |
使用するプロダクト
このリファレンス アーキテクチャでは、次の Google Cloud プロダクトを使用します。
- Compute Engine: Google のインフラストラクチャで VM を作成して実行できる、安全でカスタマイズ可能なコンピューティング サービス。
- Cloud Load Balancing: 高パフォーマンスでスケーラブルなグローバル ロードバランサとリージョン ロードバランサのポートフォリオ。
- Cloud Storage: 低コストで無制限のオブジェクト ストア。さまざまなデータ型に対応しています。データには Google Cloud の内部および外部からアクセスでき、冗長性を確保するために複数のロケーションに複製されます。
- Virtual Private Cloud: Google Cloud ワークロードにグローバルでスケーラブルなネットワーキング機能を提供する仮想システム。
ユースケース
このセクションでは、Compute Engine でのシングルゾーン デプロイが適切なユースケースについて説明します。
- クラウドの開発とテスト: シングルゾーン デプロイ アーキテクチャを使用すると、開発とテスト用として低コストのクラウド環境を構築できます。
- HA を必要としないアプリケーション: インフラストラクチャの停止によるダウンタイムを許容できるアプリケーションでは、シングルゾーン アーキテクチャで十分な場合があります。
- アプリケーション コンポーネント間の低レイテンシ ネットワーキング: シングルゾーン アーキテクチャは、コンピューティング ノード間で低レイテンシかつ高帯域幅のネットワーク接続を必要とするアプリケーション(バッチ コンピューティングなど)に適しています。シングルゾーン デプロイでは、ゾーン間のネットワーク トラフィックはなく、ゾーン内トラフィックに対して費用は発生しません。
- 日常的なワークロードの移行: ゾーン デプロイ アーキタイプは、コードを制御できなかったり、基本的なアクティブ / パッシブ トポロジを超えるアーキテクチャに対応できない日常的なオンプレミス アプリケーションに対して、シンプルなクラウド移行パスを提供します。
- ライセンス制限のあるソフトウェアの実行: シングルゾーン アーキテクチャは、一度に複数のインスタンスを実行するとコストがかかりすぎたり、実行が拒否されるライセンス制限のあるシステムに適しています。
設計上の考慮事項
このセクションでは、このリファレンス アーキテクチャを使用して、システム設計、セキュリティとコンプライアンス、信頼性、運用効率、費用、パフォーマンスに関する特定の要件を満たすアーキテクチャを開発するためのガイダンスを示します。
システム設計
このセクションでは、ゾーンデプロイに Google Cloud のリージョンとゾーンを選択する方法と、適切な Google Cloud サービスを選択するためのガイダンスを示します。
リージョンの選択
アプリケーションの Google Cloud リージョンとゾーンを選択する場合は、次の要素と要件を考慮してください。
- Google Cloud サービスの可用性。詳細については、ロケーション別のプロダクト提供状況をご覧ください。
- Compute Engine マシンタイプの提供状況。詳細については、リージョンとゾーンをご覧ください。
- エンドユーザーのレイテンシ要件。
- Google Cloud リソースの費用
- 規制要件
これらの要素や要件の中には、トレードオフを伴うものもあります。たとえば、費用対効果の最も高いリージョンが、温室効果ガス排出量が最も少ないリージョンとは限りません。
コンピューティング サービス
このドキュメントのリファレンス アーキテクチャでは、アプリケーションのすべての階層に Compute Engine VM を使用しています。特に記載がない限り、このドキュメントの設計ガイダンスは Compute Engine に特化したものです。
アプリケーションの要件によっては、以下に示す他の Google Cloud コンピューティング サービスから選択できます。これらのサービスの設計ガイダンスは、このドキュメントでは扱いません。
- Google Kubernetes Engine(GKE)クラスタでは、コンテナ化されたアプリケーションを実行できます。GKE は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するコンテナ オーケストレーション エンジンです。
- インフラストラクチャ リソースの設定や運用ではなく、データとアプリケーションに IT の労力を集中させたい場合は、Cloud Run や Cloud Run 関数などのサーバーレス サービスを使用します。
VM、コンテナ、サーバーレス サービスのどれを使用するかの決定には、構成の柔軟性と管理上の労力とのトレードオフが伴います。VM とコンテナは比較的柔軟に構成できますが、リソースの管理責任はユーザーにあります。サーバーレス アーキテクチャでは、必要となる管理作業が最も少ない事前構成されたプラットフォームにワークロードをデプロイします。Google Cloud のワークロードに適したコンピューティング サービスの選択について詳しくは、Google Cloud アーキテクチャ フレームワークの Google Cloud でのアプリケーションのホスティングをご覧ください。
ストレージ サービス
このドキュメントに示すアーキテクチャでは、すべての階層でゾーン Persistent Disk ボリュームを使用します。永続ストレージの耐久性を高めるには、リージョン Persistent Disk ボリュームを使用します。これにより、リージョン内の 2 つのゾーン間でデータの同期レプリケーションが行われます。
リージョン内のゾーン間で冗長な低コストのストレージが必要な場合は、Cloud Storage リージョン バケットを使用できます。
リージョン内の複数の VM(ウェブ階層やアプリケーション階層のすべての VM など)で共有されるデータを保存するには、Filestore を使用します。Filestore Enterprise インスタンスに保存されたデータは、リージョン内の 3 つのゾーン間で同期してレプリケートされます。このレプリケーションにより、ゾーンの停止に対する高可用性と堅牢性が確保されます。Filestore インスタンスには、共有構成ファイル、一般的なツールとユーティリティ、一元化されたログを保存し、そのインスタンスを複数の VM にマウントできます。
データベースが Microsoft SQL Server の場合は、Cloud SQL for SQL Server の使用をおすすめします。Cloud SQL が構成要件をサポートしていない場合や、オペレーティング システムにアクセスする必要がある場合は、フェイルオーバー クラスタ インスタンス(FCI)をデプロイできます。このシナリオでは、フルマネージドの Google Cloud NetApp Volumes を使用して、データベースに継続的可用性(CA)SMB ストレージを用意できます。
ワークロードのストレージを設計する場合は、機能特性、復元力の要件、パフォーマンスの期待値、費用目標を考慮します。詳細については、クラウド ワークロードに最適なストレージ戦略の設計をご覧ください。
データベース サービス
このドキュメントのリファレンス アーキテクチャでは、Compute Engine VM にデプロイされた PostgreSQL などのサードパーティ製データベースを使用しています。サードパーティ製データベースのインストールと管理には、更新の適用、モニタリングと可用性の確保、バックアップの実行、障害からの復旧などの運用に労力と費用がかかります。
フルマネージド データベース サービス(Cloud SQL、AlloyDB for PostgreSQL、Bigtable、Spanner、Firestore など)を使用すると、サードパーティ製データベースをインストールして管理する労力とコストを回避できます。こうした Google Cloud データベース サービスには、稼働時間のサービスレベル契約(SLA)が用意されており、スケーラビリティとオブザーバビリティのためのデフォルト機能を備えています。ワークロードに Oracle データベースが必要な場合は、Google Cloud が提供する Bare Metal Solution を使用できます。各 Google Cloud データベース サービスに適したユースケースの概要については、Google Cloud データベースをご覧ください。
セキュリティとコンプライアンス
このセクションでは、このリファレンス アーキテクチャを使用して、Google Cloud でワークロードのセキュリティとコンプライアンスの要件を満たすゾーントポロジを設計し、構築する際に考慮すべき要素について説明します。
外部の脅威からの保護
分散型サービス拒否(DDoS)攻撃やクロスサイト スクリプティング(XSS)などの外部の脅威からアプリケーションを保護するには、Google Cloud Armor セキュリティ ポリシーを使用します。セキュリティ ポリシーは境界(トラフィックがウェブ階層に到達する前)に適用されます。各ポリシーは、評価すべき特定の条件と、その条件が満たされたときに実行するアクションを指定する一連のルールです。たとえば、受信トラフィックの送信元 IP アドレスが特定の IP アドレスや CIDR 範囲と一致する場合は、トラフィックを拒否しなければならないと、ルールで指定できます。さらに、事前構成されたウェブ アプリケーション ファイアウォール(WAF)ルールを適用することもできます。詳細については、セキュリティ ポリシーの概要をご覧ください。
VM の外部アクセス
このドキュメントで説明するリファレンス アーキテクチャでは、アプリケーション層、ウェブ層、データベースをホストする VM に、インターネットからのインバウンド アクセスは必要ありません。これらの VM には、外部 IP アドレスを割り当てないでください。プライベートの内部 IP アドレスしか持たない Google Cloud リソースは、Private Service Connect または限定公開の Google アクセスを使用して、特定の Google API やサービスにアクセスできます。詳細については、サービスのプライベート アクセス オプションをご覧ください。
このリファレンス アーキテクチャの Compute Engine VM のように、内部 IP アドレスしか持たない Google Cloud リソースからのセキュアなアウトバウンド接続を有効にするには、Cloud NAT を使用します。
VM イメージのセキュリティ
VM が承認済みのイメージ(ポリシーまたはセキュリティ要件を満たすソフトウェアを含むイメージ)のみを使用するようにするには、特定の公開イメージ プロジェクトでのイメージの使用を制限する組織のポリシーを定義します。詳細については、信頼できるイメージのポリシーの設定をご覧ください。
サービス アカウントの権限
Compute Engine API が有効になっている Google Cloud プロジェクトでは、デフォルトのサービス アカウントが自動的に作成されます。この動作を無効にしない限り、デフォルトのサービス アカウントには IAM の編集者ロール(roles/editor
)が付与されます。デフォルトでは、デフォルトのサービス アカウントは、Google Cloud CLI または Google Cloud コンソールを使用して作成するすべての VM に関連付けられます。編集者ロールには幅広い権限が含まれているため、デフォルトのサービス アカウントを VM に関連付けると、セキュリティ リスクが発生します。このリスクを回避するには、アプリケーションごとに専用のサービス アカウントを作成して使用します。サービス アカウントがアクセスできるリソースを指定するには、詳細なポリシーを使用します。詳細については、「サービス アカウントの使用に関するベスト プラクティス」のサービス アカウントの権限を制限するをご覧ください。
ネットワーク セキュリティ
アーキテクチャのリソース間のネットワーク トラフィックを制御するには、適切な Cloud Next Generation Firewall ルールを設定する必要があります。ファイアウォール ルールにより、プロトコル、IP アドレス、ポートなどのパラメータに基づいてトラフィックを制御できます。たとえば、ウェブサーバー VM からデータベース VM の特定のポートへの TCP トラフィックは許可し、他のすべてのトラフィックはブロックするファイアウォール ルールを構成できます。
セキュリティ上のその他の考慮事項
ワークロードのアーキテクチャを構築する場合は、エンタープライズ基盤のブループリントで提供されているプラットフォーム レベルのセキュリティのベスト プラクティスと推奨事項を検討してください。
信頼性
このセクションでは、このリファレンス アーキテクチャを使用して、Google Cloud でのゾーンデプロイ用に信頼性の高いインフラストラクチャを構築して運用する際に考慮すべき設計要素について説明します。
インフラストラクチャの停止
シングルゾーン デプロイ アーキテクチャでは、インフラストラクチャ スタックのいずれかのコンポーネントに障害が発生した場合、十分な容量があり、機能しているコンポーネントが各階層に 1 つ以上存在していれば、アプリケーションはリクエストを処理できます。たとえば、ウェブサーバー インスタンスに障害が発生した場合、ロードバランサはユーザー リクエストを他の使用可能なウェブサーバー インスタンスに転送します。ウェブサーバーまたはアプリサーバー インスタンスをホストする VM がクラッシュすると、MIG は VM を自動的に再作成します。データベースがクラッシュした場合は、2 つ目のデータベースを手動で有効にし、アプリサーバー インスタンスを更新してデータベースに接続する必要があります。
1 つのゾーンまたはリージョンの停止は、シングルゾーン デプロイのすべての Compute Engine VM に影響します。このアーキテクチャのロードバランサは、リージョン リソースであるため、1 つのゾーンの停止の影響は受けません。ただし、利用可能なバックエンドがないため、ロードバランサはトラフィックを分散できません。ゾーンまたはリージョンが停止した場合、Google が停止を解決するまで待ち、アプリケーションが想定どおりに動作することを確認する必要があります。
別の Google Cloud ソーンまたはリージョンでインフラストラクチャ スタックのパッシブ(フェイルオーバー)レプリカを維持することで、ゾーンまたはリージョンの停止によるダウンタイムを短縮できます。プライマリ ゾーンでサービスが停止した場合は、フェイルオーバー ゾーンまたはリージョンでスタックを有効にし、DNS ルーティング ポリシーを使用して、フェイルオーバー ゾーンまたはリージョンのロードバランサにトラフィックを転送できます。
ゾーンまたはリージョンの停止に対する堅牢性が求められるアプリケーションの場合は、リージョン アーキテクチャまたはマルチリージョン アーキテクチャの使用を検討してください。次のリファレンス アーキテクチャをご覧ください。
MIG の自動スケーリング
ステートレス MIG の自動スケーリング機能を使用すると、アプリケーションの可用性とパフォーマンスを予測可能なレベルで維持できます。ステートフル MIG は自動スケーリングできません。
MIG の自動スケーリングの動作を制御するには、平均 CPU 使用率などの目標使用率の指標を指定します。また、スケジュールに基づく自動スケーリングを構成することもできます。詳細については、インスタンスのグループの自動スケーリングをご覧ください。
MIG サイズの上限
デフォルトでは、ゾーン MIG には最大 1,000 個の VM を設定できます。MIG のサイズ上限は 2,000 個の VM に増やすことができます。
VM の自動修復
アプリケーションをホストする VM が動作しており利用可能な場合でも、アプリケーション自体に問題がある場合があります。アプリケーションがフリーズする、クラッシュする、またはメモリ不足になることがあります。アプリケーションが期待どおりに応答しているかどうかを確認するには、MIG の自動修復ポリシーの一部としてアプリケーション ベースのヘルスチェックを構成します。特定の VM 上のアプリケーションが応答しない場合、MIG はその VM を自動修復します。自動修復の構成について詳しくは、アプリケーションのヘルスチェックと自動修復を設定するをご覧ください。
VM の配置
このドキュメントで説明するアーキテクチャでは、アプリケーション階層とウェブ階層がシングルゾーンの Compute Engine VM で実行されます。アーキテクチャの堅牢性を向上させるには、スプレッド プレースメント ポリシーを作成して MIG テンプレートに適用します。MIG は VM を作成すると、VM を異なる物理サーバー(ホスト)に配置するため、VM は個々のホストの障害に対して堅牢になります。詳細については、スプレッド プレースメント ポリシーを VM に適用するをご覧ください。
VM のキャパシティ プランニング
MIG の自動スケーリングに必要なときに Compute Engine VM の容量を使用できるようにするには、予約を作成します。予約により、選択したマシンタイプの指定された数の VM に対して、特定のゾーンでの容量が保証されます。予約は、プロジェクトに固有のものにすることも、複数のプロジェクトで共有することもできます。予約済みリソースがプロビジョニングまたは使用されていない場合でも、予約済みのリソースには料金が発生します。課金に関する考慮事項など、予約の詳細については、Compute Engine ゾーンリソースの予約をご覧ください。
永続ディスクの状態
アプリケーション設計におけるベスト プラクティスは、ステートフルなローカル ディスクを必要としないようにすることです。ただし、要件が存在する場合は、VM の修復または再作成時にデータが保持されるように、永続ディスクをステートフルに構成できます。ただし、ブートディスクはステートレスのままにし、新しいバージョンとセキュリティ パッチで最新のイメージに更新できるようにすることをおすすめします。詳細については、MIG でのステートフル永続ディスクの構成をご覧ください。
データの耐久性
バックアップと DR を使用すると、Compute Engine VM のバックアップを作成、保存、管理できます。バックアップと DR では、バックアップ データがアプリケーションで読み取り可能な元の形式で保存されます。必要に応じて、長期バックアップ ストレージのデータを直接使用することで、時間のかかるデータ移動や準備作業を行わずにワークロードを本番環境に復元できます。
マネージド データベース サービス(Cloud SQL など)を使用する場合、バックアップは定義した保持ポリシーに基づいて自動的に作成されます。規制、ワークフロー、ビジネス要件を満たすために、追加の論理バックアップでバックアップ戦略を補完することもできます。
サードパーティのデータベースを使用していて、データベースのバックアップとトランザクション ログを保存する必要がある場合は、Cloud Storage のリージョン バケットを使用できます。Cloud Storage のリージョン バケットは、ゾーン間で冗長化された低コストのバックアップ ストレージを提供します。
Compute Engine には、Persistent Disk ボリュームに保存されているデータの耐久性を確保するために、次のオプションが用意されています。
- スナップショットは、Persistent Disk ボリュームの特定時点の状態をキャプチャするために使用できます。標準のスナップショットは複数のリージョンに冗長性をもたせて保存されます。また、自動チェックサムによりデータの完全性が確保されます。スナップショットはデフォルトで増分方式となるため、使用するストレージ容量が少なく、費用を節約できます。スナップショットは、構成可能な Cloud Storage のロケーションに保存されます。スナップショットの使用と管理に関する推奨事項については、Compute Engine ディスク スナップショットのベスト プラクティスをご覧ください。
- リージョン Persistent Disk ボリュームを使用すると、永続ディスクの障害の影響を受けない高可用性アプリケーションを実行できます。リージョン Persistent Disk ボリュームを作成すると、Compute Engine は同じリージョン内の別のゾーンにディスクのレプリカを保持します。データは、両方のゾーンのディスクに同期的に複製されます。2 つのゾーンのいずれかが停止しても、データは引き続き利用できます。
データベースの可用性
マネージド データベース サービス(HA 構成の Cloud SQL など)を使用している場合、プライマリ データベースに障害が発生すると、Cloud SQL は自動的にスタンバイ データベースにフェイルオーバーします。データベース エンドポイントの IP アドレスを変更する必要はありません。Compute Engine VM にデプロイされたセルフマネージドのサードパーティ データベースを使用する場合は、内部ロードバランサやその他のメカニズムを使用して、プライマリ データベースが利用できない場合にアプリケーションが別のデータベースに接続できるようにする必要があります。
Compute Engine VM にデプロイされたデータベースにゾーン間フェイルオーバーを実装するには、プライマリ データベースの障害を識別するメカニズムと、スタンバイ データベースにフェイルオーバーするプロセスが必要です。フェイルオーバー メカニズムの詳細は、使用するデータベースによって異なります。オブザーバー インスタンスを設定してプライマリ データベースの障害を検出し、フェイルオーバーをオーケストレートできます。スプリット ブレイン状態を回避し、不要なフェイルオーバーを防ぐには、フェイルオーバーのルールを適切に構成する必要があります。PostgreSQL データベースのフェイルオーバーの実装に使用できるアーキテクチャの例については、Compute Engine 上の PostgreSQL クラスタの高可用性アーキテクチャをご覧ください。
信頼性に関するその他の考慮事項
ご自身のワークロード用のクラウド アーキテクチャを構築する際には、次のドキュメントに記載されている信頼性関連のベスト プラクティスと推奨事項を確認してください。
費用の最適化
このセクションでは、このリファレンス アーキテクチャを使用して構築した Google Cloud ゾーントポロジの設定と運用の費用を最適化するためのガイダンスを示します。
VM マシンタイプ
VM インスタンスのリソース使用率を最適化できるように、Compute Engine には推奨のマシンタイプが用意されています。この推奨事項を参照して、ワークロードのコンピューティング要件と一致するマシンタイプを選択します。リソース要件を予測できるワークロードの場合は、ニーズに合わせてマシンタイプをカスタマイズし、カスタム マシンタイプを使用することで費用を節約できます。
VM プロビジョニング モデル
アプリケーションがフォールト トレラントである場合、Spot VM を使用すると、アプリケーション階層とウェブ階層で VM の Compute Engine にかかる費用を削減できます。Spot VM の費用は、通常の VM よりも大幅に低くなります。ただし、Compute Engine は処理能力を調整するため、Spot VM をプリエンプティブに停止または削除する場合があります。Spot VM は、プリエンプションを許容でき、HA 要件のないバッチジョブに適しています。Spot VM には、通常の VM と同じマシンタイプ、オプション、パフォーマンスが用意されています。ただし、ゾーンのリソース容量が制限されている場合、MIG は必要な容量が再び使用可能になるまで、指定されたターゲット サイズへ自動的にスケールアウト(VM を作成)できないことがあります。
リソースの活用
ステートレス MIG の自動スケーリング機能により、アプリケーションはトラフィックの増加を適切に処理でき、リソースの必要性が低いときに費用を削減できます。ステートフル MIG は自動スケーリングできません。
サードパーティのライセンス
サードパーティのワークロードを Google Cloud に移行する場合は、お客様所有ライセンスの使用(BYOL)で費用を削減できる可能性があります。たとえば、Microsoft Windows Server VM をデプロイする場合、サードパーティ ライセンスの追加費用が発生するプレミアム イメージを使用する代わりに、カスタム Windows BYOL イメージを作成して使用できます。この場合、料金は Google Cloud で使用する VM インフラストラクチャにしか発生しません。この戦略により、サードパーティ ライセンスに対するこれまでの投資の価値を継続的に現金化できます。BYOL 方式を採用する場合は、次のことをおすすめします。
- カスタム マシンタイプを使用して、メモリとは別に必要な数のコンピューティング CPU コアをプロビジョニングします。これにより、サードパーティのライセンス費用を必要な CPU コア数に制限できます。
- 同時マルチスレッディング(SMT)を無効にして、コアあたりの vCPU 数を 2 から 1 に減らし、ライセンス費用を 50% 削減します。
サードパーティ製データベース(Microsoft SQL Server など)を Compute Engine VM にデプロイする場合は、サードパーティ ソフトウェアのライセンス費用を考慮する必要があります。マネージド データベース サービス(Cloud SQL など)を使用する場合、データベース ライセンス費用はサービスの料金に含まれています。
費用に関するその他の考慮事項
ご自身のワークロード用のアーキテクチャを構築する際には、Google Cloud Architecture Framework: 費用の最適化に記載されている一般的なベスト プラクティスと推奨事項も検討してください。
運用効率
このセクションでは、このリファレンス アーキテクチャを使用して、効率的に運用できる Google Cloud ゾーントポロジを設計および構築する際に考慮すべき要素について説明します。
VM 構成の更新
MIG 内の VM の構成(マシンタイプやブートディスク イメージなど)を更新するには、必要な構成を持つ新しいインスタンス テンプレートを作成し、そのテンプレートを MIG に適用します。MIG は、選択した更新方法(自動または選択)を使用して VM を更新します。可用性と業務の効率化の要件に基づいて、適切な方法を選択してください。これらの MIG の更新方法について詳しくは、MIG で新しい VM 構成を適用するをご覧ください。
VM イメージ
MIG インスタンス テンプレートでは、Google 提供の公開イメージを使用するのではなく、アプリケーションに必要な構成とソフトウェアを含むカスタム イメージを作成して使用することをおすすめします。カスタム イメージは、カスタム イメージ ファミリーにまとめることができます。イメージ ファミリーは、そのファミリー内の最新のイメージを指すため、特定のイメージ バージョンへの参照を手動で更新しなくても、インスタンス テンプレートやスクリプトでそのイメージを使用できます。
確定的なインスタンス テンプレート
MIG に使用するインスタンス テンプレートに、サードパーティ ソフトウェアをインストールする起動スクリプトが含まれている場合は、そのスクリプトでソフトウェア バージョンなどのソフトウェア インストール パラメータを明示的に指定します。そうしないと、MIG が VM を作成するときに、VM にインストールされるソフトウェアに一貫性がなくなる可能性があります。たとえば、インスタンス テンプレートに Apache HTTP Server 2.0(apache2
パッケージ)をインストールする起動スクリプトが含まれている場合は、このスクリプトで、インストールする apache2
バージョン(バージョン 2.4.53
など)を正確に指定してください。詳細については、確定的なインスタンス テンプレートをご覧ください。
運用上のその他の考慮事項
ご自身のワークロード用のアーキテクチャを構築する際には、Google Cloud アーキテクチャ フレームワーク: オペレーショナル エクセレンスで説明されている運用効率に関する一般的なベスト プラクティスと推奨事項を検討してください。
パフォーマンスの最適化
このセクションでは、このリファレンス アーキテクチャを使用して、ワークロードのパフォーマンス要件を満たすゾーントポロジを Google Cloud で設計、構築する際に考慮すべき要素について説明します。
VM の配置
VM 間のネットワーク レイテンシを低くする必要があるワークロードの場合は、コンパクト プレースメント ポリシーを作成して MIG テンプレートに適用できます。MIG は VM を作成すると、互いに近くにある物理サーバーに VM を配置します。詳しくは、コンパクト プレースメント ポリシーを使用してレイテンシを短縮するをご覧ください。
VM マシンタイプ
Compute Engine には、費用とパフォーマンスの要件に応じて選択できる、事前定義済みのカスタマイズ可能なマシンタイプが幅広く用意されています。マシンタイプは、マシンシリーズとマシン ファミリーにまとめられています。次の表に、さまざまなワークロード タイプに推奨されるマシン ファミリーとマシンシリーズの概要を示します。
要件 | 推奨されるマシン ファミリー | マシンシリーズの例 |
---|---|---|
さまざまなワークロードに対して最も優れたコスト パフォーマンス | 汎用マシン ファミリー | C3、C3D、E2、N2、N2D、Tau T2D、Tau T2A |
コアあたりのパフォーマンスが最も高く、コンピューティング負荷の高いワークロード用に最適化されている | コンピューティング最適化マシン ファミリー | C2、C2D、H3 |
メモリ使用量の多いワークロード向けの高いメモリ対 vCPU 比率 | メモリ最適化マシン ファミリー | M3、M2、M1 |
超並列ワークロード向けの GPU | アクセラレータ最適化マシン ファミリー | A2、G2 |
詳細については、マシン ファミリーのリソースと比較ガイドをご覧ください。
VM のマルチスレッディング
Compute Engine VM に割り当てる各仮想 CPU(vCPU)は、単一のハードウェア マルチスレッドとして実装されます。デフォルトでは、2 つの vCPU が 1 つの物理 CPU コアを共有します。並列性が高いワークロードや浮動小数点計算を実行するワークロード(遺伝子配列分析や財務リスク モデリングなど)では、各物理 CPU コアで実行するスレッド数を減らすことでパフォーマンスを改善できます。詳細については、コアあたりのスレッド数を設定するをご覧ください。
VM のマルチスレッディングは、サードパーティ ソフトウェア(データベースなど)のライセンスに影響する場合があります。詳細については、サードパーティ ソフトウェアのライセンスに関するドキュメントをご覧ください。
Network Service Tiers
Network Service Tiers を使用することで、ワークロードのネットワーク費用とパフォーマンスを最適化できます。プレミアム ティアまたはスタンダード ティアを選択できます。
- プレミアム ティアは、信頼性の高い Google のグローバル バックボーンを使用して、パケットロスとレイテンシを最小限に抑えることができます。トラフィックは、エンドユーザーに近いグローバル エッジ ポイント オブ プレゼンス(PoP)で Google ネットワークに出入りします。最適なパフォーマンスを得るには、プレミアム ティアをデフォルトの階層として使用することをおすすめします。
- スタンダード ティアのトラフィックは、ワークロードが実行されている Google Cloud のロケーションに最も近いエッジ PoP で Google ネットワークに出入りします。スタンダード ティアの料金は、プレミアム ティアよりも低く設定されています。スタンダード ティアは、パケットロスの影響を受けにくく、低レイテンシの要件がないトラフィックに適しています。
パフォーマンスに関するその他の考慮事項
ご自身のワークロード用のアーキテクチャを構築する場合は、Google Cloud アーキテクチャ フレームワーク: パフォーマンスの最適化に記載されている一般的なベスト プラクティスと推奨事項を検討してください。
次のステップ
- このリファレンス アーキテクチャで使用される Google Cloud プロダクトの詳細を確認する。
- Google Cloud へのワークロードの移行を開始する。
- クラウド ワークロードのアーキテクチャを構築するために選択できるデプロイ アーキタイプを調べて評価する。
- Google Cloud でワークロードに信頼性の高いインフラストラクチャを設計するためのアーキテクチャ オプションを確認する。
- Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。
協力者
著者: Kumar Dhanagopal | クロスプロダクト ソリューション デベロッパー
その他の関係者:
- Ben Good | ソリューション アーキテクト
- Carl Franklin | ディレクター、PSO エンタープライズ アーキテクチャ
- Daniel Lees | クラウド セキュリティ アーキテクト
- Gleb Otochkin | Cloud アドボケイト、データベース
- Mark Schlagenhauf | テクニカル ライター、ネットワーキング
- Pawel Wenda | グループ プロダクト マネージャー
- Sean Derrington | グループ アウトバウンド プロダクト マネージャー、ストレージ
- Sekou Page | アウトバウンド プロダクト マネージャー
- Simon Bennett | グループ プロダクト マネージャー
- Steve McGhee | 信頼性アドボケイト
- Victor Moreno | プロダクト マネージャー、クラウド ネットワーキング