Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Development of Mercari's web in 2019
Search
Matsumoto Kazutaka
November 25, 2019
0
1.1k
Development of Mercari's web in 2019
Matsumoto Kazutaka
November 25, 2019
Tweet
Share
More Decks by Matsumoto Kazutaka
See All by Matsumoto Kazutaka
RemoteFunctionを使ったコロケーション
mkazutaka
1
440
個のパフォーマンスを上げるためのAIを使った取り組み
mkazutaka
0
230
GPTsより精度の高いRAGシステムの構築
mkazutaka
26
12k
LLMと連携したブログ書くエディタを作ってみた
mkazutaka
2
470
社内情報検索システムで用いられるRAGの4つの実装方法
mkazutaka
14
9.7k
ChatGPTを使ったSlackbotの実装いろいろ紹介
mkazutaka
2
2.7k
20181215 php-srcで遊ぶよ
mkazutaka
2
1.2k
メルカリ Backendエンジニアの日常 ~Backend Engineer Drink Meetup #1~
mkazutaka
0
2.1k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
230
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
YesSQL, Process and Tooling at Scale
rocio
174
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
280
How to Ace a Technical Interview
jacobian
281
24k
A designer walks into a library…
pauljervisheath
210
24k
Transcript
1 Development of Mercari’s Web in 2019 ~Mercari Engineer’s meetup
for students vol.3~ 2019/11/25 Kazutaka Matsumoto
2 はじめに • 自己紹介 • メルカリWebの状況 • その他
3 自己紹介 松本和高 @_mkazutaka 2017/08~10 インターン 2018/04~ 新卒入社 WebPlatformチーム所属 Backend
Engineer FXBot/Rust/WebAnimation Microservicesにジョインするには...略 php-srcで遊ぶよ
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
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
6 Web
7 メルカリとWeb • メルカリはネイティブアプリからできたサービス ◦ Webは機能がクライアントより少ない ◦ Web独自のサービスも存在する(メルカリボックス・メルカリガイド)
8 • PHP + Twig + Pimple + Symfony: EventDispatcher
◦ Twig: Template Engine ◦ Pimple: Service Locator メルカリのWeb(~2019/08~)
9 • 状況変化 ◦ Webにまつわる技術の変化: PWA/SSR/BFF/WebAssembly ◦ メルカリ内でWebエンジニア数の増加 • 技術進化とスケーラビリティについていけるアーキテクチャが必要
Web業界
10 Microservices化
11 Monolith Web Single PHP Server Team Mercari Team Mercari
Box Team Mercari Guide Mercari Mercari Box Mercari Guide
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
13 ideal Monolithic Service Feature ・ ・ ・ Microservice Microservice
Microservice Microservice
14 Actual: Chaos Monolithic Service Feature ・ ・ ・ Monolithic
Service Feature ・ ・ ・ Microservice Microservice Microservice Microservice Microservice Microservice • Microservices化によってお客さまに影響があってはならない
15 WebPlatform
16 ミッション メルカリWebのMicroservice化を推進し開発チームが安全 かつ容易に開発・運用を行えるようにするため、Web全体に またがる意思決定や基盤構築を行っていく
17 現在のアーキテクチャ GraphQL SSR mercari-web mercari-api Web Gateway Session service
CDN
18 Session Consistency • リアーキ前後で Sessionに関わる挙動が変わってはいけない • セッション情報の一貫性の担保の ためのマイクロサービスを作成 ◦
GraphQLからアクセスのたびに PHPWebに問い合わせる Session service Request Call to get session every time Response Session data GraphQL mercari-web
19 デプロイメントフロー • マイクロサービス環境でのメルカリWebのリリースフロー
20 • メルカリはそれぞれが持つ問題解決方法の提案できる環境 ◦ フローが整っているから • 立場に関係なく提案/議論を行える環境へ ◦ リアーキテクチャ自体が DesignDoc上で議論され
実装されている 意思決定のフロー: DesignDoc
21 PHP Web ロードマップもデザインドック上で • 大きな意思決定が必要 ◦ Webを開発するチームすべてに影響がある • どう決定する?
◦ トップダウン? => No ◦ マネージャが決定する? => マネージャを含めた自分たちのチームで ◦ 勝手に決めるの? => チームには意思決定を決めるためのツールがある
22 WebPlatform: 主な技術スタック • Go, PHP, Typescript • Nextjs, GraphQL
• GCP, Docker, Kubernetes, Terraform • CircleCI, Spinnaker • Datadog, Kibana, Sentry
23 画像NoIMage 週1h: Kubernetes Pattern WebPlatform: 勉強会
24 ミッション メルカリWebのMicroservice化を推進し開発チームが安全 かつ容易に開発・運用を行えるようにするため、Web全体に またがる意思決定や基盤構築を行っていく
25 まとめ • 自己紹介 • メルカリWebの状況 • その他