SlideShare a Scribd company logo
アクセス解析システムの裏側


              三上俊輔



               1
12年9月23日日曜日
目次

              1. 自己紹介

              2. ユーザーローカルとアクセス解析

              3. アクセス解析の基礎

              4. アクセス解析システムの裏側
                 - リアルタイム集計
                 - 小バッチ集計
                 - 大規模バッチ集計

              スライド49枚
                                   2

12年9月23日日曜日
自己紹介
              • 三上俊輔
              • 株式会社ユーザーローカル
              • 今年3月に筑波大学院を卒業
              • 大学では分散ファイルシステムの研究
              • 学生の時はCookpadのデータマイニン
               グ部門で2ヶ月ほどインターン
                        3
12年9月23日日曜日
過去の研究、発表



              • 研究ブログ:http://shun0102.net/
              • 発表:「分散ファイルシステムGfarm
               上でのHadoop MapReduce」など
               - http://www.slideshare.net/shun0102/



                                                       4

12年9月23日日曜日
株式会社ユーザーローカル

     •早稲田発技術ベンチャー

     •無料アクセス解析ツール運営

     •商用アクセス解析ツールの開発/販売

     •データ調査(総務省などの仕事)
       ex. 日本のブログ実態調査など




                          5

12年9月23日日曜日
•PCサイト解析事業
       •「ユーザーインサイト」
       •「なかのひと」
  •モバイル解析事業
       •ケータイ解析
  •ソーシャル解析事業
       •ソーシャルメディア解析

                 6
12年9月23日日曜日
アクセス解析は

              ビッグデータ!
               月間50億PV

               を、解析してます

                  7
12年9月23日日曜日
商用ツール
    ユーザーインサイト

    •有料のアクセス解析ツール
    •ヒートマップ機能と属性解析機能




                        8

12年9月23日日曜日
よく聞かれる疑問



              【アクセス解析】を
              提供している会社は
   いっぱいあるんじゃないの???


                          9

12年9月23日日曜日
国内でも50社以上



                          10

12年9月23日日曜日
11

12年9月23日日曜日
海外有名企業が提供。

              11

12年9月23日日曜日
にもかかわらず、
      国内大手企業が次々導入。



                         12

12年9月23日日曜日
User Insightでは、どこを
         どう見られているかがわかる



                                   13

12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?




               14
12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?




               14
12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?




               14
12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?




               14
12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?




               14
12年9月23日日曜日
訪問者がページの中を
              どう見たのかを、可視化
              ✓クリックが多い場所はどこ?

              ✓どこまで読まれている?

              ✓熟読されている段落は?

               ブラウザの挙動から
                ユーザーの動きを
                    ヒートマップ表示
               14
12年9月23日日曜日
今日のメインはこの有料アクセス解析
                  ではなくて、
              無料のアクセス解析ツールに関して




                                 15

12年9月23日日曜日
うごくひと2

    •10万サイト以上が利用

    •月間30億PV

    •主にガラケー向け




                   16

12年9月23日日曜日
なぜリニューアル?



              • スマートフォン
              • リアルタイム
              • ビッグデータ
               今の40億PVから100億PVへスケール


                                      17

12年9月23日日曜日
新卒で入ってからのミッション



              • 100億PVまでスケールするアクセス解
               析システムのバックエンド

              • アクセスをうけるビーコンと集計する
               バッチをどう構築するか



                                      18

12年9月23日日曜日
まずはアクセス解析の基本から




                   19

12年9月23日日曜日
ビーコン型アクセス解析
 一般ユーザー                            ウェブサイト
                          サイト閲覧




                                   アクセス解析事業者
                   情報送信
              (Javascriptで情報を送る、
        携帯などは画像を読み込ませる)

                              20
12年9月23日日曜日
基本的な指標




        • PV ・・・ アクセス回数
        • VISIT・・・ セッション回数
        • UU・・・ ユニークユーザー数

                             21

12年9月23日日曜日
セッションって何?
           •   一定時間(30分が多い)途切れずに続く一連のアクセス



                                                2セッション

                  0:00            0:50   1:10

                                                1セッション

                   0:00 0:20 0:40 1:00
                             22
12年9月23日日曜日
アクセス解析システム実装の悩み


      •   大量のアクセスを受け付けてリアルタイム集計もするフロ
          ントエンド

      •   リアルタイムでやるには重い処理(JOINなど)

      •   離脱の判定などのセッション単位の集計

      •   人気ページランキングなどの1日単位の大規模集計

      •   全て1日一回のバッチで済ませれば構成はシンプルにな
          るが、バッチが数時間かかるのはつらい

                                       23

12年9月23日日曜日
集計処理の分類




      • リアルタイム集計
      • 小バッチ集計(30分に一回)
      • 大バッチ集計(一日一回)

                         24

12年9月23日日曜日
リアルタイムサマリー




                 25

12年9月23日日曜日
リアルタイム足跡




               26

12年9月23日日曜日
これらの機能を実現するために、、、


      •   カウントアップするためのストレージ

          •   秒間1000~2000アクセス

          •   1回のアクセスで数回のreadとwrite

      •   直近のアクセスを見るためのストレージ

          •   readよりwriteが多い

          •   集計処理

                                      27

12年9月23日日曜日
これらの機能を実現するために、、、


      •   カウントアップするためのストレージ

          •   秒間1000~2000アクセス         速さと安定性

          •   1回のアクセスで数回のreadとwrite

      •   直近のアクセスを見るためのストレージ

          •   readよりwriteが多い

          •   集計処理

                                               27

12年9月23日日曜日
これらの機能を実現するために、、、


      •   カウントアップするためのストレージ

          •   秒間1000~2000アクセス         速さと安定性

          •   1回のアクセスで数回のreadとwrite

      •   直近のアクセスを見るためのストレージ
                                  高い書き込み性能と
          •   readよりwriteが多い
                                      柔軟な集計処理
          •   集計処理

                                                27

12年9月23日日曜日
フロントのシステム構成

              PV, VISIT, UUのカウントアップ




                                 Memcached



                   ログ書き込み




                       28
12年9月23日日曜日
Fluentdでのログリレー
                                 UUなどカウントアップ




                Fluentd      Fluentd                                Memcached



                                         ログ書き込み



                  Fluentd      Fluentd
                   (slave)    (master)




              参考:http://docs.treasure-data.com/articles/td-agent-high-availability
                                                 29
12年9月23日日曜日
Fluentdでのログリレー
                                 UUなどカウントアップ




                Fluentd      Fluentd                                Memcached
                             ポイント1. 次のfluendに書き込めない時は待ってリトライする


                                         ログ書き込み



                  Fluentd      Fluentd
                   (slave)    (master)




              参考:http://docs.treasure-data.com/articles/td-agent-high-availability
                                                 29
12年9月23日日曜日
Fluentdでのログリレー
                                 UUなどカウントアップ




                Fluentd      Fluentd                                Memcached
                             ポイント1. 次のfluendに書き込めない時は待ってリトライする


                                         ログ書き込み



                  Fluentd      Fluentd
                   (slave)    (master)


                             ポイント2. MongoDBへの書き込みはチャンク単位で行う

              参考:http://docs.treasure-data.com/articles/td-agent-high-availability
                                                 29
12年9月23日日曜日
集計処理の分類




      • リアルタイム集計
      • 小バッチ集計(30分に一回)
      • 大バッチ集計(一日一回)

                         30

12年9月23日日曜日
通常の集計処理の結果画面




                             31

12年9月23日日曜日
組織からの訪問回数




                          32

12年9月23日日曜日
小バッチ処理でやらないといけないこと



      • 離脱の判断
      • 組織やユーザエージェントの情報などとの
          JOIN
      • 集計結果をDBに保存

                              33

12年9月23日日曜日
小バッチ処理の流れ

                                組織、ユーザーエージェント情報DB




                               バッチサーバー




               集計結果格納DB    最終的にログをHDFSに保存
                          34
12年9月23日日曜日
集計処理の分類




      • リアルタイム集計
      • 小バッチ集計(30分に一回)
      • 大バッチ集計(一日一回)

                         35

12年9月23日日曜日
大バッチじゃないとできないこと




      • 集計結果としてランキング上位の結果だけ残
          したい

      • 人気ページランキングや参照元のランキング

                               36

12年9月23日日曜日
必然的にHadoopを使用




      • 1日1億PV
      • 非圧縮のJSONログで1日100GB
      • ビッグデータ

                             37

12年9月23日日曜日
MapReduce言語 何をつかう?


       •      Java MapReduce
              - 性能は良い、工数がかかる、一部ではアセンブリ言語と呼ばれる

       •      Hive
              - SQLライク、スキーマ定義必要、効率の良いファイルフォーマット(RCFile)

       •      Pig
              - 独自言語、スキーマ定義不要

       •      Hadoop Streaming
              - 好きな言語で書ける、性能は悪い

                                                          38

12年9月23日日曜日
RCFileが魅力的なのでHiveを使用
     それぞれのRow Groupの中でカラム指向のフォーマット
              必要なカラムだけのread、高い圧縮率
                           最近ではPigもRCFileを使える?




                                             39

12年9月23日日曜日
大バッチ処理の流れ

                                         JSONテキストログを
                                           RCFileに変換
                                        (100GBのログが十数GB
              Hive Server                  程度まで圧縮)




                ランキング集計バッチ処理        集計結果格納DB
                               40
12年9月23日日曜日
Hiveでは細かい処理はしにくい?


      • SQLだけでは出来ることに限りがある
      • UDF (User-Defined Function)
      • UDAF (User-Defined Aggregation Function)
      • UDF, UDAFを使うことによって柔軟な処理!
      • 簡単です
                                                  41

12年9月23日日曜日
まとめ


      •   アクセス解析は、ビッグデータとリアルタイムの両
          立が重要に

      •   リアルタイム、小バッチ、大バッチの3段階集計で
          処理


      ユーザーローカルではウェブ解析に興味のあるエンジ
      ニアを募集中です!

                                    42

12年9月23日日曜日

More Related Content

アクセス解析システムの裏側 (公開用)

  • 1. アクセス解析システムの裏側 三上俊輔 1 12年9月23日日曜日
  • 2. 目次 1. 自己紹介 2. ユーザーローカルとアクセス解析 3. アクセス解析の基礎 4. アクセス解析システムの裏側 - リアルタイム集計 - 小バッチ集計 - 大規模バッチ集計 スライド49枚 2 12年9月23日日曜日
  • 3. 自己紹介 • 三上俊輔 • 株式会社ユーザーローカル • 今年3月に筑波大学院を卒業 • 大学では分散ファイルシステムの研究 • 学生の時はCookpadのデータマイニン グ部門で2ヶ月ほどインターン 3 12年9月23日日曜日
  • 4. 過去の研究、発表 • 研究ブログ:http://shun0102.net/ • 発表:「分散ファイルシステムGfarm 上でのHadoop MapReduce」など - http://www.slideshare.net/shun0102/ 4 12年9月23日日曜日
  • 5. 株式会社ユーザーローカル •早稲田発技術ベンチャー •無料アクセス解析ツール運営 •商用アクセス解析ツールの開発/販売 •データ調査(総務省などの仕事) ex. 日本のブログ実態調査など 5 12年9月23日日曜日
  • 6. •PCサイト解析事業 •「ユーザーインサイト」 •「なかのひと」 •モバイル解析事業 •ケータイ解析 •ソーシャル解析事業 •ソーシャルメディア解析 6 12年9月23日日曜日
  • 7. アクセス解析は ビッグデータ! 月間50億PV を、解析してます 7 12年9月23日日曜日
  • 8. 商用ツール ユーザーインサイト •有料のアクセス解析ツール •ヒートマップ機能と属性解析機能 8 12年9月23日日曜日
  • 9. よく聞かれる疑問 【アクセス解析】を 提供している会社は いっぱいあるんじゃないの??? 9 12年9月23日日曜日
  • 10. 国内でも50社以上 10 12年9月23日日曜日
  • 12. 海外有名企業が提供。 11 12年9月23日日曜日
  • 13. にもかかわらず、 国内大手企業が次々導入。 12 12年9月23日日曜日
  • 14. User Insightでは、どこを どう見られているかがわかる 13 12年9月23日日曜日
  • 15. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 14 12年9月23日日曜日
  • 16. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 14 12年9月23日日曜日
  • 17. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 14 12年9月23日日曜日
  • 18. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 14 12年9月23日日曜日
  • 19. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 14 12年9月23日日曜日
  • 20. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? ブラウザの挙動から ユーザーの動きを ヒートマップ表示 14 12年9月23日日曜日
  • 21. 今日のメインはこの有料アクセス解析 ではなくて、 無料のアクセス解析ツールに関して 15 12年9月23日日曜日
  • 22. うごくひと2 •10万サイト以上が利用 •月間30億PV •主にガラケー向け 16 12年9月23日日曜日
  • 23. なぜリニューアル? • スマートフォン • リアルタイム • ビッグデータ 今の40億PVから100億PVへスケール 17 12年9月23日日曜日
  • 24. 新卒で入ってからのミッション • 100億PVまでスケールするアクセス解 析システムのバックエンド • アクセスをうけるビーコンと集計する バッチをどう構築するか 18 12年9月23日日曜日
  • 25. まずはアクセス解析の基本から 19 12年9月23日日曜日
  • 26. ビーコン型アクセス解析 一般ユーザー ウェブサイト サイト閲覧 アクセス解析事業者 情報送信 (Javascriptで情報を送る、 携帯などは画像を読み込ませる) 20 12年9月23日日曜日
  • 27. 基本的な指標 • PV ・・・ アクセス回数 • VISIT・・・ セッション回数 • UU・・・ ユニークユーザー数 21 12年9月23日日曜日
  • 28. セッションって何? • 一定時間(30分が多い)途切れずに続く一連のアクセス 2セッション 0:00 0:50 1:10 1セッション 0:00 0:20 0:40 1:00 22 12年9月23日日曜日
  • 29. アクセス解析システム実装の悩み • 大量のアクセスを受け付けてリアルタイム集計もするフロ ントエンド • リアルタイムでやるには重い処理(JOINなど) • 離脱の判定などのセッション単位の集計 • 人気ページランキングなどの1日単位の大規模集計 • 全て1日一回のバッチで済ませれば構成はシンプルにな るが、バッチが数時間かかるのはつらい 23 12年9月23日日曜日
  • 30. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 24 12年9月23日日曜日
  • 31. リアルタイムサマリー 25 12年9月23日日曜日
  • 32. リアルタイム足跡 26 12年9月23日日曜日
  • 33. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ • readよりwriteが多い • 集計処理 27 12年9月23日日曜日
  • 34. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス 速さと安定性 • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ • readよりwriteが多い • 集計処理 27 12年9月23日日曜日
  • 35. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス 速さと安定性 • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ 高い書き込み性能と • readよりwriteが多い 柔軟な集計処理 • 集計処理 27 12年9月23日日曜日
  • 36. フロントのシステム構成 PV, VISIT, UUのカウントアップ Memcached ログ書き込み 28 12年9月23日日曜日
  • 37. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ログ書き込み Fluentd Fluentd (slave) (master) 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 29 12年9月23日日曜日
  • 38. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ポイント1. 次のfluendに書き込めない時は待ってリトライする ログ書き込み Fluentd Fluentd (slave) (master) 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 29 12年9月23日日曜日
  • 39. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ポイント1. 次のfluendに書き込めない時は待ってリトライする ログ書き込み Fluentd Fluentd (slave) (master) ポイント2. MongoDBへの書き込みはチャンク単位で行う 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 29 12年9月23日日曜日
  • 40. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 30 12年9月23日日曜日
  • 41. 通常の集計処理の結果画面 31 12年9月23日日曜日
  • 42. 組織からの訪問回数 32 12年9月23日日曜日
  • 43. 小バッチ処理でやらないといけないこと • 離脱の判断 • 組織やユーザエージェントの情報などとの JOIN • 集計結果をDBに保存 33 12年9月23日日曜日
  • 44. 小バッチ処理の流れ 組織、ユーザーエージェント情報DB バッチサーバー 集計結果格納DB 最終的にログをHDFSに保存 34 12年9月23日日曜日
  • 45. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 35 12年9月23日日曜日
  • 46. 大バッチじゃないとできないこと • 集計結果としてランキング上位の結果だけ残 したい • 人気ページランキングや参照元のランキング 36 12年9月23日日曜日
  • 47. 必然的にHadoopを使用 • 1日1億PV • 非圧縮のJSONログで1日100GB • ビッグデータ 37 12年9月23日日曜日
  • 48. MapReduce言語 何をつかう? • Java MapReduce - 性能は良い、工数がかかる、一部ではアセンブリ言語と呼ばれる • Hive - SQLライク、スキーマ定義必要、効率の良いファイルフォーマット(RCFile) • Pig - 独自言語、スキーマ定義不要 • Hadoop Streaming - 好きな言語で書ける、性能は悪い 38 12年9月23日日曜日
  • 49. RCFileが魅力的なのでHiveを使用 それぞれのRow Groupの中でカラム指向のフォーマット 必要なカラムだけのread、高い圧縮率 最近ではPigもRCFileを使える? 39 12年9月23日日曜日
  • 50. 大バッチ処理の流れ JSONテキストログを RCFileに変換 (100GBのログが十数GB Hive Server 程度まで圧縮) ランキング集計バッチ処理 集計結果格納DB 40 12年9月23日日曜日
  • 51. Hiveでは細かい処理はしにくい? • SQLだけでは出来ることに限りがある • UDF (User-Defined Function) • UDAF (User-Defined Aggregation Function) • UDF, UDAFを使うことによって柔軟な処理! • 簡単です 41 12年9月23日日曜日
  • 52. まとめ • アクセス解析は、ビッグデータとリアルタイムの両 立が重要に • リアルタイム、小バッチ、大バッチの3段階集計で 処理 ユーザーローカルではウェブ解析に興味のあるエンジ ニアを募集中です! 42 12年9月23日日曜日