SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

大規模解析サービスを支えるGCP活用事例

GCPとAWSのマルチクラウドで構築する、大規模解析サービスのシステム全体像

大規模解析サービスを支えるGCP活用事例 第2回


マルチクラウドで大規模解析サービスを構成する

 ここまでで、GCPを活用した大規模解析サービスの構成についてはご理解いただけたと思います。GCPだけでも大規模解析サービスを提供することができますが、ここからはさらなる発展形としてGCP以外のクラウドサービスも利用するマルチクラウド構成についてお話したいと思います。

 KARTEでは以下のようなモチベーションでGCPとAWSをマルチクラウドで利用しています。

アベイラビリティのさらなる向上

 フルマネージドなクラウドサービスを使ったり、GCEインスタンスを複数並べたりするなどクラウドサービス内で冗長構成を取ることでアベイラビリティを高めることができますが、そのクラウドサービス自体で障害が発生することもあります。

 GCPでもLoad Balancerがリクエストをサーバにフォワードできず、502のレスポンスを返すという障害が起きたことがありますが、このようなケースでは監視によって問題を検知したところで、障害がいち早く復旧するよう、祈る他ありません。

 クラウドサービスの障害が起きて、大規模解析サービスに不具合が生じることは、サイト管理者から見ると、大規模解析サービスを提供している側の問題でしかないので、そのリスクをしっかりと考えることが大切です。

 マルチクラウドな構成にしておくことで、あるクラウドサービスで障害が起きたとしても影響を抑えることができます。

 まずはGCEインスタンスに上に構築したMongoDBを、AWS上のAmazon Elastic Compute Cloud(EC2)にレプリケーションを取るという例で考えてみます。

 この構成を取るためには、GCEとEC2が相互にセキュアに通信できることが必要となります。

 方法としては色々と考えられますが、GCP、AWSどちらもサポートしているIPSec VPNを使うこととします。

 VPNであればプライベートネットワークを拡張する形となるので、比較的簡単に相互に通信できる環境を作成することができます。

 相互通信できるようになれば、あとはMongoDBの機能を使ってReplicationを行えばMongoDBにおけるマルチクラウド環境の完成です。

 MongoDBが稼働するGCEインスタンスが障害を起こしたとしても、EC2側を参照するようにすれば、GCEインスタンスの障害に影響に引きずられることなく大規模解析サービスを提供し続けることが可能になります。

 また、trackコンポーネントにおいてもAWSのElastic Load Balancing(ELB)+EC2+Autosaclingを用いることでマルチクラウド構成が実現可能です。MongoDBでの例と同じようにIPSec VPNでGCEとAWSとの接続が前提となりますが、GCEのtrackコンポーネントで障害が起きた際には、DNSなどでユーザからのリクエストをAWSのtrackコンポーネントに振り分けることで、大規模サービスの継続的な提供が可能になります。

 このように、どのクラウドプラットフォームベンダーも似たようなクラウドサービスを提供していることが多いので、コンポーネントのさまざまな箇所でマルチクラウド構成をとり、アベイラビリティをさらに高めることができます。

図9  

適材適所なサービス利用

 さまざまなクラウドプラットフォームベンダーが、さまざまな特色のクラウドサービスを提供していますが、それぞれのサービスには得意、不得意な部分があります。マルチクラウドという視点を持ち、適材適所でそれぞれのクラウドサービスを使うことで、さらなるパフォーマンスの向上や開発/運用の効率化が期待できます。

 KARTEにおいてはリアルタイムな解析用DBはBigtableを選択し、Bigtableと多く通信するアプリケーションをGCEで稼働させたことで、パフォーマンスが大きく改善し、コストについても大きく削減されました。もちろんEC2からもBigtableを利用することは可能ですが、その際はインターネットを介しての通信となってしまいます。これは通信コストの追加課金、Latencyの悪化などが発生してしまうリスクがあるのでGCEからの利用をおすすめします。

 また、trackerコンポーネントはAWSのCloudFront+Amazon Simple Storage Service(S3)で実現し、こちらをメインで利用しています。多くのユーザでの実績があるとともに、AWS Lambdaなどを用いて運用の自動化などが簡単で柔軟に行えるためです。

図10 

まとめ

 以上、大規模解析サービスのシステム構成の全体像についてお話しました。

 GCEで構成されたtrack、admin、analyzeコンポーネントについては、Autoscalingの構成を取ることで、trackerコンポーネントでは、Cloud CDNを活用することでスケーラビリティとアベイラビリティを確保することが可能です。

 dbコンポーネントでは適材適所にDBを選択することが重要で、Bigtableなどのフルマネージドなサービスを活用することでスケーラビリティとアベイラビリティを確保しつつ、さまざまな構造のデータに対して高いパフォーマンス出すことができます。

 障害などの予期できない問題に対して迅速に対応するためには、Stackdriverのような監視サービスを利用することが重要です。

 また、マルチクラウド構成を取ることで、さらなるアベイラビリティの向上と共に、適材適所なサービス利用によりパフォーマンスの向上や開発/運用の効率化も期待できます。

 次回以降は今回説明した構成の中で重要なポイントについて、より詳細に説明していきます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
大規模解析サービスを支えるGCP活用事例連載記事一覧

もっと読む

この記事の著者

竹村尚彦(株式会社プレイド)(タケムラ ナオヒコ)

 株式会社プレイド エンジニア 2014年からプレイドで、インフラを中心にKARTEの裏側を全般的に担当。 プレイド入社前はNECにてクラウドサービスの立ち上げにエンジニアとして従事。 2011年、同志社大学工学部を卒業。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10401 2017/10/05 11:50

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー