皆様、こんにちは!
アイレット株式会社 DX開発事業部の楊林と申します。
前回の投稿では、Google Cloud の Compute Engine の基礎について紹介しました。
では実際に Compute Engine のインスタンスを作るとき、どうやって適切なマシンタイプを選ぶのでしょうか?
そして、ワークロードが増えたときにスケールさせるにはどうすれば良いのでしょうか?
今回は、Compute Engine のマシンタイプの選び方、そしてインスタンスのスケーラビリティを担うマネージドインスタンスグループ(MIG)について紹介していきます。
マシンタイプ
VM を作成するときは、まずマシンファミリ、シリーズ、タイプの順に選択していきます。この組み合わせによって、利用できる vCPU やメモリなどのリソースが決まります。
マシンファミリーとは、Google が特定のワークロード向けに最適化したプロセッサ構成のことで、大きく分けて4種類あります。
汎用(General-purpose)
最もバランスが良く、幅広い用途に使えるファミリーです。
vCPU とメモリの比率も柔軟で、費用対効果に優れており、まず最初に検討されることが多いタイプです。
-
E2マシンシリーズ
低コストで日常的なコンピューティングを行いたい場合に適しています。
中小規模の DB、開発・テスト環境、そこまでシビアな性能要件がない Web アプリなどが得意です。 -
N2/N2D/N1マシンシリーズ
企業向けアプリや中〜大規模のデータベース、Web 配信など、幅広いワークロードで使える万能タイプです。
コストとパフォーマンスのバランスが非常に良いシリーズです。 -
Tau T2D/Tau T2Aシリーズ
スケールアウト型アプリケーションに特化したシリーズで、コンテナ化されたマイクロサービス、Web サーバー、大規模 Java アプリケーションに向いています。
性能あたりの価格がかなり優秀です。
コンピューティング最適化(Compute-optimized)
1コアあたりのパフォーマンスが最も高く、計算処理が中心のワークロードに向いています。
-
C2/C2Dシリーズ
HPC(高性能計算)や AAA ゲーム、EDA、ゲノム解析、動画のコード変換など、とにかく計算量が多い処理に強いシリーズです。 -
H3シリーズ
こちらも HPC や EDA などを想定したシリーズで、最新世代のアーキテクチャによる高性能が特徴です。
メモリ最適化(Memory-optimized)
大量のメモリを必要とするアプリケーション向けのファミリーです。
-
M1/M2シリーズ
SAP HANA のようなインメモリデータベース、大規模分析など、メモリを大量に使うワークロードに向いています。 -
M3シリーズ
ゲノムモデリングなど、さらにメモリの要求が厳しい用途に最適化されています。
アクセラレータ最適化(Accelerator-optimized)
GPU や専用アクセラレータが必要な ML / HPC などの並列処理に最適のファミリーです。
-
A2シリーズ
ML トレーニングや推論、大規模並列計算などに向いています。 -
G2シリーズ
動画のコード変換やリモート可視化ワークステーションなどの GPU ワークロードで利用されます。
マシンタイプ以外に考慮すべきポイント
マシンタイプの選択以外にも、実は VM の構築にはいくつか注意点があります。
まず、VM のロケーション(リージョン・ゾーン) はパフォーマンスにも料金にも影響します。
また、カスタムマシンタイプを選ぶ場合は、以下の制限があります。
- vCPU 数は 1 または偶数のみ
- メモリは vCPU あたり 1〜8 GB(拡張メモリを使うと 8GB 超も可能)
- 合計メモリは 256MB の倍数で指定
- カスタムは事前定義より若干高めの料金
ネットワーク帯域は vCPU 数に応じてスケールし、通常 1 コアあたり約 2Gbps ですが、2〜4 vCPU の場合のみ最大 10Gbps の受信帯域が付与されます。
最大性能は 176 vCPU のインスタンスで 200Gbps です。
料金体系
Compute Engine の料金は、vCPU・メモリ・GPU などのリソースごとに 1 分の最低課金後は 1 秒単位 で発生します。
利用可能な割引は主に以下の 2 種類ですが、同時適用はできません。
- 継続利用割引(Sustained Use Discount):請求月に特定のリソースの使用時間が一定の割合を超えると自動的に適用されます
- 確約利用割引(Committed Use Discount):ワークロードが安定していて予測可能な場合、1年または3年の利用を確約する方が特定の量のvCPUとメモリを通常料金より割安で購入できます
また、完了待ちが不要なバッチジョブなどには、Spot VM / Preemptible VM を使うことでさらにコスト削減が可能です。
マネージドインスタンスグループ(MIG)
マネージドインスタンスグループは、同じ設定の VM をまとめて管理するための仕組みです。
インスタンステンプレートを使って作成するため、構築・更新が非常に楽になります。
たとえばテンプレートを更新してローリングアップデートを実行すれば、グループ全体を安全に最新バージョンへ切り替えることができます。
MIG の最大の特徴は、負荷に応じて VM を自動的に増減できることです。
CPU 使用率や Cloud Monitoring の指標、あるいは外部シグナルをトリガーにスケールアウト/スケールインを行い、必要な分だけリソースを確保してくれます。
MIG は Google Cloud のロードバランサと連携し、トラフィックをグループ内のインスタンスへ均等に振り分けられます。
これにより、スケールアウト時でも安定したサービス配信が可能になります。
インスタンスがクラッシュしたり手動で削除された場合でも、MIG が自動的に再作成します。
再作成されたインスタンスは同じ名前・同じテンプレートを利用するため、サービスの整合性も保たれます。
単一ゾーンに障害が起きると、ゾーン MIG で構成したサービスは大きな影響を受けます。
一方リージョン MIG は、複数ゾーンにインスタンスを分散するため、ゾーン障害が発生してもサービスを継続できます。
最後に
今回は Compute Engine の中でも、特に選択に迷いやすいマシンタイプと、運用で欠かせないマネージドインスタンスグループについて紹介しました。
次回は、Google Cloud のもう一つ重要な環境構築の選択肢ーGoogle Kubernetes Engineを紹介するため、その基礎になるコンテナについて話しましょう。
ぜひ続けて読んでいただければ嬉しいです!
以前の投稿
【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎