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
0
2.2k
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf
Hiromu Miyazaki
June 06, 2023
Tweet
Share
More Decks by Hiromu Miyazaki
See All by Hiromu Miyazaki
Cookpad TechConf 2022 - About PJ Takanawa (Hiromu Miyazaki)
hmiyazaki
0
3.5k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A designer walks into a library…
pauljervisheath
205
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Done Done
chrislema
183
16k
Thoughts on Productivity
jonyablonski
69
4.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Fireside Chat
paigeccino
37
3.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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 参考資料