Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How Scala works at Mercari
Search
Ryo Okubo
October 17, 2020
Programming
1.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How Scala works at Mercari
Ryo Okubo
October 17, 2020
More Decks by Ryo Okubo
See All by Ryo Okubo
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
310
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
3
1.7k
メルカリ・メルペイの成長を支える データ基盤とはどんなものか
syucream
6
7.5k
バッチとストリーミング、それぞれの障害に立ち向かう
syucream
3
3.9k
Production-ready stream data pipeline in Merpay, Inc
syucream
2
13k
データとML周辺エンジニアリン グを考える会 #2 イントロ
syucream
0
700
マイクロサービスにおける ログ収集の課題と取り組み
syucream
7
2.9k
Stream Data Pipeline for Microservices in Merpay
syucream
6
1.3k
メルペイにおける、マイクロサービスに寄り添うログ収集基盤 / Microservices-frendly Data Pipeline
syucream
0
18k
Other Decks in Programming
See All in Programming
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.7k
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
240
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
160
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
AmebaブログはKMPから卒業します
kmars0605
0
330
Будущее локальных LLM – Алексей Голобурдин, PythoNN
sobolevn
0
110
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
310
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
290
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
300
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
290
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
4
560
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
1
300
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Cost Of JavaScript in 2023
addyosmani
56
10k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
740
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
560
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Transcript
1 Scala がメルカリでどう動くか? ScalaMatsuri 2020 LT slides
2 メルカリとは •サービス開始日:2013年7月 •対応OS:Android、iOS ※Webブラウザからも利用可能 •利用料:無料 ※売れたときの手数料:販売価格の 10% •対応地域・言語:日本・日本語基本仕様
•累計出品数:15億品を突破 それを必要とする人の手に渡り、使用されることに喜びを感じ、ま た購入者は、多彩かつユニークな商品の中から「宝探し」感覚で 掘り出し物を見つける買い物体験を楽しんでいます。さらに「メル カリ」では、物の売買だけではなく、出品者・購入者間のチャットや 「いいね!」機能を通じて、お客さま間のコミュニケーションも活発 に行われています。 フリマアプリ「メルカリ」は、個人が簡単に中古品の売買を行える CtoCマーケットプレイスです。出品者・購入者双方が、安全・安心 な取引を楽しんでいただけるサービスを目指し、「メルカリ」が一時 的に購入代金を預かるエスクロー決済を活用した取引環境の整 備や、簡単かつ手頃な価格の配送オプション、差別化されたユ ニークなお客さま体験を提供しています。多くの出品者は、自分に とって必要でなくなったモノが、 2
3 • 社外に発信している情報は Go が多め ◦ 実際にバックエンド API の実装言語は Go
が非常に多い • でも一部 Scala も使っているんです! ◦ 当 LT で事例紹介させてください! ◦ Ref. 我々の技術スタック: https://engineering.mercari.com/technology-stack/ メルカリと Scala … ?
4 • ビッグデータ処理ジョブ実装言語として ◦ Java の資産が多いデータ処理において ◦ Apache Spark, Apache
Flink ジョブの実装のため • Gatling による負荷テストシナリオ記述のため • その他 Java 代替として メルカリにおける Scala の用途
5 • kintone に蓄積されたデータを分析に利用したい • kintone Spark connector で kintone
のレコード取得部分を実装 事例1. Spark による Kintone -> BigQuery データ同期
6 • 大規模データ基盤では品質の担保が困難 ◦ 信頼できないデータ基盤では、そこから得られた分析結果も信頼できなくなる ◦ 目視でデータの中身を確認できるはずもない • Deequ; AWS
が公開するデータユニットテストフレームワーク ◦ Apache Spark を利用している、ので Spark のリッチな API を利用可能 ◦ よく使われるテスト項目をサポート ▪ 重複した値が含まれていないか? ▪ NULL が含まれていないか? ▪ 想定したパターン以外の値が含まれていないか? 事例2. Deequ を使ったデータ品質チェック
7 • より抽象化されたテストシナリオのサポートを構想(開発中) ◦ Spark, Scala の強力な表現能力は嬉しいが、みんなに実装しろと言うのは酷 ◦ YAML にテスト項目を羅列するといい感じに実行されて欲しい
事例2. Deequ を使ったデータ品質チェック
8 • Pub/Sub で配送されたログを永続化・配送 • Apache Flink の Scala API
を用いてジョブを実装 事例3. マイクロサービスのログ収集パイプライン
9 • Flink ジョブでニアリアルタイムで変換・配送(開発中) ◦ CRM(Customer Relationship Management) 関連用途特化のアプリを開発予定 事例3.
マイクロサービスのログのストリーミング処理
10 • MySQL の binlog を BigQuery に配送しニアリアルタイムで分析可能に ◦ ETL
ジョブで MySQL に巨大クエリを投げるより低負荷でデータ同期可能 ◦ 分析可能になるまでのリードタイムが減少し、不正検知などへの活用が期待できる • 変更ログ送信エージェントを Scala で実装 • 変更ログを BigQuery に insert する Flink ジョブも Scala 製 事例4. CDC(Change Data Capture) パイプライン
11 • Apache Beam ベースの実装言語にも Scala を一部使用 ◦ For e.g.
https://github.com/mercari/pubsubloader • データ処理から派生して、スキーマ管理ツールも Scala で一部実装 余談