Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、Google Cloud のワークロードのパフォーマンスを最適化するためのベスト プラクティスについて説明します。
戦略
パフォーマンス要件を評価する。アプリケーションの優先度と、それらのアプリケーションに必要な最小パフォーマンスを決めます。
スケーラブルな設計パターンを使用する。自動スケーリング、コンピューティングの選択、ストレージ構成により、スケーラビリティとパフォーマンスを向上させます。
おすすめの方法
- 自動スケーリングとデータ処理を使用する。
- GPU と TPU を使用してパフォーマンスを向上させる。
- 調整するアプリを特定する。
自動スケーリングとデータ処理を使用する
負荷が増加または減少したときに、自動スケーリングを使用して一致するリソースの追加または解放を行います。
Compute Engine の自動スケーリング
マネージド インスタンス グループ(MIG)を使用すると、複数の同一 VM でステートレス アプリをスケールできます。これにより、インスタンス テンプレートに基づいて Compute Engine リソースのグループが起動します。CPU 使用率、負荷分散能力、Cloud Monitoring の指標、スケジュールに基づいてグループのスケーリングを行う自動スケーリング ポリシーを構成できます。ゾーン MIG の場合は、Pub/Sub などのキューベースのワークロードごとに構成できます。
Google Kubernetes Engine の自動スケーリング
Google Kubernetes Engine(GKE)のクラスタ オートスケーラー機能を使用すると、ワークロードのさまざまな需要に基づいてクラスタのノードプールを管理できます。クラスタ オートスケーラーは、実際のリソース使用率ではなく、ノードプールのノードで実行されている Pod のリソース要求数に基づいて、ノードプールのサイズを自動的に調整します。
サーバーレス自動スケーリング
サーバーレス コンピューティングのオプションとしては、Cloud Run、App Engine、Cloud Functions があり、それぞれ自動スケーリング機能を備えています。これらのサーバーレス オプションを使用して、マイクロサービスまたはファンクションをスケーリングします。
データ処理
Dataproc と Dataflow には、データ パイプラインとデータ処理をスケーリングする自動スケーリング オプションが用意されています。これらのオプションを使用すると、処理負荷に応じて、パイプラインでより多くのコンピューティング リソースにアクセスできるようになります。
設計に関する質問
- 変動するユーザー負荷や処理要件があるアプリケーションはどれか。
- 変動するデータ要件があるデータ処理パイプラインはどれか。
推奨事項
- Google Cloud ロードバランサを使用して、グローバル エンドポイントを提供します。
- Compute Engine でマネージド インスタンス グループを使用して自動的にスケーリングします。
- GKE のクラスタ オートスケーラーを使用して、クラスタを自動的にスケーリングします。
- App Engine を使用して、PaaS(Platform-as-a-Service)アプリケーションを自動スケーリングします。
- Cloud Run または Cloud Functions を使用して、ファンクションまたはマイクロサービスを自動スケーリングします。
主なサービス
関連情報
GPU と TPU を使用してパフォーマンスを向上させる
Google Cloud には、ワークロードのパフォーマンスを高速化するオプションが用意されています。これらの専用ハードウェア プラットフォームを使用して、アプリケーションとデータ処理のパフォーマンスを向上させることができます。
GPU(グラフィック プロセッシング ユニット)
Compute Engine は、仮想マシン インスタンスに追加できる GPU を備えています。これらの GPU を使用して、機械学習やデータ処理などの特定のワークロードをインスタンス上で高速化できます。
TPU(Tensor Processing Unit)
TPU は、機械学習ワークロード用の Google のマトリックス プロセッサとして設計されています。TPU は、大規模なパイプラインを使用した大規模な行列演算に最適で、メモリアクセスが大幅に減少します。
関連情報
調整するアプリを特定する
アプリケーション パフォーマンス管理(APM)には、レイテンシとコストの低減に役立つツールが用意されており、アプリケーションをより効率的に実行できます。Cloud Trace、Cloud Debugger、Cloud Profiler を使用すると、コードとサービスの機能を分析し、必要に応じてトラブルシューティングを行うことができます。
インストルメンテーション
レイテンシは、ユーザー エクスペリエンスを左右する重要な要素です。アプリケーションのバックエンドが複雑な場合や、マイクロサービス アーキテクチャの採用を始めている場合、サービス間の通信の遅延やボトルネックの特定が難しくなります。Cloud Traceと OpenTelemetry ツールを使用すると、デプロイからレイテンシ データを収集して迅速に分析できます。
デバッグ
Cloud Debugger は本番環境のコードの動作をリアルタイムで検査し、分析できます。パフォーマンスへの影響や速度低下が生じることはありません。
プロファイリング
パフォーマンスの悪いコードはレイテンシを増大させ、アプリケーションやウェブサービスのコストにも影響を及ぼします。Cloud Profiler を使用すると、アプリケーション全体で実行され、CPU やメモリを大量に消費する関数のパフォーマンスを継続的に分析できます。
推奨事項
- Cloud Trace を使用して、アプリケーションをインストルメントします。
- Cloud Debugger を使用して、本番環境のリアルタイムのデバッグ機能を提供します。
- Cloud Profiler を使用して、アプリケーションの動作パフォーマンスを分析します。
次のステップ
Google Cloud アーキテクチャ フレームワークの他のカテゴリを確認する。