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.6k
アプリから集まるイベントデータのリアルタイム処理入門
tandfy
June 19, 2020
Tweet
Share
More Decks by tandfy
See All by tandfy
Amazon SageMakerの最新アップデートの紹介
tandfy
1
910
Amazon Personalizeではじめるレコメンドサービス
tandfy
0
1.2k
DeepRacerで学ぶ機械学習 1.1
tandfy
0
1k
DeepRacerで始める機械学習
tandfy
1
1.7k
DeepRacerでまなぶ強化学習
tandfy
1
1.5k
Amazon SageMakerではじめる物体検出
tandfy
1
1.1k
Other Decks in Programming
See All in Programming
これならできる!個人開発のすゝめ
tinykitten
PRO
0
150
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
120
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
1.5k
ゆくKotlin くるRust
exoego
1
200
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.4k
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.2k
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
39k
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
660
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
320
Vibe codingでおすすめの言語と開発手法
uyuki234
0
170
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
520
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
0
2M
Testing 201, or: Great Expectations
jmmastey
46
7.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Everyday Curiosity
cassininazir
0
120
GitHub's CSS Performance
jonrohan
1032
470k
We Have a Design System, Now What?
morganepeng
54
8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
270
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
150
YesSQL, Process and Tooling at Scale
rocio
174
15k
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