[ GCP ] メガネと学ぶ Google Cloud Platform (2) コンピュート・サービスについて

[ GCP ] メガネと学ぶ Google Cloud Platform (2) コンピュート・サービスについて

本記事では、GoogleCloudPlatform における コンピュート・サービスの概要について調査したことをまとめてみたいと思います。

Google Cloud Platform とはなんぞや?

下記の記事でまとめているので、お時間あればご覧ください。

[ GCP ] メガネと学ぶ Google Cloud Platform (1) GCPって何ぞや?

 

GCP の コンピュート・サービスってどんなものがあるの?

 

GCPのサービスにはいくつかのジャンルが存在しますが、今回はそのうちの コンピュート・ジャンルについて調査していきたいと思います。

コンピュート・ジャンルには4つのサービスが用意されています。ほとんどの責任をGoogleに移譲してしまうFaaS( Functions as a Service ) から、システムを完全に制御することができるIaaS( Instructure as a Service ) まで、ユーザの求めるスタイルに応じてサービスを選択することができます。

以下の画像は、ユーザの責任レベルとComputeサービスとの相関です。Ops(運用・Operations) が真ん中で Google と You を切り分けていることからわかるように、CloudFunction と AppEngine はGoogleが運用までを担当してくれるフルマネージド・サービスであり、KubernetesEngine と ComputeEngine がユーザが運用を担当するようになっています。
( Google公式ドキュメントより引用。
https://cloud.google.com/docs/overview/cloud-platform-services?hl=ja)

各サービスの概略は次の通りです。

  1. Compute Engine
    GCP上で提供されている仮装マシンを使用することができるIaaSです。ユーザのニーズに合わせて、マシンの性能などを選択することができます。従量課金制です。
  2. App Engine
    Webアプリケーション開発用に提供されているPaaSです。フルマネージド・サービスであるため、ユーザは開発に専念することができます。
  3. Kubernetes Engine
    コンテナの実行環境を提供し、コンテナベースのコンピューティングを可能にするCaaS( Containers as a Service ) です。GCPのインストラクチャに加え、Kubernetesシステム上に構築されます。
  4. Cloud Functions
    サーバレス環境を提供するFaaS( Function as a Service )です。対象のイベントに関連する関数などを作成することができます。GCP内部イベントに加えHTTPトリガーなども設定することができます。2019年2月現在、beta版となっています。

 

opsってなに?

ops とは Operations の略称で、IT業界では 運用 の訳が適用されます。対になる概念として dev という Development の略語が存在しており、こちらは 開発 の訳が適用されます。開発と運用が密に連携することを DevOps と記述したりします。

※以下より引用
https://ja.wikipedia.org/wiki/DevOps

フルマネージド・サービスってなに?

フルマネージド・サービスとは、運用保守を完全に請け負うサービス形態のことです。コンピュータを利用して業務を遂行する時には業務に関するアプリケーションを開発・使用する人員が必要ですが、同時に使用するサーバを管理する人員も必要になってしまいます。この後者のサーバ管理に関するあれこれを全て代行することをサービス内容として提供するのが、フルマネージド・サービスです。

※以下より引用
https://www.gixo.jp/blog/4611/

Kubernetes ってなに?

Kubernetes とは、自動デプロイ・スケーリング・コンテナ運用自動化などのために設計されたオープンソースのプラットフォームです。コンテナ管理のためのオケーストレーション・ツールと理解すると良いかも知れません。読み方は色々ありますが、概ねクーベネティスと読む人が多いようです。

※参考
https://qiita.com/MahoTakara/items/85096f8b2632c802ab22

https://it.impressbm.co.jp/articles/-/15748

 

Compute Engine

 

 

技術概要

ComputeEngine サービスは、GCP上で用意されている仮想マシンを選択することでGoogleのインフラを個々の目的のために使用することができるIaaSです。

ここで提供される仮想マシンはインスタンスと呼称されます。インスタンスはメモリの性能やブートディスクの種類などについて多くの選択肢が用意されており、ユーザの要求に応じて適切なものを選択することができます。

特徴

  • 任意のOS、スタック、言語などでインスタンスを構築することができます。
  • インスタンスの設置位置を、複数のゾーンの中から選択することができます。
  • 複数のインスタンスをグループとして管理し、負荷分散などを行うことができます。
  • 自動スケーリングが可能です。
  • 分単位の従量課金制です。特定の条件を満たす場合、割引が適用されます。
  • ライブマイグレーションが実現されているため、不意のメンテナンスによってサービスが停止することがありません。

ユースケース

  • インフラを完全に制御し、ハードウェアに直接アクセスする必要がある場合。
  • オンプレミス環境からクラウド環境へとリソースを移行する場合。

 

ライブマイグレーションとは?

ライブマイグレーションとは、ある仮想マシン上で稼働しているOSやサービスを停止させることなく別の物理コンピュータに移動させる技術のことです。
ComputeEngine では GCP上に仮想マシンを構築していますが、ライブマイグレーションが実現されているため、大元のホストOSに問題が生じたりメンテナンスが発生したりしてもユーザはそれを意識することなく、仮想マシンを使用し続けることができます。

参考
http://e-words.jp/w/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html

 

Kubernetes Engine

 

 

技術概要

Kubernetes Engine は、コンテナ化されたアプリケーションをデプロイするためのマネージド型本番環境です。デベロッパーの生産性やリソースの効率化を実現します。

Kubernetes はGoogle製のツールであるため、GCPとの親和性は当然高いものとなっています。

Kubernetes Engine では、クラスタという単位でコンテナを管理しデプロイを実現します。
一つのクラスタは、少なくとも一つのマスター・マシンと、ノードと呼ばれる複数のワーカー・マシンによって構成されます。個々のノードは、ComputeEngine のVMインスタンスとして作成されます。

特徴

  • コンテナ化されたアプリケーションをデプロイできます。
  • コンテナの使用とその管理の容易性から、開発を迅速に行うことができるようになります。
  • 自動スケーリングに対応しています。
  • Kubernetes がサポートされていれば、オンプレミスとクラウド間を自由に移動することも可能です。

ユースケース

  • OSからアプリを分離させたい場合。
  • コンテナ化ワークロードを実現したい場合。

コンテナとは?

コンテナ技術は、サーバ仮想化技術の一つです。サーバー仮想化技術は大きく分けて、ハイパーバイザー型のものとコンテナ型のものがあります。
ハイパーバイザー型では、単一のサーバの中に異なるOS空間を並列に作成し、コンテナ型では、単一サーバーの中に同一OSの作業空間を並列に作成します。
前者は単一サーバの中で複数のOSを基盤としたアプリケーションが実行できる反面、それぞれの空間でOSを保持するため、起動に時間がかかるなどのオーバーヘッドが発生します。
後者はホストOSを基盤として作業空間を作成するため、ハイパーバイザー型にみられるようなオーバーヘッドが発生しません。反面、空間ごとにOSを切り替えることは基本的にできません。

※参考
https://it.impressbm.co.jp/articles/-/15748

 

App Engine

 

 

技術概要

App Engine はWebアプリケーションの開発などのために提供されるPaaSです。JavaやPythonなど多くの言語をサポートしています。

App Engine はフルマネージド・サービスであるため、開発者はOpsに意識を払うことなく開発に専念することができます。そのため、AppEngineを使用してグローバル展開されたエンタープライズ・システムの中にはたった数人で開発と運用を実現している例もあります。

また必要な時にはインスタンスにSSH接続し、インフラをコントロールすることもできます。

特徴

  • Node.js , Java, Ruby, C#, Go, Python, PHP などの言語をサポートしています。
  • OpsをGoogleに移譲したフルマネージド・サービスです。
  • 自動スケーリングに対応しています。
  • スタンダード環境とフレキシブル環境が用意されており、ユーザの要求に応じて選択することができます。

ユースケース

  • Webサイトを構築したい場合
  • モバイルアプリやゲームのバックエンドを実装したい場合
  • IoTアプリを構築したい時

 

Cloud Functions

 

 

技術概要

Cloud Functions は、イベントベースでJacaScriptの関数を実行することができるサービスです。GCPの内部イベントとしてはPub/Subのトピック変更やStorageのオブジェクト変更などをサポートしており、外部イベントとしてはHTTPトリガーなどに対応しています。

このサービスはFaaS(Function as aService) として提供されており、サーバーレスにユーザの目的を達成できるような構成になっています。

が、現在はまだbeta版で導入事例なども少ないようなので、ここでは深く触れないこととします。

 

まとめ

ここまで、GCPにおけるコンピュート・ジャンルの各種サービスについて見てきました。

全てのインフラをコントロールできるIaaSとしての ComputeEngine、コンテナをクラスタ化して一元管理することで各種の効率を向上させられるCaaSとしての KubernetesEngine、インフラを意識することなく開発に専心することができるPaaSとしての AppEngine、サーバレスを実現するFaaSとしての CloudFunctions と、どれも魅力的なサービスに見えます。

概要だけでは各種サービスをどのように利用したら良いかはわかりませんが、GCPでは各種サービスについてチュートリアルが提供されているので、それらをなぞってサービスに触れてみるだけでも理解が深まります。
GCPは登録時、一定の処理数までの無料枠が提供されるので興味がある方はぜひ試して見てください。

次回以降は、これらのサービスに実際に触れていきたいと思います。

 

以上です。ここまでご覧いただき、ありがとうございました!

 

 

参考

Webサイト

https://cloud.google.com/docs/?hl=ja

https://www.cloud-ace.jp/gcp/

https://www.topgate.co.jp/media

書籍

「Google Cloud Platform エンタープライズ設計ガイド」日経BP社

GoogleCloudPlatformカテゴリの最新記事