「Google Compute Engineって、どういうサービスなの?」
「Google Compute Engineを活用することでのメリットを知りたい」
昨今いわゆるオンプレミス(自社で専用のコンピューターやサーバーを用意するシステム運用)からクラウドへシステム運用のあり方が変わりつつあり、その中でPaaS/IaaS型のサービスの需要は高まっています。
Google Compute EngineはGoogle Cloudが提供するIaaS型のコンピューティングリソースサービスです。本記事ではGoogle Compute Engineについてサービスの概要や活用するメリットをご紹介します。
Google Compute Engineとは
Google Compute EngineはGoogle Cloudが提供するコンピューティングリソースサービスで、ビジネスや個人のニーズに応じて柔軟な仮想マシン(VM)を提供し、スケーラビリティ、信頼性、セキュリティを備えた環境でアプリケーションを実行したり、サーバーとして利用することができます。
オンプレミス型と異なり、ハードウェアの準備や設置、運用にコストを割く事なくクイックに環境構築をスタートできる点が最大の魅力です。
類似のサービスとしてAWSのEC2、AzureのVirtual Machinesが存在します。
その中でCompute Engineを選択する理由としては、Google Cloudのデータ分析やストレージ用途に優れたBigQueryと組み合わせて構築したい、など他のサービスやプロダクトとの兼ね合いを考慮して選択すると良いでしょう。
VMの単位はインスタンス、またはVMインスタンスと呼称され、「インスタンスを3台立ち上げる」「インスタンスを5台にスケーリングする」といった言葉の使われ方をします。
VMはマシンファミリー/マシンシリーズ/マシンタイプによりCPUやメモリを用途に合わせて柔軟に設定可能で、ホストするネットワークも、VPCというGoogle Cloudのネットワークサービスを使って、社内環境と接続させたり、パブリックに公開することが可能です。
Google Compute Engineとネットワーク
Compute Engineは仮想ネットワークであるVPCの中に構築します。
VMには内部IPアドレスと外部IPアドレスを持たせることができ、VPNなどで社内のネットワークと接続することで、自社専用システムをCompute Engineにホストするといった使い方も可能です。
また外部IPアドレスを持たせて、パブリックに公開することでWebサーバーやAPIサーバーとして活用することもできます。
公開する場合は、VPCのファイアウォールルールを活用してIPアドレス、ポート番号、プロトコルといった条件でセキュアな状態に保つことと、ロードバランサや自動スケーリング機能により、リソースへの負荷分散を考慮した設計を考える必要があります。
Google Compute Engineのマシンリソース
実際にCompute EngineでVMのマシンリソースを決定する指針をご紹介します。
マシンファミリー
特定の用途に最適化されたプロセッサとハードウェアの一連のセット。インスタンスを作成する際まずこのマシンファミリーから事前定義されたタイプを選択します。
マシンシリーズ
マシンファミリーは更にシリーズと世代で細分化されます。世代番号やシリーズ番号が大きいほど、CPUや使われている技術が最新のものであることを意味しており、例えばN2シリーズはN1シリーズよりも新しい世代です。
マシンタイプ
VMのリソースセットを備えた、事前定義されたマシンのタイプです。
ニーズに合わなければ、一部のマシンシリーズではカスタムマシンタイプを作成することも可能です。
マシンファミリーのリストには以下のような用途が含まれています。
汎用
様々な用途に対して優れたコストパフォーマンスを発揮します。
コンピューティング最適化
Compute Engineでコアあたりのパフォーマンスが最も高く、コンピューティング負荷の高い用途に最適です。
メモリ最適化
メモリ使用量の多い用途に理想的で、他のマシンファミリーよりコアあたりのメモリ容量が多く設定されています。
アクセラレータ最適化
機械学習やハイパフォーマンスコンピューティングなど超並列CUDAコンピューティング向けで、GPUを必要とする用途に最適です。
Google Compute Engineのリージョンとゾーン
Compute Engineのリソースは物理的には任意の世界中のリージョンとゾーンにホストされます。
リージョンが東京リージョンや大阪リージョン、オレゴンリージョンなど特定の地域のデータセンターの集合体です。
ゾーンがリージョン内の1つまたは複数のデータセンターで、例えば東京リージョンの中にはasia-northeast1-a、asia-northeast1-b、asia-northeast1-cの3つのゾーンが存在します。
インスタンスやゾーン永続ディスクなどゾーンを有効範囲とするリソースはゾーンリソースと呼ばれ、静的外部IPアドレスなどはリージョンリソースです。リージョンリソースはリージョン内であればどのリソースでも使用可能ですが、ゾーンリソースは同一ゾーン限定になるので注意しましょう。
リージョン内の異なるゾーンにリソースを分散させると、災害や障害などによるインフラ停止のリスクを軽減させることができます。更に複数のリージョンに分散させると、広域の障害に対する耐性が向上し、より堅牢なシステム構成にすることが可能です。
リージョンとゾーンの選択には、この物理的な障害に対する耐性と、ネットワークレイテンシの短縮を考慮して洗濯するのが良いでしょう。例えば、サービスを利用するユーザーがほとんど日本のユーザーであれば、東京や大阪リージョンにすることでレイテンシを抑えられます。
Google Compute Engineの自動スケーリング
ある程度トラフィックが見込まれるインスタンスではマネージドインスタンスグループ化して自動スケーリング機能を使うことで、負荷分散を行うことを推奨します。
自動スケーリングは、トラフィックが増加するとVMが追加されるスケールアウト、VMの必要性が低下するとVMが削除されるスケールインを行うことによって費用も削減できます。
自動スケーリングポリシーを作成することによって、測定された負荷に応じたスケーリングの対応を行います。
測定される負荷については以下のような指標を選択可能です。
・平均CPU使用率
・HTTP負荷分散処理能力
・Cloud Monitoringの指標
例えば平均CPU使用率の目標値を70%に設定すると、実際に平均CPU使用率が70%になるようにスケールアウト OR スケールインが実行されます。
また、スケーリングスケジュールを利用すると、スケジュールベースであらかじめトラフィックが増大するであろう時間帯にスケールアウトさせるという運用も可能です。
自動スケーリングには「初期化期間」という設定項目があり、これはインスタンスが作成された後、そのインスタンスに関する情報をスケーリングの決定に使用するまでに待機する時間を指します。インスタンスの初期化中の情報はスケーリングに使用するのに適さないため、初期化期間は120秒など、インスタンスが安定する時間よりも長い時間を設定しましょう。
まとめ
Google Compute Engineは、IaaS型のサービスのため技術的な内容に終始しましたが、カスタマイズ性や可用性に優れたコンピューティングサービスであるということを理解いただけたのであれば幸いです。
また、似たサービスにGoogle App Engineがありますが、こちらはPaaS型のサービスで、マシンリソースを考慮せずに手っ取り早くアプリケーションをロンチしたいという目的にはこちらのサービスもおすすめです。
株式会社KUIXではただ導入・開発するだけでなく、導入後の利活用を実現することに着眼した、GCP・Azure・AWS、データレイク・DWH・データマート、BIツールの選定・導入からレポート作成、運用、啓蒙・展開までトータルのコンサルテーションなどを行っています。お困りの方は、ぜひお気軽にご連絡ください!お問い合わせはこちらから