Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiromu Miyazaki
June 06, 2023
3.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf
Hiromu Miyazaki
June 06, 2023
Transcript
24 slides
© 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 参考資料
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
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Balancing Empowerment & Direction
lara
6
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Code Reviewing Like a Champion
maltzj
529
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Evolving SEO for Evolving Search Engines
ryanjones
0
360
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
470
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k