Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Creating a New Stream Data Pipeline on Google C...
Search
Shu Suzuki
July 19, 2019
Programming
1
3.8k
Creating a New Stream Data Pipeline on Google Cloud Platform 20190719
大量のログデータを、より効率的に、より柔軟に扱うためのパイプラインをGCP使って作った話
Shu Suzuki
July 19, 2019
Tweet
Share
More Decks by Shu Suzuki
See All by Shu Suzuki
バフェットコード株式会社 開発チームカルチャーデック
shoe116
1
210
Data & Analytics 井戸端会議 #02
shoe116
0
410
Data & Analytics 井戸端会議 #01
shoe116
1
38
財務データを題材に、 ETLとは何であるかを考える
shoe116
9
3.3k
Ruby on Railsで作る銘柄スクリーニング
shoe116
0
770
Creating Stream DataPipeline on GCP Using Apache Beam
shoe116
3
2.9k
Business Intelligence Engineer in Mercari
shoe116
0
140
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう後編
kouyuume
0
190
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
AIコーディングエージェント(Manus)
kondai24
0
170
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.5k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
130
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
400
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
330
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
460
sbt 2
xuwei_k
0
290
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
4 Signs Your Business is Dying
shpigford
186
22k
Designing for Performance
lara
610
69k
Raft: Consensus for Rubyists
vanstee
141
7.2k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Code Reviewing Like a Champion
maltzj
527
40k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Documentation Writing (for coders)
carmenintech
76
5.2k
Typedesign – Prime Four
hannesfritz
42
2.9k
Transcript
1 GCPでStreamなデータパイプライン作った {“id”: “@shoe116”, “team”: “Data Platform”}
2 mercariのlog収集の歴史とマイクロサービス化 GCPでStreamなデータパイプライン作った GCPで作ったStreamなデータパイプラインの概要 AvroとDataFlowを使ったETL処理 今日のまとめ 02 03 04 01
3 - Mercari Data Platform - Stream/Batch Pipeline Developer -
Scala, Python, Java, Go, etc - Apache Beam, Kafka, Storm, Hive, Hadoop… Shu Suzuki @shoe116
4 指定された区間(data sources - data sinks)で データパイプライン? 信頼性のあるデータ処理やデータ転送を 安定的に提供する仕組み 2.
3. 1. 今回は「本番環境のlogを、DWH等の分析環境に届ける」ことを 主眼にしたデータパイプラインについて話します。
5 Mercariのlog収集の歴史と マイクロサービス化
6 既存のlog収集の仕組み モノリスのWebアプリケーションのlogをfluentdで伝搬しbatch処理
7 マイクロサービスのアーキテクチャ データパイプライン的に言うと、data-sourceが不特定多数になる ??
8 GCPで作った Streamなデータパイプラインの概要
9 メッセージ志向ミドルウェア(G製Kafka) 使っているGCPのサービス Beamで記述できる処理エンジン(G製Flink) Cloud Dataflow Cloud Pub/Sub Cloud Storage
マルチリージョナルなオブジェクトストレージ BigQuery 大量データ向けのG製DWH、GCSからも読める。
10 新しい Stream データパイプライン 各MSのRamp TopicからDataHubへ集約、GCSとBigQueryへStore
11 各MSごとに設けられたデータの投入口 各Cloud Pub/SubのTopicの役割 Rampsのデータを1つのTopicに集約したTopic Raw DataHub Ramps 構造化されたSchema付きAvroが流れるTopic Structured
DataHub
12 Raw DataHubのデータを出力するGCS bucket 各データストアの役割 Structurd Datahubのデータを出力するGCS bucket Structured DataLake
Raw DataLake Structured DataHubのデータを出力するBig Query DWH
13 AvroとDataflowを使ったETL処理
14 DataHub Avro format {"type": "record", "name": "DataHubAvro", "namespace": "com.mercari.data.model.v3",
"fields": [{ {"name": "uuid", "type": "string"}, {"name": "timestamp", "type": { "type": "long", "logicalType": "timestamp-micros" }}, {"name": "topic_name", "type": "string"}, {"name": "service_name", "type": "string"}, {"name": "log_name", "type": "string"}, {"name": "content_type", "type": ["null", "string"], "default": null}, {"name": "user_agent", "type": ["null", "string"], "default": null}, {"name": "payload","type": "bytes"} ]} } パイプラインの共通フォーマット Avroを採用した理由 - AvroはそのままGCSに書ける - AvroはそのままBQに書ける - Avro fileはBQから直接読める DataHub Avro に含まれるもの - パイプラインのdestination - Schemaの引き当て情報 - データ本体
15 Map処理でRampsからデータを読む Ramps -> Raw DataHubのETL 共通のDataHub Avro formatに変換 全レコードをRaw
DataHubにwrite T L E
16 Raw DataHubからデータを読む Raw DataHub -> Structured DataHub のETL DataHub
Avroのpayloadのbyte[]を、 構造化されたAvroに変換する T L E 全レコードをStructured DataHubにwrite
17 サービスのMS化に伴いパイプラインも進化が求められる 今日のまとめ 不特定多数のdata sourceを想定して設計、開発中 Google Cloud Pratformの各サービスとAvroを利用 We are
hiring! 02 03 04 01 https://mercari.workable.com/jobs/765272