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
5分ちょいでわかった気になるラムダアーキテクチャ
Search
yubessy
August 28, 2017
Programming
2.3k
0
Share
5分ちょいでわかった気になるラムダアーキテクチャ
社内勉強会用資料です
yubessy
August 28, 2017
More Decks by yubessy
See All by yubessy
DDIA (Designing Data-Intensive Applications) はいいぞ
yubessy
0
1.6k
Introduction to CircleCI
yubessy
1
130
Docker Hands-on
yubessy
0
120
Resource Polymorphism
yubessy
0
310
不動点コンビネータ?
yubessy
0
320
とりあえず機械学習したかった
yubessy
0
350
Scala Native
yubessy
0
230
Type Erasure と Reflection のはなし
yubessy
1
480
量子暗号
yubessy
0
240
Other Decks in Programming
See All in Programming
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
310
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
18
7.7k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
400
Claspは野良GASの夢をみるか
takter00
0
140
さぁV100、メモリをお食べ・・・
nilpe
0
120
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
210
AIとRubyの静的型付け
ukin0k0
0
480
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
140
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
7
1.3k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
0
260
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
7
2.6k
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
290
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Typedesign – Prime Four
hannesfritz
42
3.1k
Statistics for Hackers
jakevdp
799
230k
GitHub's CSS Performance
jonrohan
1033
470k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Writing Fast Ruby
sferik
630
63k
Exploring anti-patterns in Rails
aemeredith
3
380
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
260
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
760
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
5分ちょいでわかった気になる ラムダアー キテクチャ @yubessy 0x64 物語 Reboot #06 " システムアー
キテクチャ"
Lambda Architecture
Lambda Architecture ≠
ラムダアー キテクチャとは? = ビッグデー タ処理システムの設計指針 例えるなら: Web アプリの設計指針 -> MVC
ビッグデー タ処理システムの設計指針 -> ラムダアー キテクチャ 提唱者: Nathan Marz Apache Storm の開発者
ビッグデー タの例 ログ 最新の状態だけでなく過去の全事象を記録 -> 時間に対して線形にデー タ量が増加 ソー シャルネットワー ク
ユー ザ同士がサー ビス内でつながる -> ユー ザ数 n に対して O(n^2) の関係デー タ
ビッグデー タ処理システムの例 デー タ分析基盤 デー タドリブンな意思決定を支援する アドホックなクエリにも答えなければならない 機械学習基盤 デー タから直接サー
ビスや機能を創り出す 非常に大きな計算量が必要となる
ビッグデー タ処理の課題 スケー ラビリティ デー タ増に応じてリソー スを追加 RDB では処理能力が追いつかない 堅牢性
デー タ量が多いと耐障害性を保ちにくい 汎用性 どんな処理が実行されるか事前に予想しにくい
登場背景 従来の状況 個別の課題を対処療法的に解決 -> トレー ドオフによるいたちごっこ -> プロジェクト毎に同じ仕事の繰り返し ラムダアー キテクチャ
課題を整理・ 一般化し、 それらを包括的に解決 -> トレー ドオフを統制下に置く -> 一般的な枠組みに昇華
原理 全ての処理はデー タ集合に対するクエリである KPI 分析もレコメンド生成もデー タ集合から 価値を生み出す計算(= クエリ) とみなす クエリはデー
タに対する関数である 関数は必要に応じて分割・ 合成できる -> 計算フロー を垂直・ 水平に分割できる
全貌 https://dzone.com/articles/lambda-architecture-with-apache- spark
全貌 バッチ層 過去からの全デー タをマスタデー タ化して蓄積 マスタデー タからバッチビュー を生成 スピー ド層
生デー タを低レイテンシのストリー ムに流す ストリー ムからリアルタイムビュー を生成 サー ビス層 2つのビュー からクエリの結果を計算
マスタデー タ
マスタデー タ 永続性を必要とする唯一のデー タストア ビュー が失われてもマスタデー タから再生成可 純粋な事実デー タのみを追記方式で記録 他の値から導出できる値は保持しない
削除・ 更新を行わない(≠RDB のテー ブル) 分散ファイルシステム(HDFS, S3 等) を利用 スキー マを強制できるフォー マットを利用
バッチビュー・ リアルタイムビュー
バッチビュー・ リアルタイムビュー 計算量の多いクエリのために事前計算を行う e. g. アクセスログの時間毎・ 日毎の集計値 バッチビュー マスタデー タに定期的なバッチ処理を実行
MapReduce, Apache Spark などを利用 リアルタイムビュー 生デー タをストリー ム集計 Apache Storm, Amazon Kinesis などを利用
ラムダアー キテクチャの利点 クエリの計算フロー を2層に分けることで 様々 なトレー ドオフを回避 正確性 <-> レイテンシ
クエリの自由度 <-> 計算量 永続性をマスタデー タのみに求めることで 堅牢性とスケー ラビリティを両立 冗長化が容易 DB サー バ管理が不要
Livesense Analytics と Lambda Architecture アクセスログテー ブルの生成バッチで導入 マスタデー タ (S3)
( ユー ザID, タイムスタンプ, URL) のみを保持 バッチビュー (Spark on EMR) visit_id や page_type などはこちらで生成 リアルタイムビュー: 作ってない 詳しくは↓ で デー タ分析を支える「 便利カラム」 の問題点と その解決策 - LIVESENSE made*
Livesense Analytics と Lambda Architecture
まとめ だいたいこの本に書いてる
参考 Lambda Architecture » λ lambda-architecture.net Lambda Architecture with Apache
Spark - DZone Big Data O'Reilly Japan - スケー ラブルリアルタイムデー タ 分析入門