Cloud OnAir 第2回 ~ GCP の アプリランタイム について学ぼう ~ 速報まとめ

  • このエントリーをはてなブックマークに追加

2017年10月5日より、隔週木曜 18:00~18:45にGoogle社のエンジニアがGoogle Cloud Platformの製品、サービスや導入事例等を解説する番組が始まりました。動画を見逃した方、見る時間が無い方向けにどのようなことを配信したのかについてクィックに紹介したいと思います。

第2回目のCloudOnAirはGCPの各クラウドコンピュートについてです!

GCE、GKE、GAEそれぞれの使いどころや特徴と、それを動かすGoogleの途轍もなく大きいインフラをご紹介していきます!

Googleのサービスを支えるインフラ

Googleでは、それぞれのサービスで10億人ものユーザーを抱えているので、それを処理するための大量のコンピュータが用意されています。

有名な所では、Google検索エンジンです。

検索エンジンの中では世界中の情報を貯めていき、整理して、情報が欲しくなったタイミングで素早く提供するという事をしている。

そういった事をする人が10億人も居るとそれは大変なトラフィックになってしまうので、普通のサーバではパンクしてしまうが、Googleが所有している大量のコンピュータのおかげで誰も不自由なく使用できている。

Googleのデータセンターでは自分たちでサーバを自作をして自分たちに必要なサーバを作っています。

その中でも重要なのが世界中に散らばっているGoogleのサーバ全体を1つのコンピュータとして見るという考え方のもと作られたソフトウェアであり、Googleのサービスを支えるためのインフラとなっています。

プラネットスケールインフラストラクチャ

過去三年間GoogleCloudだけで3兆5千億円もの投資をして、GCPのサービスを利用するためのリージョンを現在進行形で作っていっている。

最近東京リージョンを発表した事で、日本でのアクセスもどんどん増えて行っている。

GCPとはこの強力なGoogleのデータセンターをそのまま個人で使えるというサービスになっています。

GoogleComputeEngine(GCE)とは?

Googleのサーバで動作する、仮想マシンを秒単位で提供するサービスです。

  • OS以上のレイヤーはお客様管理
  • LiveMigrationによりGoogleのメンテナンスによるダウンタイムなし
  • 突発的なスパイクに対応できるロードバランサ
  • マルチゾーンでオートスケール可能

というサービスを提供しています。

LiveMigration = No Downtime

一般的に物理的なサーバをメンテナンスしたい場合はサーバ全体を止めなければいけない、そのためメンテナンス時にはダウンタイムと言われる、お客様が接続できない時間が存在してしまう。LiveMigrationを使うとサーバを動かしたままもう一つのサーバへ引っ越しをして、空になったサーバをメンテナンスしているので、ダウンタイムは存在せずに利用する事が可能になっています。

VMNetworking

16Gbpsという高速な回線を、GCEで仮想マシンを立てた瞬間に、デフォルトでグローバルなプライベートネットワークを専用の回線として引いてくれます。

世界中の人がアクセスする場合にも1つのIPアドレスで世界中のサーバに対してロードバランスしてくれる仕組みもあります。

より手軽に始められるCloudLauncher

あらかじめ設定されているアプリケーションを自動的に展開してくれる仕組み。

例えば、ブログを作りたいと言う時に普通なら自分で作らないといけないが、ボタンポチポチするだけで作成可能。

その後は自分で管理、パッチなどは自分で当てなければいけない。

GCPを始める入り口としては非常に良い選択肢です。

GoogleConteinerEngine(GKE)とは?

まずコンテナとは、コードと依存性をひと固まりにまとめるものです。

メリットとしては

  • デプロイ単位の単純化
  • アプリケーションとインフラの疎結合化
  • 起動が早い

となっています。

例えばGCEでブログを作るとなった時にコード1個間違えるとキチンとブログが表示されないや、1000個作ってくださいとか言われた時にすごい大変なのだが、それを一つの固まりにしておいてそれをコピーしちゃえばいいじゃん!みたいなものがコンテナとなっています。

Dockerとは?

コンテナ技術を使う際に使われるのがDockerと呼ばれるコンテナの実行環境なんですが、Dockerをいざ実践投入とすると

  • 複数のノードにどうやってデプロイする?
  • ノードがダウンしたらどうする?
  • コンテナで障害が発生したらどうする?
  • アプリケーションの更新はどうする?
  • コンテナ間の通信はどうする?

といった、問題が付きまとってしまいます。

Googleではずっとコンテナを使ってきたので、これから先どんな苦労をするだろうという事がある程度ノウハウとして、持っています。

そういった問題を解決するためのKubernetesというオープンソースのソフトウェアが存在しています、今までGoogleが苦労してきた問題をKubernetesを使う事によって綺麗に解決出来るようになってきている。

それをGCP上ではGKEとして、Kubernetesのマネージドサービスとして提供しています。

使用方法は、Dockerコンテナを持ち込みさえすればOK。

Kubernetesの新バージョンなども、大体次の日にはGKEに反映。Alphaクラスタという開発中の機能も気楽に試せる、Dockerとの親和性が非常に高いサービスになっています。

Dockerを動かすならGKE、と言われる事を目指しています!

GoogleAppEngine(GAE)とは?

Googleでは10年間にわたりすべてのサービスをコンテナで動かしてきています。毎週20億以上のコンテナを立ち上げてサービスしています。GoogleAppEngine(GAE)は、2008年から提供しているGoogle独自のコンテナ技術であり、Platform as a Serviceとも呼ばれるWebアプリケーション専用のサービスです。

ユーザーはGAEの作法に従ってアプリケーションを開発してデプロイすることで、アプリケーションの運用部分をすべてをGoogleに任せることができます。

また、サービスのアクセス数が増加した際に自動でスケールアウトする機能がります。GCEでスケールアウトする際はだいたい10分程度(※)必要となりますが、GAEであれば数10ミリ秒~数100ミリ秒でスケールアウトが完了します。

(※)編集部注: GCEインスタンスのスケールアウトは、弊社の経験上、通常数十秒程度で完了すると考えております。リソース消費が爆発的に増加したケースや、サービス起動に時間がかかるアプリケーション等では10分程度かかると考えられます。

GAEのデプロイは非常に簡単であり、「gcloud app deploy」コマンドを実行することでデプロイ完了します。(ただし、アプリケーションの定義などについてはGoogle金子さんが準備されておりました。)

GAEのアプリケーションをデプロイすると、その裏で様々なセットアップを行っています。例えば、以下のような設定です。

  • ロギング
  • 自動スケーリング
  • 負荷分散
  • 監視
  • ヘルスチェック
  • SSLとドメイン

GAEは単にアプリケーションを公開するだけでなく、以下のような公開設定を行うことも可能です。

  • ブルーグリーンデプロイメント
    • 現行と新バージョンを並行稼働させてリスクを最小化する
  • カナリアリリース
    • ごく少数のユーザのみ新バージョンを公開して反応を確認する
  • A/Bテスト
    • 別バージョンを交互に参照させてユーザーにテストさせる

OnAirでは、実際にトラフィックでアプリを分割するA/Bテストのデモを行い、画面を更新するたびに背景が変わるような動作を見ることができます。また、OnAir中にすぐ設定を変更して動作が変わるため、GAEの設定の容易さを見ること体験できました。Cookieによる分割の場合は、ユーザー毎に表示するアプリを固定することも可能になります。

ただし、GAEはWebベースのアプリケーションしかデプロイできないという制約があるため、Webベースではないアプリケーションをそのままデプロイすることはできません。

Questions

Q:GCEのライブマイグレーションは動いているアプリケーションに影響はないのか?

A:「影響はない」実際にはナノ秒オーダーの遅延時間はあるが、ごく限られた時間で切り替えを行うため影響はほぼないと言える。

Q:GKEを使っているユーザで公開されているユーザはいるのか?

A一番有名な事例として、Pokemon GOでGKEを使用している。

Q:GAEは独自ドメインでも使えますか?

A:デモではappspot.comのドメインを使用していたが、独自ドメインで使って頂く事も可能。

Q:GAEのログはどこにたまりますか?

A:Stackdriver LoggingにGAEのログが出力される。Stackdriver LoggingのデータをBigQueryの方に流し込めるため、例えばA/BテストのログをBigQueryで分析して一番良い結果のアプリを割り出すことも可能。

Q:GCEでWindows Server OSを動作させることは可能ですか?

A:GCEでは世の中標準に合わせていくので、Windows Serverももちろん使える。
OSライセンスはGoogle経由で支払う。

まとめ

今回のOnAirではGCPにおける3つのサービスを紹介しました。

  • Google Compute Engine (GCE)
    • オンプレミスのサーバでも動作するアプリケーションをデプロイできる
  • Google Container Engine (GKE)
    • DockerコンテナをKubernetes上にデプロイできる
  • Google App Engine (GAE)
    • Googleの独自の技術を使い、運用負荷がほぼない環境
    • WebアプリケーションやAPIで使用できる

今回のOnAirの締めは「Datacenter as a Computerのパワーをあなたにお届け」

最後に

次回のCloud OnAirは11月2日です。テーマは「No-ops で大量データ処理基盤を簡単に構築する」です。興味のある方はOnAirの予約を!

当連載では今後も翌日には速報まとめをご提供しますので、是非ブックマークを!

弊社クラウドエースでは、GCP料金を円で決済できる支払い代行サービスや、GCPの技術サポートサービスなどを提供しております。GCPに関する相談から、オンプレからクラウドに移行したいという要望まで、クラウドエースに全ておまかせください!!

参考リンク

Cloud On Air 過去回のまとめ

過去回はCloud OnAir カテゴリにまとめてありますのでで、以前の回を見逃した方はぜひこちらもチェックしてくださいね!

  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら