- 株式会社トップゲート
- ソリューション事業本部
- 石村 真吾
Google Cloud Platform の強さの秘密と、押さえるべき3つのサービスとは
今回のソリューション:【Google Cloud Platform/グーグルクラウドプラットフォーム】
〜インフラ界の、黒い宇宙船!? 話題の「Google Cloud Platform」の押さえるべきサービスを徹底解説〜
Googleが提供するパブリッククラウドである「Google Cloud Platform」。Gmail や YouTube などのGoogleサービスと共通のインフラを使うことで、圧倒的なパフォーマンスを発揮できるのが特徴だ。
今回は、国内で唯一「Google Cloud Platform認定トレーニング」を提供している株式会社トップゲートの石村 真吾さんに、その強さの秘密や抑えるべき3つのサービスについてお伺いした。
Google Cloud Platform のトレーナーを務める
僕は岡山の人間で、最初の就職先も岡山のSlerでした。でも仕事があまり面白いと思えなくて、2009年に退職し、 Google App Engine をネタにブログを書いていました。そんな時に知り合いに声をかけてもらって東京に来て、トップゲートに入社しました。
トップゲートには Google App Engine のエンジニアとして入ったので、メインの仕事は Google App Engine を使ったWebアプリの開発です。その他に、月の半分ほどは Google Cloud Platform の研修トレーナーをしています。
トレーニングの内容としては、各サービスを一通り6日間かけて教えるものになります。トレーニングを終了すると認定試験を受けることができ、合格すると資格がもらえるという仕組みです。
強みは、Googleの他サービスと同じインフラが使えること
Google Cloud Platform は全体的に「Google Way」という雰囲気が強いサービスです。このサービスの最大の強みは、Googleのすべてのサービスと同じインフラが使えることですね。
Googleのデータセンターでは、このサーバーラックは YouTube 用、このサーバーラックは Googleカレンダー 用、といったことが決まっておらず、どのサーバーでも任意のサービスを提供できます。これは、すべてのサービスがコンテナによって提供されているからです。スケールのマネジメントはそのコンテナの上げ下げによって実現します。
例えば、 YouTube のリクエストが多ければ、 YouTube のコンテナを増やし、リクエストが少なくなったら YouTube を落としてまた別のものを立てる。
それがデータセンター全体で行えるようになっています。Googleの他のサービスを動かしているレベルのインフラを誰でも利用できるというのは、すごいことですよね。
そしてこのGoolgeのインフラの強さの秘密は、データセンターの自作ハードウェアにあります。例えばネットワークのスイッチひとつとっても、すべてがGoogle製なんです。
また、Googleのファイバーネットワークも、インフラの強さに大きな影響を与えています。アメリカ、アジア、ヨーロッパの3箇所にあるGoogleのデータセンターは、自前のファイバーネットワークで接続されています。そのネットワークに入るためのインターネットエクスチェンジが、日本では東京と大阪にあります。
例えば、アメリカで動いていると思われる Gmail にここ(文京区本郷)からアクセスする場合、インターネットを介して東京からアメリカまで行くと思うかもしれませんが、公共のインターネットで通信するのは本郷から東京のインターネットエクスチェンジまで。
そこからはGoogleのファイバーネットワークを通って海を越えるので、アメリカまで行って帰ってきているわりには、レイテンシー(遅延)が低くなります。
押さえるべきサービス① Google Compute Engine
Google Cloud Platform には様々なサービスがありますが、Amazon EC2にあたるのが Google Compute Engine (以下、 Compute Engine )です。Googleのインフラを使うことで、インスタンスが30秒〜1分で立ち上がることが強みです。
ある会社のエンジニアさんの実験によると、1,000台のサーバーを一気に立ち上げる時、他のパブリッククラウドだと何台か立ち上がらなかったんですが、Compute Engineを使うと1分以内に1,000台がきれいに立ち上がったそうです。
また、ロードバランサーがとても強力で、いきなり1M req/sをさばける能力を備えています。これはロードバランサーがGoogleサービス全体で共有しているリソースだからです。
自分のCompute Engineへのリクエストが無かったとしても、世界中にGoogleサービスのユーザーが、常にロードバランサーを温めてくれています。
インスタンスが立ち上がるスピードが速いので、容易にサーバーを上げ下げすることが可能です。課金の仕組みもそれを前提に作られています。インスタンスを立ち上げたら最初10分間の料金が決まっていて、そこからは1分単位の課金になります。バーっと分散して処理し、終わったらすぐにサーバーを落とすことができるのが醍醐味ですね。
押さえるべきサービス② Google BigQuery
Google Cloud Platform のサービスの中では、 Google BigQuerty (以下、BigQuery)も注目度が高いですね。 BigQuery はビッグデータを解析するためのサービスですが、最大の特徴はテラバイト単位のデータであっても、数秒でフルスキャンできる点です。しかも安い。昔からすると、ちょっと考えられないくらい安いですね。
そもそもディスクからメモリに読み込むだけで、普通は数秒かかってしまいます。その上でそれを全部スキャンして、集計して結果を出してくれる訳ですね。そのスピードの秘密は、先ほども出てきたGoogleのデータセンターにあります。
実行すると、データセンターの空いているリソースを使って数千台のディスクとインスタンスを動かし、すべて並列に処理を行うので、速いし安いんです。
同じサービスを作ろうとすると、数万台規模のデータセンターを用意する必要があります。すさまじいお値段になるので、同等のサービスは早々出てこないと思います。
用途としては、例えば小売店の顧客データの解析にも使われています。全国に店舗を持っているような規模の小売店さんだと、POSデータの量も膨大です。
例えば「月曜日に打ったイベントの結果を分析して、次の日の仕入れを決めよう」というケースで、分析結果が出るのに半日くらいかかっていると発注が間に合わない。でも BigQuery を使えば、それをスピーディーに分析することができます。
このように、ある程度のデータ量を持っている場合は、自分で頑張ってインフラを組むよりは BigQuery にデータそのまま入れてしまった方が早いと思います。
押さえるべきサービス③ Google App Engine
Google Cloud Platform の中で一番古くからあるサービスが Google App Engine (以下、App Engine)です。App Engine はHerokuなどと同じようなPaaS(Platform as a Service)の一種です。
最大の強みは、高いスケーラビリティを確保した上でインフラ管理なしでアプリケーションを作れることです。最近やっと時代が追いついてきて、AWSもPaaSに力を入れようとしていますよね。
App Engine に向いているのは、アクセスが短時間に集中するようなWebアプリケーションです。Compute Engine でもオートスケールはありますが、インスタンスを作るのに30秒くらいかかります。これでも十分早いのですが…。
App Engine であれば、Javaを使う場合は5秒ほど、Go言語を使う場合だと40ミリセカンドほどでインスタンス立ち上がります。
Go言語の場合は特に早くて、例えばインスタンス数がゼロの状態で瞬間的に1,000リクエストが来たら、一瞬で80インスタンスが立ち上がってすべてのサーバーが動き始めます。リクエストが減るとインスタンスも一気に減っていくので、コスト面でも有利です。
そしてそれをすべてプラットフォーム側で自動で実行してくれるので、我々は何の設定もしなくて良いんです。アプリケーションを作ってデプロイしたら、それでおしまい、というのが非常に良いところですね。
インフラエンジニアの方でも「 App Engine は便利ですね」と言う人はいます。例えば、絶対に落ちたら困るようなシステムを作るのは大変ですよね。落ちたらリトライするような仕組みにするわけですが、その落ちたことを検知するサーバーが落ちたらどうするのか、とか。
このように絶対に落ちないシステムを作るためには、なるべく落ちない「何か」が欲しいわけですけど、それが App Engine です。
App Engine から Compute Engine のAPIを叩いてインスタンスを起動して、落ちたらまた App Engine で Compute Engine のAPIを叩いて再起動させる。そういう感じで薄くマネジメントの領域で App Engine を使う事例があります。
気をつけないといけないのは、 App Engine のインスタンスは上げ下げが非常に激しいので、ステートフルな状態にしておくとメモリ上の情報がなくなってしまいます。なのでメモリ上の情報は外部のサービスに保存しておいたほうが良いです。
App Engineではデフォルトのデータベースとして、KVSのDatastoreを採用しているので、大抵ここに保存します。ただ、KVSはシンプルに使うのは楽ですが、複雑なことをしようとすると、少しテクニックが必要になります。RDBしか使ったことがない人には、ちょっと使いづらいかもしれません。
Google Cloud Platform は黒い宇宙船?
Google Cloud Platform を見ていると、これからのパブリッククラウドの動向はチェックしておかなければいけないな、と思います。Googleすべてのサービスと同じインフラを使えるというのはすさまじい破壊力で、黒船というレベルではなく、もはや黒い宇宙船です(笑)。すでに東京に鎮座している宇宙船。
しかもまだ Google Cloud Platform には東京リージョンがないんですよね。今後もし東京リージョンができれば、一気に伸びる可能性もあります。あとは日本語環境が揃ってくれば、もう誰も止めることはできないのではないでしょうか。(了)