SHOEISHA iD

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

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

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

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

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

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


GCPを活用して大規模解析サービスを構成する(1)

 まずはGCPを活用したシステム構成について、オーソドックスな構成のtrackコンポーネントから順番に説明していきます。

trackコンポーネント

 trackコンポーネントでは、エンドユーザからリクエストを受けて、レスポンスを返すことが必要となるので、Google Compute Engine(GCE)上にWebサーバを構築します。

 GCPでは、コンピューティングリソースはGCEのほか、Google App Engine(GAE)、Google Container Engine(GKE)などがあります。それぞれ特徴があり、用途によって適切なリソースを選択することになりますが、KARTEではIaaSとしてコンピューティングリソースが提供されているGCEを利用しています。IaaSのレイヤーでサービスが提供されているので、カスタマイズ性が高いと同時に、何かがあった時に他のクラウドプラットフォームに移すことが比較的簡単にできるからです。

 GCEを使ったWebサーバの一番シンプルな構成は、エンドユーザからのリクエストをGCEインスタンス1台が直接受けるというものになります。ですが、この構成ではGCEインスタンス1台のマシンスペックがボトルネックとなってしまいます。

 そこで、Cloud Load BalancingとAutoscalingを使い、複数のGCEインスタンスを1つのコンピューティングリソースのように扱います。Cloud Load BalancingとAutoscalingは、具体的には以下の役割を担っています。

  • Cloud Load Balancing:エンドユーザからのリクエストを複数のGCEインスタンスに分散
  • Autoscaling:負荷に応じて自動的にGCEインスタンスを増減

 エンドユーザからのリクエスト数の予測が難しく、データの欠損はできるだけ抑えないといけないという大規模解析サービスの特性上、この仕組みはとても重要になります。

 trackコンポーネントGCE+Autoscaling+Cloud Load Balancingで構成します。

図3 

adminコンポーネント

 adminコンポーネントでは、trackコンポーネントと同様に、ユーザから直接リクエストを受けてレスポンスを返すことが必要となるので、Webサーバ(Admin)をGCE上に構築します。

 ただ、リクエストを投げるユーザがエンドユーザではなく、サイト管理者となるので、trackコンポーネントよりリクエスト数は少なくなると考えられます。

 したがって、trackコンポーネントと同じGCE+Autoscaling+Cloud Load Balancingで構成すれば問題ありません。

図4 

analyzeコンポーネント

 analyzeコンポーネントではエンドユーザのデータを解析するサーバ(Analyzeサーバ)をGCEで構築します。

 Analyzeサーバへのデータの受け渡しは、イベントの処理順序の担保、欠損の防止などを目的に、以下の流れでメッセージキューを用いています。

  • Trackサーバが受け取ったエンドユーザのデータをメッセージキューに積む
  • Analyzeサーバがメッセージキューからエンドユーザのデータを取得し、解析する

 またこのメッセージキューは全Analyzeサーバから参照が可能で、この仕組みによりanalyzeコンポーネントではCloud Load Balancingを利用せずに負荷分散を実現しています。

 メッセージキューはインメモリKVSであるRedisや、Google検索/Gmailでも使われているCloud Pub/Subなどで実現が可能です。それぞれ特性があるので用途において使い分けること、このキュー自体がボトルネックにならないようにすることが重要です。

 インスタンスの増減については、track/adminコンポーネントと同様にAutoscalingを利用しています。

 analyzeコンポーネントは、GCE+Autoscaling+メッセージキュー(redis、Cloud Pub/Subなど)で構成します。

図5 

次のページ
GCPを活用して大規模解析サービスを構成する(2)

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

大規模解析サービスを支えるGCP活用事例連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー