Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アプリから集まるイベントデータのリアルタイム処理入門
Search
tandfy
June 19, 2020
Programming
0
1.4k
アプリから集まるイベントデータのリアルタイム処理入門
tandfy
June 19, 2020
Tweet
Share
More Decks by tandfy
See All by tandfy
Amazon SageMakerの最新アップデートの紹介
tandfy
1
860
Amazon Personalizeではじめるレコメンドサービス
tandfy
0
1k
DeepRacerで学ぶ機械学習 1.1
tandfy
0
950
DeepRacerで始める機械学習
tandfy
1
1.6k
DeepRacerでまなぶ強化学習
tandfy
1
1.3k
Amazon SageMakerではじめる物体検出
tandfy
1
1k
Other Decks in Programming
See All in Programming
Beyond ORM
77web
7
870
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
4
590
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
260
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
130
tidymodelsによるtidyな生存時間解析 / Japan.R2024
dropout009
1
790
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
490
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
100
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
780
快速入門可觀測性
blueswen
0
370
クリエイティブコーディングとRuby学習 / Creative Coding and Learning Ruby
chobishiba
0
3.9k
fs2-io を試してたらバグを見つけて直した話
chencmd
0
240
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
520
39k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Building Adaptive Systems
keathley
38
2.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Gamification - CAS2011
davidbonilla
80
5.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
What's in a price? How to price your products and services
michaelherold
243
12k
A Tale of Four Properties
chriscoyier
157
23k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Transcript
アプリから集まるイベントデータの リアルタイムデータ処理⼊⾨ 2020/06/19 ⼤澤 勇⽃
2 ⾃⼰紹介 ⼤澤 勇⽃ クラスメソッド株式会社 CX事業本部 ⻄⽇本チーム サーバサイドエンジニア
3 これまでと今 ~2020年3⽉ 機械学習システム開発
4 これまでと今 ~2020年3⽉ 機械学習システム開発 機械学習やデータだけでは× アプリケーションが重要
5 これまでと今 ~2020年3⽉ 機械学習システム開発 2020年4⽉~ アプリケーション開発 機械学習やデータだけでは× アプリケーションが重要
6 アプリ × データ
7 アプリケーション × データ リアルタイムデータ処理って便利そう︕︕
8 アプリケーション × データ リアルタイムデータ処理って便利そう︕︕ けれども、かなり⾯倒な印象がある…
9 調べてみよう︕
10 調べてみよう︕ と⾔うのが今回の動機
11 今回の流れ • どう便利そうなのか • ⽤語と概念 • AWSでのリアルタイムデータ処理 • 活⽤例
• まとめ
12 リアルタイムデータ処理は どう便利そうなのか
13 レコメンドで考えてみる
14 レコメンドの構成例 ΞϓϦέʔγϣϯ "1* αʔόʔ Ϩίϝϯυ Πϕϯτ Πϕϯτ Ϩίϝϯυ ,JOFTJT
%BUB 4USFBNT -BNCEB ,JOFTJT %BUB 'JSFIPTF 4 ੜσʔλ 1FSTPOBMJ[F Πϕϯτ Πϕϯτ Πϕϯτ $MPVE8BUDI &WFOU -BNCEB ఆظ࣮ߦ ιϦϡʔ γϣϯ࡞
15 特徴 • イベントを収集し、イベントを元にしたレコメンド が可能 • ユーザによる操作イベントがレコメンドに反映され るのはほぼリアルタイム • レコメンドエンジンを定期的に更新
• 全イベントデータを使ったモデルの再学習
16 多くのケースにおいて、リアルタイム 性を求められることはない
17 けれども、リアルタイムデータ処理によって… • 分析・アプリケーション改善の速度アップ • アプリケーションでの表現に利⽤するデータ 処理・更新の速度アップ • 新しい機能や表現が可能に
18 ユーザー体験の向上につながる そして、 アプリ利⽤者数の増加へ
19 ⾯倒かもしれないけど 試してみる価値はありそう…!
20 まずは不安を解消するために リアルタイムデータ処理を より具体化しよう!
21 ⽤語と概念
22 リアルタイムデータ処理とは リアルタイムにデータを処理すること
23 リアルタイムデータ処理とは リアルタイムにデータを処理すること ストリーム処理
24 データ処理の種類 • バッチ処理 • 塊として保存されてるデータへの処理 • 有限のデータに対する処理 • ストリーム処理
• 終わりなく流れてくるデータへの処理 • 無限のデータに対する処理
25 バッチ処理のイメージ σʔλ σʔλ ॲཧޙ ॲཧ
26 ストリーム処理のイメージ σʔλ σʔλ ॲཧޙ ॲཧ バッチ処理と異なり、流れてくるデータに終わりがない ->まとめて処理する場合には範囲を定める必要がある
27 ストリーム処理の要素(ストリームベース) イベントを⽣成する プロデューサーから データを取得し、 保持する ストリームから データを取得し 処理する ϓϩσϡʔαʔ
ετϦʔϜ ϒϩʔΧʔ ίϯγϡʔϚʔ
28 ストリーム処理の要素(オペレーターベース) データを流す ソースからデータを 取得し、処理する 処理したデータが 流され、蓄積される ιʔε ετϦʔϜ ΦϖϨʔλʔ
γϯΫ
29 代表的なソース • Apache Kafka • Amazon Kinesis Data Streams
• Amazon Kinesis Data Firehose • Google Cloud PubSub
30 代表的なシンク • Apache Kafka • Elasticsearch • Amazon Kinesis
Data Streams • Amazon Kinesis Data Firehose • Amazon S3 • Google Cloud PubSub
31 代表的なオペレータ • Map • 各レコード毎に処理する • Filter • 各レコード毎に内容に応じた絞り込みをする
• Window • レコードの時間に応じて、ストリーム内のレ コードをグループ化する • 集計を⾏う他のオペレータと併⽤する
32 オペレータの種類 • ステートレス • レコード毎に処理する • 例: Map, Filter
• ステートフル • レコードの内容をもとに複数のレコードをグ ループ化して、処理する • 例: Window
33 ステートレス γϯΫ ΦϖϨʔλʔ ιʔε
34 ステートフル ιʔε γϯΫ ΦϖϨʔλʔ
35 ストリーム処理における3種類の時間 • イベント時間(Event Time) • イベントが実際に発⽣した時間 • 注⼊時間(Ingestion Time)
• ソースに読み込まれた(注⼊された)時間 • 処理時間(Processing Time) • オペレータで処理された時間
36 3種類の時間のイメージ ϓϩσϡʔαʔ ετϦʔϜ Πϕϯτ࣌ؒ ΦϖϨʔλʔ ೖ࣌ؒ Πϕϯτ Πϕϯτ ॲཧ࣌ؒ
37 気になった⽤語 • 透かし、ウォーターマーク(Watermark) • ウィンドウ処理時の最⼤遅延時間 • 遅延: 注⼊時間 -
イベント時間 • 注⼊時間の遅れをどれだけ考慮するか • チェックポイント • どこまで処理したかの記録
38 レコードの処理回数の保証 • Exactly once • 各レコードは必ず⼀回だけ処理される • At least
once • 各レコードは少なくとも⼀回は処理される • At most once • 各レコードは最⼤⼀回は処理される
39 レコードの処理回数の保証 • Exactly once • 各レコードは必ず⼀回だけ処理される • At least
once • 各レコードは少なくとも⼀回は処理される • At most once • 各レコードは最⼤⼀回は処理される プラットフォームや処理によって違うため 要件に応じて確認が必要
40 どんな感じで実現できるのか ⾒てみよう!
41 AWS での リアルタイムデータ処理
42 Kinesis Data Streams ϓϩσϡʔαʔ ίϯγϡʔϚʔ ετϦʔϜ ,JOFTJT %BUB4USFBNT
43 Kinesis Data Firehose ετϦʔϜ ίϯγϡʔϚʔ ετϦʔϜ ΦϖϨʔλʔ ετϦʔϜ ίϯγϡʔϚʔ
ετϦʔϜ ΦϖϨʔλʔ ϓϩσϡʔαʔ γϯΫ 43FETIJGU &MBTUJDTFBSDI4FSWJDF 4QMVOL ,JOFTJT %BUB'JSFIPTF ϓϩσϡʔαʔ γϯΫ 43FETIJGU &MBTUJDTFBSDI4FSWJDF 4QMVOL ,JOFTJT %BUB'JSFIPTF -BNCEB
44 Kinesis Data Analytics ΦϖϨʔλʔ ιʔε ετϦʔϜ ,JOFTJT γϯΫ ,JOFTJT
%BUB"OBMZUJDT
45 Glue (Spark Streaming ジョブタイプ) ΦϖϨʔλʔ ιʔε ετϦʔϜ ,JOFTJT,BGLB γϯΫ
(MVF 4QBSL4USFBNJOH
46 活⽤例
47 レコメンド(再掲) ΞϓϦέʔγϣϯ "1* αʔόʔ Ϩίϝϯυ Πϕϯτ Πϕϯτ Ϩίϝϯυ ,JOFTJT
%BUB 4USFBNT -BNCEB ,JOFTJT %BUB 'JSFIPTF 4 ੜσʔλ 1FSTPOBMJ[F Πϕϯτ Πϕϯτ Πϕϯτ $MPVE8BUDI &WFOU -BNCEB ఆظ࣮ߦ ιϦϡʔ γϣϯ࡞
48 可視化アプリ ΞϓϦέʔγϣϯ "1* αʔόʔ Πϕϯτ ΞϓϦ ूܭσʔλ Πϕϯτ Πϕϯτ
%# αʔόʔ ΞϓϦ ूܭσʔλ ,JOFTJT %BUB4USFBNT -BNCEB
49 分析 ΞϓϦέʔγϣϯ Πϕϯτ Πϕϯτ ,JOFTJT %BUB 'JSFIPTF #* ूܭ
σʔλ 3FETIJGU
50 分析 データ処理版 ΞϓϦέʔγϣϯ Πϕϯτ Πϕϯτ ,JOFTJT %BUB 'JSFIPTF Ճूܭ
σʔλ ,JOFTJT %BUB "OBMZUJDT ,JOFTJT %BUB 'JSFIPTF Ճूܭ σʔλ 3FETIJGU 4 ੜσʔλ #* ूܭ σʔλ
51 リアルタイムデータ処理 理解深まったでしょうか…?
52 まとめ リアルタイムデータ処理を活⽤して、ユーザー体験の向 上、そして、アプリ利⽤者を増加へ… • リアルタイムデータ処理 -> ストリーム処理 • ストリーム処理には独特な⽤語や概念が多い
• サービスを活⽤してストリーム処理を少しでも楽に • ->Kinesisファミリー+α
None