Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How Scala works at Mercari

Ryo Okubo
October 17, 2020

How Scala works at Mercari

Ryo Okubo

October 17, 2020

Transcript

11 slides
  1. 2 メルカリとは
 •サービス開始日:2013年7月
 •対応OS:Android、iOS ※Webブラウザからも利用可能 
 •利用料:無料
 ※売れたときの手数料:販売価格の 10% •対応地域・言語:日本・日本語基本仕様


    •累計出品数:15億品を突破
 
 それを必要とする人の手に渡り、使用されることに喜びを感じ、ま た購入者は、多彩かつユニークな商品の中から「宝探し」感覚で 掘り出し物を見つける買い物体験を楽しんでいます。さらに「メル カリ」では、物の売買だけではなく、出品者・購入者間のチャットや 「いいね!」機能を通じて、お客さま間のコミュニケーションも活発 に行われています。 
 フリマアプリ「メルカリ」は、個人が簡単に中古品の売買を行える CtoCマーケットプレイスです。出品者・購入者双方が、安全・安心 な取引を楽しんでいただけるサービスを目指し、「メルカリ」が一時 的に購入代金を預かるエスクロー決済を活用した取引環境の整 備や、簡単かつ手頃な価格の配送オプション、差別化されたユ ニークなお客さま体験を提供しています。多くの出品者は、自分に とって必要でなくなったモノが、 
 2
  2. 3 • 社外に発信している情報は Go が多め ◦ 実際にバックエンド API の実装言語は Go

    が非常に多い • でも一部 Scala も使っているんです! ◦ 当 LT で事例紹介させてください! ◦ Ref. 我々の技術スタック: https://engineering.mercari.com/technology-stack/ メルカリと Scala … ?
  3. 4 • ビッグデータ処理ジョブ実装言語として ◦ Java の資産が多いデータ処理において ◦ Apache Spark, Apache

    Flink ジョブの実装のため • Gatling による負荷テストシナリオ記述のため • その他 Java 代替として メルカリにおける Scala の用途
  4. 5 • kintone に蓄積されたデータを分析に利用したい • kintone Spark connector で kintone

    のレコード取得部分を実装 事例1. Spark による Kintone -> BigQuery データ同期
  5. 6 • 大規模データ基盤では品質の担保が困難 ◦ 信頼できないデータ基盤では、そこから得られた分析結果も信頼できなくなる ◦ 目視でデータの中身を確認できるはずもない • Deequ; AWS

    が公開するデータユニットテストフレームワーク ◦ Apache Spark を利用している、ので Spark のリッチな API を利用可能 ◦ よく使われるテスト項目をサポート ▪ 重複した値が含まれていないか? ▪ NULL が含まれていないか? ▪ 想定したパターン以外の値が含まれていないか? 事例2. Deequ を使ったデータ品質チェック
  6. 8 • Pub/Sub で配送されたログを永続化・配送 • Apache Flink の Scala API

    を用いてジョブを実装 事例3. マイクロサービスのログ収集パイプライン
  7. 10 • MySQL の binlog を BigQuery に配送しニアリアルタイムで分析可能に ◦ ETL

    ジョブで MySQL に巨大クエリを投げるより低負荷でデータ同期可能 ◦ 分析可能になるまでのリードタイムが減少し、不正検知などへの活用が期待できる • 変更ログ送信エージェントを Scala で実装 • 変更ログを BigQuery に insert する Flink ジョブも Scala 製 事例4. CDC(Change Data Capture) パイプライン
  8. 11 • Apache Beam ベースの実装言語にも Scala を一部使用 ◦ For e.g.

    https://github.com/mercari/pubsubloader • データ処理から派生して、スキーマ管理ツールも Scala で一部実装 余談

More Decks by Ryo Okubo

Other Decks in Programming