0924_Bold Challenge_@deeeet

92cdcff298e89e2fcd2fb705155c2d4b?s=47 mercari
September 26, 2019

0924_Bold Challenge_@deeeet

「なぜMicroservicesか?」
株式会社メルカリ Software Engineer, Microservices Platform 中島大一(@deeeet)

■イベント詳細
https://mercari.connpass.com/event/145803/

■採用サイト
https://careers.mercari.com/jp

92cdcff298e89e2fcd2fb705155c2d4b?s=128

mercari

September 26, 2019
Tweet

Transcript

  1. 3.

    2017年 2019年 2018年 Join Mercari Software Engineer at SRE team

    Start Microservices Project Tech Lead at Microservices Platform team
  2. 6.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  3. 7.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  4. 8.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  5. 9.

    Microservices Platform Team “Backend team”がMicroservicesの開発と運用をするための基盤を提供 • Base infrastructure (Kubernetes) •

    DevOps Toolchain: CI/CD, observability, provisioning • Common Framework • Best practice & documentation 開発者向けの基盤をつくる
  6. 13.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  7. 17.

    API gateway • Goでフルスクラッチで実装 • Mercari JPだけでなく他のRegionやサービスでも利用できる • 決済プラットフォーム (後のMerpayとなる)

    プロジェクトのために @kazegusuriさんらが実装していたAuthorityと連携 ◦ Microservices内部の認証認可の構想もここでできた • デザインから実装・リリースまで半年くらいかかった ◦ Mercariの全リクエストを受けないといけない...! API gatewayによるMicroservices化
  8. 21.

    Merpay on Microservices Platform MerpayをMercari Microservices Platform上に構築する意思決定 • Microservices Stater-kitなどが整いつつあった

    • MercariのMicroservicesとの連携が容易になる • MercariもMerpay同等のセキュリティレベルは求められる
  9. 23.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  10. 25.
  11. 26.
  12. 27.
  13. 31.

    2017年 2019年 2018年 JP Microservices Phase 1 • Microservices Platformの立ち上げ

    • AI出品機能のリリース JP Microservices Phase 2 • API gatewayの開発 • Microservices Starter-kitの開発 • Offer serviceのリリース JP Microservices Phase 3 • コードフリーズの決定 • 出品機能の切り出し • Merpayのリリース US Microservices • 初期フェーズのサポート • Search serviceの開発 JP Microservices Phase 4 • さらなるMicroservices化とデータ移行 の実施
  14. 35.
  15. 37.

    Listing Shipping Notification Purchase Login Search DB Monolith Review Listing

    DB Listing team User DB User team Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Microservices Backend team Timeline Search
  16. 38.

    Listing Shipping Notification Purchase Login Search DB Monolith Review Listing

    DB Listing team User DB User team Item DB Item team Shipping DB Shipping team Timeline DB Timeline team Microservices Backend team Timeline Search
  17. 39.

    “Why” is most important
 • “How”は無限にある!”Why”でしか最適な”How”は導き出せない • あらゆる意思決定はすべて”Why”がベースにならないといけない ◦ Platformとして機能を開発するとき

    ◦ BackendとしてMicroservicesを切り出すとき • 自分はどうだったか? ◦ はじめから”Why”を意識できていたわけではない.“How” (=どう切 り出すか?) に気を取られてしまっていた時期はあった ◦ エンジニアの性でもある...
  18. 41.

    Top-down decision is required
 • 現場(Bottom-up) だけでは解決できない問題はたくさんある ◦ Top-down vs.

    Bottomのバランスが大切 • Code-freezeはどうだったのか? ◦ 一部から反発はあったが今振り返ってみるとこれがなかったら今ほ どMicroservicesはドライブできてなかったと思う ◦ この意思決定ができることがMercariの強さだと思う • Microservices以外でTop-down decisionが必要になるもの ◦ SLI/SLO・Design doc
  19. 42.

    Complete freedom is not true
 • Microservicesでは最も適した技術や言語(やフレームワーク)を自由に 選択できるという利点がある,と言われるがそれはTrueか? ◦ (短期的には)

    No ▪ Microservicesを開発するためのFrictionをなるべく減らすた めに技術スタックの統一化や基盤は必須だと思う ▪ 組織の大きさ(基盤にさけるリソース)や成熟度によって段階 的に拡大していくべきだと思う
  20. 44.

    Conclusion
 • History of Mercari Microservices • Lessons Learned ◦

    Why is most important ◦ Top-down decision is required ◦ Complete freedom is not true