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

Development of Mercari's web in 2019

Matsumoto Kazutaka
November 25, 2019
980

Development of Mercari's web in 2019

Matsumoto Kazutaka

November 25, 2019
Tweet

Transcript

  1. 1 Development of Mercari’s Web in 2019 ~Mercari Engineer’s meetup

    for students vol.3~ 2019/11/25 Kazutaka Matsumoto
  2. 3 自己紹介 松本和高 @_mkazutaka 2017/08~10 インターン 2018/04~ 新卒入社 WebPlatformチーム所属 Backend

    Engineer FXBot/Rust/WebAnimation Microservicesにジョインするには...略 php-srcで遊ぶよ
  3. 4 遍歴 2017/08: Channel / Box 2018/04: Anyone 2018/07: CRE

    2018/10: オファー 2018/12: Merpay Help 2019/04: WebRearchi 2019/08: DefenceForce 2019/10: WebPlatform => PHP => PHP => PHP => Go => PHP => TypeScript/Go => PHP => PHP/Go
  4. 5 遍歴 2017/08: Channel / Box 2018/04: Anyone 2018/07: CRE

    2018/10: オファー 2018/12: Merpay Help 2019/04: WebRearchi 2019/08: DefenceForce 2019/10: WebPlatform => PHP => PHP => PHP => Go => PHP => TypeScript/Go => PHP => PHP/Go
  5. 8 • PHP + Twig + Pimple + Symfony: EventDispatcher

    ◦ Twig: Template Engine ◦ Pimple: Service Locator メルカリのWeb(~2019/08~)
  6. 11 Monolith Web Single PHP Server Team Mercari Team Mercari

    Box Team Mercari Guide Mercari Mercari Box Mercari Guide
  7. 12 Microservices Single PHP Server Team Mercari Team Mercari Box

    Team Mercari Guide Mercari Mercari Box Mercari Guide SSR GraphQL SPA REST API Simple HTTP server Microservices Team Mercari Microservices Team Mercari Box Microservices Team Mercari Guide
  8. 14 Actual: Chaos Monolithic Service Feature ・ ・ ・ Monolithic

    Service Feature ・ ・ ・ Microservice Microservice Microservice Microservice Microservice Microservice • Microservices化によってお客さまに影響があってはならない
  9. 18 Session Consistency • リアーキ前後で Sessionに関わる挙動が変わってはいけない • セッション情報の一貫性の担保の ためのマイクロサービスを作成 ◦

    GraphQLからアクセスのたびに PHPWebに問い合わせる Session service Request Call to get session every time Response Session data GraphQL mercari-web
  10. 21 PHP Web ロードマップもデザインドック上で • 大きな意思決定が必要 ◦ Webを開発するチームすべてに影響がある • どう決定する?

    ◦ トップダウン? => No ◦ マネージャが決定する? => マネージャを含めた自分たちのチームで ◦ 勝手に決めるの? => チームには意思決定を決めるためのツールがある
  11. 22 WebPlatform: 主な技術スタック • Go, PHP, Typescript • Nextjs, GraphQL

    • GCP, Docker, Kubernetes, Terraform • CircleCI, Spinnaker • Datadog, Kibana, Sentry