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
3k
0
Share
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.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
3.9k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
110
Practical Orchestrator
shlominoach
191
11k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
720
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Agile that works and the tools we love
rasmusluckow
331
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
270
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 参考資料