Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf

Hiromu Miyazaki
June 06, 2023
870

 マイクロサービス化の功罪と_レシピサービスのリアーキテクティング.pdf

Hiromu Miyazaki

June 06, 2023
Tweet

Transcript

  1. © 2023 Cookpad Inc.
    みんなの経験から学ぶ、マイクロサービス LT大会 @Findy
    マイクロサービス化の功罪と
    レシピサービスのリアーキテクティング
    クックパッド株式会社 宮崎広夢(@hilinker)

    View full-size slide

  2. © 2022 Cookpad Inc. 2
    2021年新卒でクックパッドに入社。
    現在は主にレシピサービスの基盤周りを見
    ている。TypeScript が好き。
    自己紹介
    宮崎広夢(@hilinker)

    View full-size slide

  3. © 2022 Cookpad Inc. 3
    ● 超巨大モノリス時代のクックパッド
    ● クックパッドのマイクロサービス化
    ● マイクロサービスにして良かったこと・悪かったこと
    ● クックパッドのマイクロサービス化は「成功」だったのか
    ● アーキテクチャの再考
    今日話すこと

    View full-size slide

  4. © 2022 Cookpad Inc. 4
    ● 料理レシピサービス
    ● 複数プラットフォームで提供
    ○ Web (PC・スマートフォン)
    ○ Android・iOS アプリ
    ● 歴史の長いサービス
    ● 技術的負債やレガシーも多い
    クックパッドのレシピサービス

    View full-size slide

  5. © 2023 Cookpad Inc. 5
    1,500,000

    View full-size slide

  6. © 2023 Cookpad Inc. 6
    2017年時点の
    cookpad_all レポジトリのコード行数

    View full-size slide

  7. © 2022 Cookpad Inc. 7
    cookpad_all に全てがあった時代(2017年ごろ)

    View full-size slide

  8. © 2023 Cookpad Inc. 8
    デカすぎて開発不可

    View full-size slide

  9. © 2022 Cookpad Inc. 9
    ● どこを触るとどこに影響があるか分からない
    ● 関わる人が多すぎる
    ○ 施策の衝突が多発
    ○ 負債が増え続けて解消が間に合わない
    ● 保守運用(ライブラリの更新やリファクタリング)が超絶大変
    デカすぎて開発不可

    View full-size slide

  10. © 2023 Cookpad Inc. 10
    そうだ!
    マイクロサービスに切り分けよう!

    View full-size slide

  11. © 2022 Cookpad Inc. 11
    マイクロサービス時代

    View full-size slide

  12. © 2022 Cookpad Inc. 12
    ● 巨大モノリスを複数の機能・モデル単位でマイクロサービスに分割
    ● 新規開発もどんどんマイクロサービスを作ろう!
    ● BFF の導入
    ○ Backend For Frontend
    ○ フロントエンドのため API を集約し、UI/UX 上のデータ整形を行うオーケスト
    レーション層の1種
    マイクロサービス時代

    View full-size slide

  13. © 2022 Cookpad Inc. 13
    マイクロサービス時代

    View full-size slide

  14. © 2022 Cookpad Inc. 14
    ● 何を変更すると何に影響があるか全く見通しが立たない、
    クソデカモノリスを触る必要性が減った
    ● 機能開発のスピードを出しやすくなった
    ● ライブラリやミドルウェアの更新などがしやすくなった
    ● 部署ごとに責任範囲が分割された
    ● 開発環境の進化が加速した
    ○ サービスメッシュ、分散トレーシング、耐障害性のある設計などなど
    マイクロサービス化して良かったこと

    View full-size slide

  15. © 2023 Cookpad Inc. 15
    マイクロサービス最高やん!

    View full-size slide

  16. © 2023 Cookpad Inc. 16
    現実

    View full-size slide

  17. © 2022 Cookpad Inc. 17
    ● 分割をミスって結合が密なデータが泣き別れる
    ● マイクロサービスが多いとそれだけ保守運用しなければいけないアプリケーションが
    増える
    ○ たとえば、Rails の EOL 対応を全てのマイクロサービスについてやる
    ● BFF がロジック盛り盛りで肥大化
    ● 組織改変でマイクロサービスのオーナーシップが破滅
    ○ 1チームが 10 個も 20 個もマイクロサービスを持っていたり、
    誰もオーナーシップを持っていない開発もされていないマイクロサービスが爆

    マイクロサービス、つらくね?

    View full-size slide

  18. © 2023 Cookpad Inc. 18
    つらい

    View full-size slide

  19. © 2022 Cookpad Inc. 19
    ● 失敗か成功かで言うと「失敗」だった
    ● 認証基盤、決済基盤などマイクロサービス化に成功したものもあった
    ● 開発環境の進化など、得たものもたくさんあった
    ● 失敗原因
    ○ 組織の形にマイクロサービスのアーキテクチャを追従できなかった
    ○ 必要以上にマイクロサービスを分割しすぎた
    ○ モノリスの開発しにくさをマイクロサービス化(だけ)で解決しようとした
    クックパッドのマイクロサービス化は……

    View full-size slide

  20. © 2022 Cookpad Inc. 20
    ● マイクロサービスは組織の構造とセット
    ○ コンウェイの法則
    ○ ドメイン単位で組織(開発チーム)を分割し、組織単位で少数のマイクロサービ
    スを持つ
    ● 負債返済の手段としてマイクロサービス化をするのは待った方が良い
    ○ 機能を減らす、アプリケーション内の結合を疎にするなどの方が効果的な可能
    性がある
    ○ メンテナンスコストの爆発を受容できるか
    学び

    View full-size slide

  21. © 2022 Cookpad Inc. 21
    ● レシピサービス全体のリアーキテクティングをしている
    ● 重要度の低い機能・マイクロサービスの廃統合
    ● マイクロサービスのオーナーシップの整理
    ● アプリケーションの責務の整理
    ● BFF の退役と GraphQL を採用した新しい API Gateway へのリプレイス
    クックパッドは今何をしているか

    View full-size slide

  22. © 2023 Cookpad Inc. 22
    マイクロサービスは
    用量用法を守ろう

    View full-size slide

  23. © 2022 Cookpad Inc. 23

    View full-size slide

  24. © 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
    参考資料

    View full-size slide