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
Creating a New Stream Data Pipeline on Google C...
Search
Shu Suzuki
July 19, 2019
Programming
3.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Creating a New Stream Data Pipeline on Google Cloud Platform 20190719
大量のログデータを、より効率的に、より柔軟に扱うためのパイプラインをGCP使って作った話
Shu Suzuki
July 19, 2019
More Decks by Shu Suzuki
See All by Shu Suzuki
SaaSがこの先生きのこるには #1 オープニング資料
shoe116
0
42
AI時代にデータを売る SaaSの生存戦略を語る
shoe116
2
620
バフェットコード株式会社 開発チームカルチャーデック
shoe116
1
1.4k
Data & Analytics 井戸端会議 #02
shoe116
0
570
Data & Analytics 井戸端会議 #01
shoe116
1
74
財務データを題材に、 ETLとは何であるかを考える
shoe116
9
3.8k
Ruby on Railsで作る銘柄スクリーニング
shoe116
0
1.1k
Creating Stream DataPipeline on GCP Using Apache Beam
shoe116
3
3k
Business Intelligence Engineer in Mercari
shoe116
0
170
Other Decks in Programming
See All in Programming
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
290
Vite+ Unified Toolchain for the Web
naokihaba
0
330
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
160
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
3
270
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
120
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
160
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.7k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
AIで効率化できた業務・日常
ochtum
0
140
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
220
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
Navigating Team Friction
lara
192
16k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
The browser strikes back
jonoalderson
0
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
4 Signs Your Business is Dying
shpigford
187
22k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
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