コンピューティングを選択して管理する

Last reviewed 2023-10-03 UTC

Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、コンピューティング要件に基づいてシステムをデプロイするためのベスト プラクティスについて説明します。コンピューティング プラットフォームと移行方法の選択、ワークロードの設計とスケーリング、オペレーションと VM 移行の管理を行う方法について説明します。

カスタム ビジネス ロジックの実行や、データセットに対する複雑な計算アルゴリズムの適用など、コンピューティングは多くのワークロードの中核となります。ほとんどのソリューションではなんらかの形でコンピューティング リソースが使用されます。そのため、アプリケーションのニーズに合ったコンピューティング リソースを選択することが重要です。

Google Cloud には、CPU 時間を使用するためのオプションがいくつか用意されています。オプションは、CPU タイプ、パフォーマンス、コードの実行スケジュール(使用量に対する課金を含む)に基づきます。

Google Cloud には、次のコンピューティング オプションが用意されています。

  • ライブ マイグレーションなどのクラウド固有のメリットがある仮想マシン(VM)。
  • CPU を共有可能なクラスタマシン上のコンテナのビンパッキング。
  • 関数とサーバーレス アプローチ。CPU 時間は、単一の HTTP リクエスト中に実行される作業で測定できます。

コンピューティングを選択する

このセクションでは、コンピューティング プラットフォームを選択して移行する際のベスト プラクティスについて説明します。

コンピューティング プラットフォームを選択する

ワークロードにコンピューティング プラットフォームを選択する際は、ワークロードの技術要件、ライフサイクル自動化プロセス、リージョン指定、セキュリティを考慮してください。

アプリとサポート システム全体による CPU 使用状況を評価します。たとえば、コードをパッケージ化してデプロイ、分散、呼び出す方法を評価します。複数のプラットフォーム オプションとの互換性があるシナリオもありますが、ポータブル ワークロードは、さまざまなコンピューティング オプションに対応し、高いパフォーマンスを実現する必要があります。

次の表に、さまざまなユースケースで推奨される Google Cloud コンピューティング サービスの概要を示します。

コンピューティング プラットフォーム ユースケース 推奨プロダクト
サーバーレス
  • アプリを初めてデプロイする場合に使用します。
  • インフラストラクチャ オペレーションの維持ではなく、データと処理ロジック、アプリの開発に集中できます。
  • Cloud Run: このフルマネージドのサーバーレス オプションを使用して、ビジネス ロジックをコンテナに格納します。Cloud Run は、コンピューティング負荷が高いものの、常時稼働しているわけではないワークロード向けに設計されています。コストゼロでトラフィックを効果的にスケーリングし、タスクとサービスの CPU と RAM を定義できます。1 つのコマンドでデプロイするだけで、Google によって適切な量のリソースが自動的にプロビジョニングされます。
  • Cloud Functions: ロード バランシング、更新、認証、スケーリングなどのインフラストラクチャに関する懸念なしに、コードを柔軟なビジネス ロジックに分離します。
Kubernetes サービス メッシュ コントロールを管理するために Istio などの追加サービスを必要とする複雑なマイクロサービス アーキテクチャを構築します。
  • Google Kubernetes Engine: コンテナ化されたアプリのデプロイ、スケーリング、管理を自動化するオープンソースのコンテナ オーケストレーション エンジン。
仮想マシン(VM) アプリケーションやワークロードの要件を満たすだけでなく、サードパーティのソフトウェアとサービスにも対応している、カスタマイズ可能な事前定義の VM ファミリーから VM を作成して実行します。
  • Compute Engine: グラフィック プロセッシング ユニット(GPU)を VM インスタンスに追加します。これらの GPU を使用して、インスタンスで実行される機械学習やデータ処理などの特定のワークロードを高速化できます。

要件に基づいて適切なマシンタイプを選択するには、マシン ファミリーに関する推奨事項をご覧ください。

詳細については、コンピューティング オプションの選択をご覧ください。

コンピューティングの移行アプローチを選択する

既存のアプリケーションを別のクラウドまたはオンプレミスから移行する場合は、次のいずれかの Google Cloud プロダクトを使用して、パフォーマンス、スケール、コスト、セキュリティを最適化します。

移行目標 ユースケース 推奨プロダクト
リフト&シフト VMware ワークロードを数分で Google Cloud に移行または拡張できます。 Google Cloud VMware Engine
リフト&シフト VM ベースのアプリケーションを Compute Engine に移行します。 Migrate to Virtual Machines
コンテナへのアップグレード 従来のアプリケーションを Google Kubernetes Engine の組み込みコンテナにモダナイズします。 Migrate to Containers

内部チームを連携させながらワークロードを移行する方法については、VM Migration のライフサイクルGoogle Cloud を使用した大規模な移行プログラムの構築をご覧ください。

ワークロードの設計

このセクションでは、システムをサポートするワークロードを設計する際のベスト プラクティスについて説明します。

シンプルなロジックのサーバーレス オプションを評価する

シンプルなロジックは、特別なハードウェアや CPU 最適化マシンなどのマシンタイプを必要としないコンピューティング タイプです。Google Kubernetes Engine(GKE)または Compute Engine の実装に投資して運用上のオーバーヘッドを抽象化し、コストとパフォーマンスを最適化する前に、軽量ロジック用のサーバーレス オプションを評価してください。

アプリケーションを分離してステートレスにする

可能であれば、アプリケーションを分離してステートレスにすることで、サーバーレス コンピューティング オプションを最大限に活用できます。このアプローチでは、マネージド コンピューティング サービスを使用して、需要に応じてアプリケーションをスケーリングするので、費用とパフォーマンスを最適化できます。アプリケーションを切り離してスケーリングと高可用性を実現するように設計する詳しい方法については、スケーリングと高可用性を設計するをご覧ください。

アーキテクチャの分離にキャッシュ ロジックを使用する

アプリケーションがステートフルに設計されている場合は、キャッシュ ロジックを使用して分離し、ワークロードをスケーラブルにします。詳しくは、データベースに関するベスト プラクティスをご覧ください。

ライブ マイグレーションを使用してアップグレードを促進する

Google のメンテナンス アップグレードを容易にするために、インスタンスの可用性ポリシーを設定してライブ マイグレーションを使用します。詳細については、VM ホスト メンテナンス ポリシーの設定をご覧ください。

ワークロードのスケーリング

このセクションでは、システムをサポートするためにワークロードをスケーリングする際のベスト プラクティスについて説明します。

起動スクリプトとシャットダウン スクリプトを使用する

ステートフル アプリケーションの場合は、可能であれば起動スクリプトとシャットダウン スクリプトを使用して、アプリケーションの起動と停止を正常に行います。正常な起動とは、コンピュータがソフトウェアによって起動され、オペレーティング システムがプロセスを安全に開始して接続を開始できる状態を意味します。

ステートフル アプリケーションは、コンピューティング リソース(ローカルディスク、永続ディスク、RAM など)の近くにあるデータをいつでも利用できる状態にしておく必要があるため、正常な起動とシャットダウンは重要です。起動のたびにアプリケーション データを最初から読み込まないようにするには、起動スクリプトを使用して、最後に保存したデータを再度読み込みし、シャットダウン時に前回停止した場所からプロセスを実行します。シャットダウン時に進行状況が失われるのを回避するため、シャットダウン スクリプトを使用して、アプリケーションのメモリの状態を保存します。たとえば、ダウンスケーリングや Google のメンテナンス イベントにより VM がシャットダウンされる予定がある場合に、シャットダウン スクリプトを使用します。

MIG を使用して VM 管理をサポートする

Compute Engine VM を使用する場合、マネージド インスタンス グループ(MIG)は、自動修復、ロード バランシング、自動スケーリング、自動更新、ステートフル ワークロードなどの機能をサポートしています。可用性の目標に基づいて、ゾーン MIG またはリージョン MIG を作成できます。MIG は、ステートレス サービスやバッチ ワークロードのほか、各 VM に固有の状態を保持する必要があるステートフル アプリケーションに使用できます。

Pod オートスケーラーを使用して GKE ワークロードをスケーリングする

水平および垂直 Pod オートスケーラーを使用してワークロードをスケールし、ノードの自動プロビジョニングを使用して基盤となるコンピューティング リソースをスケールします。

アプリケーション トラフィックを分散する

アプリケーションをグローバルにスケーリングするには、Cloud Load Balancing を使用してアプリケーション インスタンスを複数のリージョンまたはゾーンに分散します。ロードバランサは、Google Cloud エッジ ネットワークから最も近いゾーンへのパケット ルーティングを最適化することで、トラフィックの処理効率を高め、コストを最小限に抑えます。エンドユーザーのレイテンシを最適化するには、Cloud CDN を使用して、静的コンテンツを可能な限りキャッシュに保存します。

コンピューティングの作成と管理を自動化する

コンピューティングの作成と管理を自動化することで、本番環境で人為的エラーを最小限に抑えます。

運用の管理

このセクションでは、システムをサポートするための運用管理のベスト プラクティスについて説明します。

Google 提供の公開イメージを使用する

Google Cloud が提供する公開イメージを使用します。Google Cloud の公開イメージは定期的に更新されます。詳細については、Compute Engine で利用可能な公開イメージのリストをご覧ください。

特定の構成と設定で独自のイメージを作成することもできます。可能であれば、組織内の承認済みユーザーと共有できる別のプロジェクトでイメージの作成を自動化し、一元化します。別のプロジェクトでカスタム イメージを作成してキュレートすると、独自の構成で VM の更新、パッチ適用、作成を行うことができます。その後、キュレートされた VM イメージを関連プロジェクトと共有できます。

インスタンスのバックアップにスナップショットを使用する

スナップショットを使用すると、インスタンスのバックアップを作成できます。スナップショットは、予期しないシャットダウンが発生したときに状態の維持や進行状況の保存ができない、柔軟性のないステートフル アプリケーションに特に有効です。スナップショットを頻繁に使用して新しいインスタンスを作成する場合は、そのスナップショットからベースイメージを作成することでバックアップ プロセスを最適化できます。

マシンイメージを使用して VM インスタンスの作成を有効にする

スナップショットはマシン内のデータのイメージのみをキャプチャしますが、マシンイメージはデータに加えてマシンの構成と設定をキャプチャします。マシンイメージを使用すると、VM インスタンスを作成するために必要な構成、メタデータ、権限、1 つ以上のディスクのデータをすべて保存できます。

スナップショットからマシンを作成する場合、新しい VM インスタンスでインスタンスを構成する必要がありますが、これには多くの作業が必要です。マシンイメージを使用すると、既知の設定を新しいマシンにコピーするので、オーバーヘッドを削減できます。詳細については、マシンイメージを使用する状況をご覧ください。

容量、予約、分離

このセクションでは、システムをサポートするために容量、予約、分離を管理するためのベスト プラクティスについて説明します。

確約利用割引を使用して費用を削減する

確約利用割引を使用することで、常時稼働しているワークロードの運用コスト(OPEX)を低減できます。詳細については、費用最適化のカテゴリをご覧ください。

費用とパフォーマンスをサポートするマシンタイプを選択する

Google Cloud では、費用とパフォーマンスのパラメータに基づいてコンピューティングを選択できるマシンタイプが用意されています。低パフォーマンスのプロダクトを選択してコストを最適化することも、高コストで高パフォーマンスのコンピューティング オプションを使用することもできます。詳細については、費用最適化のカテゴリをご覧ください。

単一テナントノードを使用してコンプライアンスのニーズに対応する

単一テナントノードは、プロジェクトの VM のみをホストする専用の物理的な Compute Engine サーバーです。単一テナントノードは、次のような物理的な分離のコンプライアンス要件を満たすのに役立ちます。

  • VM を他のプロジェクトの VM から物理的に分離する。
  • 同じホスト ハードウェア上の VM をグループ化する。
  • 支払い処理のワークロードを分離する。

詳細については、単一テナントノードをご覧ください。

予約を使用してリソースの可用性を確保する

Google Cloud では、ワークロードの予約を定義して、これらのリソースを常に使用できます。予約の作成には追加料金は発生しませんが、予約したリソースを使用しない場合でも、予約されたリソースに対して料金が発生します。詳細については、予約の使用と管理をご覧ください。

VM の移行

このセクションでは、システムをサポートするために VM を移行する際のベスト プラクティスについて説明します。

組み込みの移行ツールを評価する

組み込みの移行ツールを使用して、ワークロードを別のクラウドまたはオンプレミスから移行します。詳細については、Google Cloud への移行をご覧ください。Google Cloud には、ワークロードの移行と費用とパフォーマンスの最適化に役立つツールやサービスが用意されています。現在の IT 環境に基づく移行コストを無料で評価するには、Google Cloud 高速評価および移行プログラムをご覧ください。

仮想オペレーティング システムの OS をカスタマイズする

カスタマイズされたサポート対象のオペレーティング システムをインポートするには、仮想ディスクのインポートをご覧ください。単一テナントノードでは、コアごとまたはプロセッサごとのライセンスで、ハードウェアに対するお客様所有のライセンスの使用要件を満たすことができます。詳細については、お客様所有のライセンスの使用をご覧ください。

推奨事項

アーキテクチャ フレームワークのガイダンスを独自の環境に適用するには、次のことをおすすめします。

  • Google Cloud Marketplace サービスを確認して、サポートされているベンダーのリストにアプリケーションが含まれているかどうか確認します。Google Cloud は、さまざまなオープンソース システムとサードパーティ ソフトウェアの実行をサポートしています。

  • VM ベースのアプリケーションを GKE で実行しているコンテナ化アプリケーションとして抽出してパッケージ化するには、Migrate to Containers と GKE を検討してください。

  • Compute Engine を使用して、Google Cloud でアプリケーションを実行します。VM ベースのアプリケーションで以前の依存関係を実行している場合は、ベンダーの要件を満たしているかどうかを確認します。

  • Google Cloud の内部パススルー ネットワーク ロードバランサを使用して評価し、分離されたアーキテクチャをスケーリングします。詳細については、内部パススルー ネットワーク ロードバランサの概要をご覧ください。

  • 従来のオンプレミス ユースケース(HA Proxy の使用など)から移行するオプションを評価します。詳細については、フローティング IP アドレスのベスト プラクティスをご覧ください。

  • VM Manager を使用して、Compute Engine 上で Windows と Linux を実行する大規模な VM フリート用のオペレーティング システムを管理し、一貫性のある構成ポリシーを適用します。

  • GKE Autopilot を使用して、Google SRE でクラスタを完全に管理できるようにすることを検討してください。

  • GKE クラスタ全体のポリシーと構成の管理には、Policy ControllerConfig Sync を使用します。

  • 特定のリージョンとゾーンのマシンの可用性とスケーラビリティを確保します。Google Cloud では、コンピューティング ニーズに応じたスケーリングが可能です。ただし、特定のリージョンやゾーンで特定のマシンタイプを増やす必要がある場合は、アカウント チームと協力して可用性を確保してください。詳細については、Compute Engine の予約をご覧ください。

次のステップ

次のようなネットワーク設計の原則について学習する。

アーキテクチャ フレームワークの他のカテゴリ(信頼性、オペレーショナル エクセレンス、セキュリティ、プライバシー、コンプライアンスなど)を確認する。