tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【GCP】Google Cloud Platformとは? からのGCPサービス全体増、特徴、メリットを書籍を読んで自分まとめ

はじめに

最近gcp関連を触ることがあったので、google cloud platformについて全体的に俯瞰して知りたいなーということで
以下の書籍を読んでみました。

読んでみて印象に残った部分 + αのなんとなく自分まとめです。
書籍では1章〜5章までありますが、この中でも文章としてまとめやすい 1章、2章の内容にしぼっています。

※ 内容は書籍を購入した2016年中盤の情報です ※ 一部、調べるために他のサイトも参考にさせて頂いています。thx!

Google Cloud Platformとは?

GCP自体は聞いた事があるものの、どんなものなのよ?とは具体的に知らなかったので勉強になりました。

Google Cloud Platform(GCP) とは、Google がクラウド上で提供するサービス郡の総称です。
Google 社内で使われているものと同じテクノロジーやインフラを使用してインフラ環境をクラウド化できます。
基本的な構成要素が初めから各種サービスとして用意されているため、それらを使用してすばやく開発を行うこともできます。

AWSや他のクラウドサービスプロバイダとの違い

  • AWSなど
    • 仮想マシンやオブジェクトスレージといった低レベルのコンピュートリソース提供から始めて徐々に抽象度の高い高度なサービスを公開
  • GCP
    • 抽象度の高いアプリケーションプラットフォームやAPIサービスからスタートし、後からより低レベルのコンピュートリソースである仮想マシンやクラウドストレージをリリース

世界最大級のコンピュータ

  • Googleは巨大なデータセンタの構築、運営を自社で行っている
    • 世界14カ所
  • データセンタはPUE1.12(2015/12月現在)という非常に効率よい電力消費
    • 1ユーザが1ヶ月Googleのサービスを利用するのに必要なエネルギーは自動車を1マイル運転するより少ない
  • カーボンフットプリントはゼロに近い
  • 地球環境に優しい運用が行われている

グローバルネットワーク

  • 数千マイルの光ファイバーケーブル、先進的なSDN(Software Define Network)、エッジキャッシュなどの技術により高度で安定したパフォーマンスとスケールを実現
  • 光ファイバーケーブルを太平洋の海底に独自に敷設
    • 通信会社と同じ土俵でネットワークインフラ投資に取り組む
  • 現在のJupiterファブリックは二分割帯域幅で1ペタbpsを超えている
    • 10万台のサーバがそれぞれ10Gbpsで情報を交換できる速度

分散コンピューティングの確信をリードするソフトウェア

  • OSより上位のソフトウェアについてもGoogleならではの工夫がされている
  • サーバマシンは壊れるもの、ソフトウェアレベルでアプリケーション自体の信頼性や安全性を担保しようという考え
    • Google File System(GFS)という分散ファイルシステム
    • 多数のマシンノードで並列処理するためのMapReduce
    • スケーラビリティのあるNoSQLであるBigtable
    • コンテナ管理メカニズムのBorg
  • 先進的なテクノロジーを3つのステップで公開
    • Google社無いでの利用経験をパブリックな論文として公開
    • それを実装するオープンソースや商用ソフトウェアとして公開
    • Google社内の基盤をGCPのサービスとして公開

まとめ

  • 他者サービスとくらべた特徴
    • 我々が利用できるGCP上で、実際のgoogle関連サービスも動いている

Google Cloud Platformの製品・サービス

基本構成

  • 利用可能なリージョンは世界4リージョン
    • 米国(東海岸)
    • 米国(中央)
    • 西ヨーロッパ
    • 東アジア
  • 各拠点にはゾーン(ほぼデータセンタと同義)が複数存在
    • データセンタ間の冗長化が必要な場合には複数ゾーンに配置
  • 全てのリソースが「プロジェクト」という枠組みで一元管理される
    • プロジェクトには「アカウント」を複数紐づけて権限設定可能
    • アカウントにはGoogleアカウントが利用される

製品・サービス全体増

  • GCPはコンピュート、ストレージ、ビッグデータ、APIサービスの4つの大きなカテゴリに分類される
  • 4カテゴリに加えて、ネットワーク、管理系のサービス群も存在
コンピュート
App Engine
  • スケーラブルなWebアプリケーションやモバイルバックエンドのためのアプリケーションプラットフォーム
  • フルマネージドなPaaS(Platform as a Service)
  • サーバインスタンスが立ち上がる速度は早いと数十ミリ、長くても秒単位
Compute Engine
  • Googleのインフラストラクチャ上で動作する仮想マシンサービス
  • linuxであれば30秒程度で起動
  • 分単位の課金、月額利用時間に応じた割引も自動適用
  • PreemptibleVMというマシンタイプを選ぶと79%オフ
    • 最大24時間しか稼働しない短期間リソースが必要なもの向け(バッチとか)
  • ライブマイグレーションにより透過的なメンテナンス
    • VMを止める事なく、別のHWに移動する事ができる技術
Container Engine
  • Dockerコンテナを動かすための実行環境を提供
  • Container Engineの実態はKubernetesと呼ばれるコンテナ管理のオープンソースのフルマネージサービス
  • Kubernetes環境を自分で作るのと比べると
    • ロギングやモニタリングの機構が予め組み込まれている
    • ロードバランサの設定が容易
ストレージ
Cloud Storage
  • 高い可用性と耐久性を持つオブジェクトストレージ
  • デフォルトでグローバルなエッジキャッシュを持つ
    • 世界中のどこにいてもオブジェクトに高速にアクセス可能
Cloud Datastore
  • Webアプリケーションやモバイルバックエンドを想定したスケーラブルなNoSQLサービス
  • シャーディングとレプリケーションが自動で行われる
    • スケーラブルで可用性が高い
Cloud SQL
  • MySQLデータベースを提供するフルマネージドサービス
  • バックアップやメンテなすを自動的に行う
  • 秒間数千トランザクションを捌くようなアプリでも利用可能
Cloud Bigtable
  • Google内部で10年以上使われていた大規模NoSQLを外部向けサービスとして公開した製品
    • HBaseやCassandraにも影響を与えた
  • 数百ペタ倍とまでのスケーリングを自動で行う
  • 低レイテンシ、高スループット
Big Data
BigQuery
  • 数TB大規模データセットに対して、高速&安価にクエリ実行可能なデータウェアハウスサービス
  • 大規模データセットに対するクエリ実行に、内部では数千台規模のマシンが使用される
Cloud Dataflow
  • 大量データに対するバッチおよびストリーミング処理を実現するフルマネージドサービス
    • HadoopやSparkの後継
  • 1つのアプリケーションコードがバッチ処理とリアルタイム処理両方をカバーできる
  • Apache Beamとしてオープンソース化されている
Cloud Dataproc
  • HadoopやSparkのジョブをGCP上で実行できるようにしたもの
  • オンプレや他クラウドで動かしていたHadoopやSparkを利用する場合にはCloud Dataflowより得策
Cloud Pub/Sub
  • 大規模かつ高速なメッセージングサービス
  • 秒間100万以上のメッセージを1対1、1対多、多対多、問わず低遅延で配信可能
APIサービス
Cloud Endpoints
  • AppEngineのアプリケーションから容易にRESTful APIを作ることが可能
  • iOSやAndroid、Javascriptクライアント用のライブラリを自動生成し、フロントエンドと簡単に通信
Translate API
  • 他言語間の翻訳APIサービス
  • Google翻訳と同様の翻訳サービスをAPIとして提供
Prediction API
  • 機械学習アルゴリズムを利用できる、データの分析と予習のためのAPI
ネットワーク
ロードバランシング
  • Googleサービスを支えるロードバランサを利用できる
  • ネットワークバランシング
    • リージョン内のインスタンスプールに対してTCP/UDPパケットを負荷分散
  • HTTP/HTTPSロードバランシングが存在する
    • グローバルロードバランサの機能をもっており、1つのIPでバックエンドリソース全体にアクセス可能
    • ユーザのリクエスト元を認識し、最も近いデータセンタにルーティング
DNS
  • 画面やAPIから設定できるDNSサーバサービス
  • Googleが世界中に展開しているAnycast DNSサーバのネットワークからは、信頼性が高く弾力的で低レイテンシのDNSサービスを得ることが可能
管理
Deployment Manager
  • Compute Engineの環境に各種ミドルウェアまで導入済みのサーバを自動的に立ち上げてくれるサービス
  • WordpressやLAMP構成は数クリックで立ち上げ可能
Logging
  • GCEやGAEのログを集約するサービス
  • BigQueryに流しこむことも可能
  • メトリクス設定する事で条件に合致した場合にアラートをあげるMonitoringと連携可能
Monitoring
  • 監視サービス
  • StackDriverというサービスをGCPに統合する形で提供
  • 死活監視、ログ監視、性能監視、ダッシュボードなど様々な監視が可能

他のクラウドとの比較

ここも面白い内容でしたが、詳細は書籍を読むとして特に印象に残った部分だけ抜粋します。

  • グローバルネットワークを持っている事でできるグローバルロードバランシングが可能
    • 固定IP1つで複数リージョン(米国とアジアなど)をまたいだロードバランシングが行える機能

GCPの特徴とメリット

グローバルネットワーク
  • 各データセンタはプライベートネットワークで繋がった状態がデフォルト
  • ロードバランサもグローバルで展開可能
  • 帯域品質はyoutubeなどでお墨付き
ライブマイグレーション
  • 物理サーバ間での仮想マシンインスタンスの移動が無停止で行われる
  • クラウド便だの都合によるHW・仮想化はイパバイザ側のメンテナンスによる停止時間が理論上発生しない
ロードバランシング性能
  • 数秒で100万同時アクセスがきてもさばけるレベル
  • グローバルIP1つでリージョン間を跨いだ振り分けが可能
Preemptibleインスタンス
  • 正規料金の3割りで利用できるインスタンス
  • 24時間以内に必ずGoogle側の都合でシャットダウンされる
課金について
  • 使った分量による課金
  • ムーアの法則による減額を行う
性能・コストパフォーマンス
  • 起動が早く性能が安定している(他クラウドと比べて)
運用性・アカウント管理
  • Googleアカウントで行われる
  • Gmail、Google Apps、任意のメールアドレスによるGoogleアカウントが利用可能
  • ブラウザからのアクセスでGoogleアカウント認証を行うため、証明書等を配る運用の手間がない
サポート
  • サポートサービスに入ることで日本語のサポートも可能
  • サポートメンバの技術的スキルも非常に高い
  • 回答までの時間も非常に早い(プランにはよる)
ビッグデータ処理
  • 分散処理に必要な点において圧倒的な優位性をもっている
    • 短時間起動
    • 短時間課金
    • インスタンスの安定した性能
    • ネットワーク性能
    • 負荷分散装置の性能

GCPにお足りないところ

  • 実績
  • 日本語のドキュメント不足
  • 日本リージョン不足

おわり

かなりサクサク読めました。
Google Cloud Platformがどんなものかかなりわかりやすく書かれていて良かったです\(^o^)/