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
1.7k
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.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.3k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
50
7.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
A better future with KSS
kneath
238
17k
Code Review Best Practice
trishagee
64
17k
GitHub's CSS Performance
jonrohan
1030
460k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Documentation Writing (for coders)
carmenintech
65
4.4k
Faster Mobile Websites
deanohume
305
30k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Being A Developer After 40
akosma
86
590k
The Invisible Side of Design
smashingmag
297
50k
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 参考資料