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
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf
Search
Hiromu Miyazaki
June 06, 2023
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf
Hiromu Miyazaki
June 06, 2023
More Decks by Hiromu Miyazaki
See All by Hiromu Miyazaki
Cookpad TechConf 2022 - About PJ Takanawa (Hiromu Miyazaki)
hmiyazaki
0
4k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
460
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
From π to Pie charts
rasagy
0
310
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
390
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Designing for humans not robots
tammielis
254
26k
Docker and Python
trallard
47
4.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
380
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
390
Transcript
© 2023 Cookpad Inc. みんなの経験から学ぶ、マイクロサービス LT大会 @Findy マイクロサービス化の功罪と レシピサービスのリアーキテクティング クックパッド株式会社
宮崎広夢(@hilinker)
© 2022 Cookpad Inc. 2 2021年新卒でクックパッドに入社。 現在は主にレシピサービスの基盤周りを見 ている。TypeScript が好き。 自己紹介
宮崎広夢(@hilinker)
© 2022 Cookpad Inc. 3 • 超巨大モノリス時代のクックパッド • クックパッドのマイクロサービス化 •
マイクロサービスにして良かったこと・悪かったこと • クックパッドのマイクロサービス化は「成功」だったのか • アーキテクチャの再考 今日話すこと
© 2022 Cookpad Inc. 4 • 料理レシピサービス • 複数プラットフォームで提供 ◦
Web (PC・スマートフォン) ◦ Android・iOS アプリ • 歴史の長いサービス • 技術的負債やレガシーも多い クックパッドのレシピサービス
© 2023 Cookpad Inc. 5 1,500,000
© 2023 Cookpad Inc. 6 2017年時点の cookpad_all レポジトリのコード行数
© 2022 Cookpad Inc. 7 cookpad_all に全てがあった時代(2017年ごろ)
© 2023 Cookpad Inc. 8 デカすぎて開発不可
© 2022 Cookpad Inc. 9 • どこを触るとどこに影響があるか分からない • 関わる人が多すぎる ◦
施策の衝突が多発 ◦ 負債が増え続けて解消が間に合わない • 保守運用(ライブラリの更新やリファクタリング)が超絶大変 デカすぎて開発不可
© 2023 Cookpad Inc. 10 そうだ! マイクロサービスに切り分けよう!
© 2022 Cookpad Inc. 11 マイクロサービス時代
© 2022 Cookpad Inc. 12 • 巨大モノリスを複数の機能・モデル単位でマイクロサービスに分割 • 新規開発もどんどんマイクロサービスを作ろう! •
BFF の導入 ◦ Backend For Frontend ◦ フロントエンドのため API を集約し、UI/UX 上のデータ整形を行うオーケスト レーション層の1種 マイクロサービス時代
© 2022 Cookpad Inc. 13 マイクロサービス時代
© 2022 Cookpad Inc. 14 • 何を変更すると何に影響があるか全く見通しが立たない、 クソデカモノリスを触る必要性が減った • 機能開発のスピードを出しやすくなった
• ライブラリやミドルウェアの更新などがしやすくなった • 部署ごとに責任範囲が分割された • 開発環境の進化が加速した ◦ サービスメッシュ、分散トレーシング、耐障害性のある設計などなど マイクロサービス化して良かったこと
© 2023 Cookpad Inc. 15 マイクロサービス最高やん!
© 2023 Cookpad Inc. 16 現実
© 2022 Cookpad Inc. 17 • 分割をミスって結合が密なデータが泣き別れる • マイクロサービスが多いとそれだけ保守運用しなければいけないアプリケーションが 増える
◦ たとえば、Rails の EOL 対応を全てのマイクロサービスについてやる • BFF がロジック盛り盛りで肥大化 • 組織改変でマイクロサービスのオーナーシップが破滅 ◦ 1チームが 10 個も 20 個もマイクロサービスを持っていたり、 誰もオーナーシップを持っていない開発もされていないマイクロサービスが爆 誕 マイクロサービス、つらくね?
© 2023 Cookpad Inc. 18 つらい
© 2022 Cookpad Inc. 19 • 失敗か成功かで言うと「失敗」だった • 認証基盤、決済基盤などマイクロサービス化に成功したものもあった •
開発環境の進化など、得たものもたくさんあった • 失敗原因 ◦ 組織の形にマイクロサービスのアーキテクチャを追従できなかった ◦ 必要以上にマイクロサービスを分割しすぎた ◦ モノリスの開発しにくさをマイクロサービス化(だけ)で解決しようとした クックパッドのマイクロサービス化は……
© 2022 Cookpad Inc. 20 • マイクロサービスは組織の構造とセット ◦ コンウェイの法則 ◦
ドメイン単位で組織(開発チーム)を分割し、組織単位で少数のマイクロサービ スを持つ • 負債返済の手段としてマイクロサービス化をするのは待った方が良い ◦ 機能を減らす、アプリケーション内の結合を疎にするなどの方が効果的な可能 性がある ◦ メンテナンスコストの爆発を受容できるか 学び
© 2022 Cookpad Inc. 21 • レシピサービス全体のリアーキテクティングをしている • 重要度の低い機能・マイクロサービスの廃統合 •
マイクロサービスのオーナーシップの整理 • アプリケーションの責務の整理 • BFF の退役と GraphQL を採用した新しい API Gateway へのリプレイス クックパッドは今何をしているか
© 2023 Cookpad Inc. 22 マイクロサービスは 用量用法を守ろう
© 2022 Cookpad Inc. 23
© 2022 Cookpad Inc. 24 • Cookpad TechConf 2022 発表資料『巨大なレシピサービスを最高にしたい』
◦ https://speakerdeck.com/hmiyazaki/cookpad-techconf-2022-about-pj-tak anawa-hiromu-miyazaki • 『マイクロサービス宣言から8年 振り返りとこれから』 ◦ https://speakerdeck.com/eisuke/eight-years-after-the-microservices-decla ration-a-look-back-and-a-look-ahead 参考資料