×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
GunosyでのKinesis Analytics利⽤について 株式会社Gunosy ⼩出 幸典
Slide 2
Slide 2 text
⾃⼰紹介 • 名前 – ⼩出 幸典 (こいで ゆきのり) • 所属 – 株式会社Gunosy • 好きなAWSサービス – OpsWorks, Lambda, Kinesisファミリー, ECS
Slide 3
Slide 3 text
株式会社Gunosy – 「情報を世界中の⼈に最適に届ける」 Gunosyは 情報キュレーションサービス「グノシー」と 2016年6⽉1⽇にKDDI株式会社と共同でリリースした 無料ニュース配信アプリ「ニュースパス」を提供する 会社です。「情報を世界中の⼈に最適に届ける」を ビジョンに活動しています。 ネット上に存在するさまざまな情報を、 独⾃のアルゴリズムで収集、評価付けを⾏い ユーザーに届けます。 情報キュレーションサービス 「グノシー」 600媒体以上のニュースソースをベースに、 新たに開発した情報解析・配信技術を⽤いて⾃動的に 選定したニュースや情報をユーザーに届けます。 無料ニュース配信アプリ 「ニュースパス」
Slide 4
Slide 4 text
Gunosyと機械学習・データ分析 • Gunosyでは、様々な情報を収集し、独⾃のアルゴリズム で評価付けを⾏い、ユーザに届けています 各種コンテンツ (記事、商品、動画)
Slide 5
Slide 5 text
Gunosyと機械学習・データ分析 • ユーザの⾏動から、属性(年齢・性別・etc)を推定し、 コンテンツとのマッチングを⾏っています 各種コンテンツ (記事、商品、動画) 性別 年齢 地域... カテゴリ 著者 地域性...
Slide 6
Slide 6 text
Gunosyと機械学習・データ分析 • 本⽇はニュース領域での事例についてお話させて頂きます 各種コンテンツ (記事、商品、動画)
Slide 7
Slide 7 text
本⽇お話させていただく内容 Gunosyでどのように Kinesis Analyticsを利⽤しているか
Slide 8
Slide 8 text
なぜストリーム処理/マイクロバッチ処理をしたいのか • 「情報を世界中の⼈に最適に届ける」 – 時間(鮮度)の制約 • 情報には「鮮度」がある – 頻度(量)の制約 • ⾒せられる情報量には限りがある • どういった⼈に、どういった情報が適しているのか – 事前に「どのぐらい読まれそうか」といった推定はしているが、 ⾄近の実績値も即座にサービスにフィードバックしたい – より短い時間・より少ない試⾏で、サービスに反映したい
Slide 9
Slide 9 text
例えば • 記事クリックの(ニア)リアルタイム算出 – 「⼤域的な」傾向を掴みたい
Slide 10
Slide 10 text
Gunosyでのストリーム集計の右往左往 • 2013 mongodb Capped Collections • 2014 Redshift – fluentdのflush intervalが短すぎるとcopyが詰まってくる • 2015 Norikra – 知⾒が無さすぎて運⽤がままならず – 我々には早かった • 2016 Kinesis+Spark Streaming (on EMR) – ⾃由度は⾼い⼀⽅、開発コスト⾼し、サーバコスト⾼し – 我々にはオーバースペックだった
Slide 11
Slide 11 text
本題 Kinesis Analyticsの適⽤
Slide 12
Slide 12 text
ざっくりとした構成 • 以前よりfluentdを利⽤してログ配送をしていた – 同じログをStreams/Firehoseに送る • fluent-plugin-kinesis • Kinesis Analyticsはまだ東京へは来ていないので、他リージョンへ Web servers (fluentd) Kinesis Firehose S3 (backup) Kinesis Analytics Elastic Search Service summary log Mobile apps Source Stream log Tokyo Oregon Kinesis Firehose
Slide 13
Slide 13 text
Reference Dataの追加 • ユーザのセグメント別の集計 – どういったユーザが興味を⽰しているのか • S3にセグメント情報を配置 • ログにセグメント情報を付加し、セグメント別に集計 S3 User–Data Reference Data Web servers (fluentd) Kinesis Firehose S3 (backup) Kinesis Analytics Elastic Search Service summary log Mobile apps Source Stream log Kinesis Firehose
Slide 14
Slide 14 text
SQL例 • ⼀度中間ストリームを作る – Source StreamとReference DataをJOIN
Slide 15
Slide 15 text
SQL例 • 中間ストリームのデータを1分おきに集計して、出⼒へ
Slide 16
Slide 16 text
クエリ結果のイメージ • ユーザのセグメント毎に、傾向を知ることができる
Slide 17
Slide 17 text
サービスへのフィードバック(出⼒) • 現在のところバッチサーバからESSへ取りに⾏っている – ESSはIAM Roleでアクセス制御できる • クロスリージョンやVPCを意識しなくて良い – ESの集計関数が使える Web servers (fluentd) Kinesis Firehose S3 (backup) Kinesis Analytics Elastic Search Service summary log Mobile apps Source Stream log Tokyo Oregon Kinesis Firehose Batch Server Tokyo
Slide 18
Slide 18 text
Tips
Slide 19
Slide 19 text
東京リージョンのStreamsから他リージョンへの転送 • クライアントから直接ログを投げ込んでいるケース – 余り⼿をかけてコンシューマを開発したくない • Lambdaも試したが、スループットの⾯で厳しかった Kinesis Streams log Mobile apps Tokyo Oregon Kinesis Streams ?
Slide 20
Slide 20 text
東京リージョンのStreamsから他リージョンへの転送 • コンシューマとしてfluentdを利⽤ – inputプラグインで東京のStreamsから取り出し • outputプラグインで他リージョンのStreams/Firehoseへ転送 • タグによるルーティングや、必要に応じて整形を実施 Kinesis Streams Mobile apps Tokyo Oregon Kinesis Streams fluentd server
Slide 21
Slide 21 text
利⽤していての所感
Slide 22
Slide 22 text
まとめ • 開発が楽になった – IAMの設定は⼤変だが省⼒化できる – クエリだけ集中して考えれば良い • 運⽤も楽になった – フルマネージド – 但し、前後(Streams/Firehose)の流量には注意 • サーバコストも安くなった – ※もちろん、ケース次第です → トータルコストの削減+デリバリの短縮へ
Slide 23
Slide 23 text
宣伝 • エンジニアブログやっています http://data.gunosy.io/ http://tech.gunosy.io/
Slide 24
Slide 24 text
終わりに • ご清聴ありがとうございました