SHOEISHA iD

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

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

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

大規模データ解析サービス実現のために、Google Cloud Platformが果たす役割

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

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

 この連載では、最近盛り上がりを見せているGoogle Cloud Platform(GCP)の実践例を、大規模データ解析サービスでの実際の利用例、ノウハウなどを中心に解説していきます。「KARTE」というリアルタイム解析サービスを提供している、PLAIDのエンジニア陣が、KARTEの実現を例にとって説明します。第1回である今回は、大規模データ解析サービスを提供するにあたり、どのようなGCPのサービスが必要となるのか、GCPの果たす役割などを説明します。

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

大規模データ解析サービスを実現する、とは?

 今この文章を書いているMacBookで、Webサイトのアクセスデータを解析するサービスを実現するとしましょう。現在は技術が発展し、少し前に比べたら、PCの処理能力、データの保存領域の大きさは格段に向上しています。また、ものすごく解像度が高い映画を簡単に再生できるようにもなっています。このような環境下でサービスを実現することは、果たして可能なのでしょうか? 大規模データ解析サービスを実現するためのインフラについて、MacBookを例に考えてみましょう。

データ解析サービスとは

 そもそもデータ解析サービスとはどういうものなのでしょうか?

 データ解析サービスは、データから何らかの知見を得て、サービス改善など、大切なことを実現するための行動につなげる役割を担っています。この役割を果たすには、行動につながる可能性を最大限にするため、なるべく多くのデータを処理することが重要になります。

データ解析サービスのポイント

 「なるべく多くのデータを処理する」ということにはいくつかのポイントがあります。

 一つ目は、できる限り多くのデータを対象とするというポイントです。例えばWebサイトの解析を例に考えると、アクセスするユーザーすべての情報、サイトの閲覧、問い合わせ、購買などのユーザーが起こすさまざまな行動、色々なデバイスからのアクセスなどが処理対象になります。複数のユーザーの継続的な行動のデータを処理するということは、同時に多くのデータを処理する必要があるということです。これをMacBookで実現するには、外部ネットワークに公開した上で、同時に多数のクライアントからの接続が確立できるようにして、リクエストを処理する必要があります。

 二つ目は、情報量をなるべく減らさないというポイントです。受け取ったデータの情報量を減らすと処理的には楽になります。ですが、情報量を減らすためには、あらかじめ使い方を考えておく必要があります。例えば、秒間500データ処理するとして、大きめに見積もったデータは2KBだとします。そうすると、一年間で 2×500×60×60×24×365 = 31,536GB 程度のデータを処理する必要があります。これを保存しておくことだけを考えても、私のMacBookの保存領域は500GBなので、この処理の実現はかなり難しそうです(ただし、データの読み書きのスループットという観点では結構余裕があるので、高画質の映画を再生することは可能です)。

 三つ目は、データに抜けがないというポイントです。特定の時間でデータが欠損したり、高い確率でデータが欠損したりする状況になると、行動するための正しい判断ができなくなってしまいます。また、MacBookの電池がなくなった、ネットワークが不安定、OSアップデートで再起動などの状況が発生してしまうと、データを処理できなくなってしまいます。

 他にもポイントはあると思いますが、これらの大事なポイントを実現するには、同時に処理するための接続数としてのスループット、情報量を減らさず処理するための量としてのスループット、データをためておくための保存領域、データを抜けなく処理するための安定性、などが大事になってきます。

 どうやら私のMacBook一台では、小規模のWebサイトの解析をそこそこの安定性で実現できそうですが、サービスとして提供するには難しそうです。つまり、この辺りが大規模データ解析サービスを実現する上での課題となります。

行動につなげるためのリアルタイム性

 データ解析から得られた知見を行動につなげるためには、今まで挙げた解析サービスの「データを処理する」というポイントに加えて、データの「解析結果を得る」ことが必要になります。これはデータ処理の開始から解析結果を得るまでの時間の幅に応じて、システムの構成やアルゴリズムなどのアーキテクチャが変わってくるためです。

 私がエンジニアとして働いているPLAIDでは「KARTE」という大規模データ解析サービスを提供しています。

 KARTEは、Webサイト解析ツールの一種です。先ほど述べた、解析サービスの特徴である大量のデータを受けることができ、データの情報量をなるべく落とすことなく、情報が欲しい時に後から解析できます。また、データの欠損が少ないという性質も備えています。それに加え、リアルタイムに解析結果を得られるという特徴を持っており、その解析結果を用いて、サイト上でポップアップを出す、メールやSMSの送信をするなど、さまざまなアクションをデータを取得したタイミングで行えます。

KARTEの概念図
KARTEの概念図

 リアルタイムにデータを解析するためには、解析が終わるまでレイテンシが最重要となります。また、基本的にはデータを一旦ためておいて後から処理することはできません。急激なアクセスの増加などに対応するためには、短い時間でのスケーラビリティが重要となります。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
解析サービスを実現するために必要な要素

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

  • このエントリーをはてなブックマークに追加
大規模解析サービスを支えるGCP活用事例連載記事一覧

もっと読む

この記事の著者

牧野 祐己(株式会社プレイド)(マキノ ユウキ)

 株式会社プレイド エンジニア。 2014年から、プレイドでデータ分析エンジンの研究開発を担当。その他、エスプレッソマシンの傍らで、流行りのサードウェーブコーヒーを推進するために、3時頃からハンドドリップコーヒーを抽出する業務も担当。2009年から2014年まで、IBMソフトウェア開発研究所で研究開...

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10350 2017/08/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング