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

20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践

 20以上のサービスを同時に支えるCAMのプラットフォーム戦略の実践

Platform Engineering Kaigi 2024 で、株式会社CAM における Fensi Platform という独自プラットフォームを使ったプラットフォーム戦略の実践についてお話しました。

ishikawa-pro

July 10, 2024
Tweet

More Decks by ishikawa-pro

Other Decks in Technology

Transcript

  1. 自己紹介 名前: 石川諒 •株式会社CAM •2019年度新卒入社 •サーバーサイドエンジニア •X: ishikawa__pro •Platform Engineering

    Meetup •Platform Engineering Kaigi ウェブサイト作りました!→ 当日の運営もやっています
  2. PipeCD •PipeCD とは The One CD for All {applications, platforms,

    operations} GitOps スタイルの CD マルチクラウド・複数のワークロードに対応 Kubernetes, Terraform, Cloud Run, AWS Lambda, Amazon ECS など 複数ワークロードを統一された UXで管理することで、開発者の認知 負荷を低減
  3. これまで • エンジニアは複数のサービスを横断的に開発・運用 • 色々なアーティストや占い師で似たようなサービスや機 能を横展開することが多い ◦ アカウント登録 ◦ サブスク

    ◦ ブログ・ニュース ◦ 従量課金 それぞれのサービスはインフラやコードが独立して おり、機能の横展開はコードを移植したりすることが 多かった CAM
  4. これまでの課題 保守性の低下 - 複製したコードは、サービス毎にちょっとずつ実装が違うため、一貫した管理が難しい - バグ修正や機能追加時に複数の場所で変更が必要 環境を横断した運用の大変さ - サービス毎にコンテキストスイッチをするのが大変 -

    バージョンアップ作業 品質のばらつき - 各サービスが独自に開発・運用されるため、品質にもばらつきがある 新規サービスの開発速度 - 4 〜 5名程度のエンジニアでの開発多いため、環境構築などの負担が大きい
  5. 新規サービスは Fensi Platform を利用する方針へ 開発速度と品質担保のために、 新規サービスは Fensi Platform を利用したサー ビス開発の方針へ

    足りない機能は Fensi Platform へ追加するか、 サービスごとに独自のサーバーを立てて実装 する
  6. ビジネスドメインで大別してストリームアラインドチームを 組成 Fensi Platform を開発・管理する Core チームが誕生 Core チームとストリームアラインドチームでコラボレーショ ンしながら

    Fensi Platform を充実させる SRE は各サービスの施策やイベントに応じて、 Fensi Platform 上のサービスが安定稼働できるように対応 どのように Fensi Platform 構築していたか
  7. 品質のばらつき → 共通機能の品質を担保することで利用しているサービス全体の品質も維持できるようになった → Fensi Platform とデータサイエンスチームが連携することで、レコメンデーションなどの   従来は個別に実装できなかった機能をサービスに導入できるようになった 新規サービスの開発速度

    → GitOps の推進、マニフェストのテンプレートなどを提供し、環境構築の負担を減らすことができた → 共通機能を活用して高速に新規サービスを立ち上げられるようになった これまでの課題に対する解決
  8. サービスのリニューアルと同時に、 Fensi Platform を利用するように裏側を作り替えて移管 移管する機能なども精査 - サービス間で共有できる機能は Fensi Platform へ実装

    - 共有できない機能は独自アプリケーションサーバーで実装 ユーザー関連データは既存サービスからマイグレーション 2020年 〜 2023年の約3年かけて移管 結果20以上のサービスが Fensi Platform 上で稼働中 どう移管したか
  9. 課題 Fensi Platform の立ち上げから 5年を経て課題も出てきた Fensi Platform 独自の用語や概念による学習コストの増加 (ドキュメント不足 )

    マイクロサービスの増加による Fensi Platform の複雑化 - 他のサービスでも利用する想定だったが、結局使わなかった。。 - 細かくマイクロサービスを切りすぎた。。 - 過度な共通化による複雑な依存関係 Fensi Platform に機能を足すか・独自実装するか、どこまで Fensi Platform を利用するか、という設計の難しさ
  10. Core チームが Fensi Platform の開発者体験を向上させることにフォーカスする Fensi Platform 独自の用語や概念による学習コストの増加 (ドキュメント不足 )

    → Fensi Platform に関するドキュメントの提供 → Backstage の検証・導入 - Fensi Platform上のサービスを Software カタログ化 - ドキュメントの集約 - CI/CD などの情報を集約 → Fensi Platform に関する社内勉強会の開催 課題に対する取り組み
  11. マイクロサービスの増加による Fensi Platform の複雑化 → 古いマイクロサービスのシャットダウン → モジュラーモノリスとして統合 Fensi Platform

    に機能を足すか・独自実装するか、どこまで Fensi Platform を利用するか、という設計の難しさ → ドキュメント提供 , 勉強会, 相談・レビューなどのファシリテーションで支援 課題に対する取り組み
  12. まとめ CAM では Fensi Platform という独自の Platform を構築してたくさんのサービスを開発・運用し ている 最初から大きなプラットフォームを作ったのではなく、必要に応じて

    Platform の機能を開発し ていった結果、 CAMのサービスを支えるプラットフォームとなった (TVP) 既存サービスはサービスリニューアルと同時に、 裏側を Fensi Platform を使うように作り替えて Fensi Platform へ移管した