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

Real World Mercari API Architecture

kazegusuri
February 01, 2018

Real World Mercari API Architecture

Bonfire API #1

kazegusuri

February 01, 2018
Tweet

More Decks by kazegusuri

Other Decks in Technology

Transcript

  1. Real World
    Mercari API Architecture
    Bonfire API#1
    Masahiro Sano (@kazegusuri)

    View Slide

  2. 自己紹介
    • 佐野 正浩(@kazegusuri)
    • Mercari, Inc → Souzoh, Inc → merpay, Inc
    • Principal Software Engineer
    • サーバーサイドエンジニア
    • Goで決済システム全般を開発中
    2

    View Slide

  3. 3

    View Slide

  4. 昨年末のMercari Advent Calendar 2017の
    記事中にあった
    「ソースコードのフォーク」
    についてお話します
    4

    View Slide

  5. アーキテクチャ(~2016/12)
    5
    Monolithic
    API
    Monolithic
    API
    UK
    JP US
    Mercari
    Client
    Mercari
    Client
    Atte
    API
    Atte
    Client
    1 ソースコード
    1 ソースコード

    View Slide

  6. クライアントフォーク(2016/12)
    • アプリのソースコードをJP/US/UKでフォーク
    • リージョン固有の実装が複雑化
    • テスト不足・QAの過負荷
    • UKスタート
    • US First
    6

    View Slide

  7. USアプリ刷新(2016/12)
    • フルスクラッチで開発
    • Protobuf導入
    • Microservice化に向けてAPI Gateway導入
    • 株式会社メルカリの導入事例:Kubernetes を駆使したマイクロサービス化
    でグローバルサービスの開発効率を劇的に向上
    • https://goo.gl/xcP4bb
    7

    View Slide

  8. アーキテクチャ(2016/12)
    8
    Monolithic
    API
    Monolithic
    API
    Monolithic
    API
    UK
    JP US
    Mercari
    Client
    Mercari
    Client
    Mercari
    Client
    New
    Mercari
    Client
    API
    Gateway
    Atte
    API
    Atte
    Client
    1 ソースコード

    View Slide

  9. 続々リリース (2017/3-5)
    • 2017/3 UK アプリリリース
    • 2017/4 US 新アプリ一本化
    • Microserviceの本格導入
    • 2017/5 JP メルカリカウルリリース
    9

    View Slide

  10. アーキテクチャ(2017/5)
    10
    Monolithic
    API
    Monolithic
    API
    Monolithic
    API
    UK
    JP US
    Mercari
    Client
    Mercari
    Client
    New
    Mercari
    Client
    API
    Gateway
    Atte
    API
    Atte
    Client
    1 ソースコード
    Kauru
    API
    Kauru
    Client
    Microservice

    View Slide

  11. APIフォークの検討
    • 増えてくるJPのアプリ
    • 構成の異なるUS/UK
    • メルペイに向けてのアーキテクチャ変更
    • 2017/10 APIフォーク
    11

    View Slide

  12. アーキテクチャ(2017/10~)
    12
    Monolith
    ic
    API
    Monolithic
    API
    Monolithic
    API
    UK
    JP US
    Mercari
    Client
    Mercari
    Client
    New
    Mercari
    Client
    API
    Gateway
    Atte
    API
    Kauru
    API
    MS
    MS
    MS MS
    MS
    Maisonz
    API
    MS
    MS
    MS
    Souzoh
    merpay
    MS
    MS
    MS

    View Slide

  13. APIフォークの理由
    • APIのコード的な側面
    • 組織的な側面
    • Microservice化へのアプローチの違い
    13

    View Slide

  14. APIのコード的な側面
    • リージョン毎にやっていることが違いすぎる
    • API側で違いを吸収する必要がなくなってきた
    • リージョン毎に独立したエンドポイント
    • 修正したときに全アプリでQAするのが大変
    14

    View Slide

  15. 組織的な側面
    • 日本からUS開発の割合の変化
    • 新アプリ化の時期で50:50
    • US開発の現地化
    • お互いが独立して異なる目的で同じソースを触る
    15

    View Slide

  16. Microservice化へのアプローチの違い
    • JPでは既存機能の共通化、プラットフォーム化が重要
    • 既存機能のMicroservice化
    • USでは新規機能をどんどん試していく
    • 新規機能をMicroservice化
    • 既存機能はあまり変更しない
    16

    View Slide

  17. APIフォーク後
    • フォークしたことでリージョン間の問題は解決
    • ついでにソースコードは驚く程わかりやすく…
    • JPでの開発が進んだことで同じ問題がJP内でも
    • ソウゾウのプロダクト
    • Nowやメルカリチャンネルなどの新領域
    • メルペイ
    17

    View Slide

  18. 未来に向けて
    • JPでもAPI Gatewayの導入(予定)
    • Microservice化の推進
    • 異なるチームで同一システムを開発するのは難しい(個
    人的感想)
    • Microserviceでチームで閉じた開発体制
    • システムの複雑化→運用の複雑化
    • Microservice基盤の整理
    • Kubernetes
    • CI/CD
    • Metrics/Tracing/Monitoring
    18

    View Slide