Slide 1

Slide 1 text

20以上のサービスを同時に支える プラットフォーム戦略の実践 株式会社CAM / 株式会社サイバーエージェント 石川 諒 Platform Engineering Kaigi 2024

Slide 2

Slide 2 text

自己紹介 名前: 石川諒 •株式会社CAM •2019年度新卒入社 •サーバーサイドエンジニア •X: ishikawa__pro •Platform Engineering Meetup •Platform Engineering Kaigi ウェブサイト作りました!→ 当日の運営もやっています

Slide 3

Slide 3 text

•CAM と PipeCD チームでブースやってます 簡単なアンケート企画とクイズをやっています! クイズは正答数に応じてノベルティをプレゼント! まだの方はぜひ遊びにきてください〜 スポンサーブース

Slide 4

Slide 4 text

PipeCD •PipeCD とは The One CD for All {applications, platforms, operations} GitOps スタイルの CD マルチクラウド・複数のワークロードに対応 Kubernetes, Terraform, Cloud Run, AWS Lambda, Amazon ECS など 複数ワークロードを統一された UXで管理することで、開発者の認知 負荷を低減

Slide 5

Slide 5 text

クイズ

Slide 6

Slide 6 text

正解は

Slide 7

Slide 7 text

ブースに聞きに来てください!

Slide 8

Slide 8 text

CA の 開発者体験を支えるたくさんのプロダクト •プライベートクラウドの Cycloud •Kubernetes as a Service の AKE •社内向け決済基盤 Simply

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

•2025年で設立25周年 サイバーエージェントで最初にできた子会社 エンタメコンテンツ、ビジネスバラエティメディア、ライフ スタイルメディアを主軸に 30サービス以上を開発・運用 エンジニアは 約60名 株式会社CAM

Slide 11

Slide 11 text

これまで ● エンジニアは複数のサービスを横断的に開発・運用 ● 色々なアーティストや占い師で似たようなサービスや機 能を横展開することが多い ○ アカウント登録 ○ サブスク ○ ブログ・ニュース ○ 従量課金 それぞれのサービスはインフラやコードが独立して おり、機能の横展開はコードを移植したりすることが 多かった CAM

Slide 12

Slide 12 text

これまでの課題 保守性の低下 - 複製したコードは、サービス毎にちょっとずつ実装が違うため、一貫した管理が難しい - バグ修正や機能追加時に複数の場所で変更が必要 環境を横断した運用の大変さ - サービス毎にコンテキストスイッチをするのが大変 - バージョンアップ作業 品質のばらつき - 各サービスが独自に開発・運用されるため、品質にもばらつきがある 新規サービスの開発速度 - 4 〜 5名程度のエンジニアでの開発多いため、環境構築などの負担が大きい

Slide 13

Slide 13 text

CAM ではこれらの課題を解決するために、 Fensi Platform という独自の Platform を構築し、既存 サービスを移管しました CAM がどのようにして独自の Platform を構築し、 サービスを移管していったのかについて紹介しま す 取り組み

Slide 14

Slide 14 text

1.Fensi Platform の誕生 2.既存サービスの移管 3.Fensi Platform のこれから

Slide 15

Slide 15 text

Fensi Platform の誕生

Slide 16

Slide 16 text

● CAMのファンビジネスの知見を活かして、誰もが簡単に公式サイ トやファンクラブを立ち上げられるサービスを開始 (2023年10月ク ローズ済み ) ● 様々な機能を提供 - サブスク - ブログ - EC - 1on1 ビデオ通話 - etc Fensi のリリース(2019年4月)

Slide 17

Slide 17 text

Fensi の裏側をマイクロサービスで構築 これまでの開発経験をもとに、 Headless CMS や決済・認証機能をマイクロサー ビスとして開発

Slide 18

Slide 18 text

当時の開発体制 開発当時はまだ Fensi Platform という構想まで はなく、 Fensi というサービスを開発していた エンジニアは web frontend, backend, インフラ 5〜6人で開発

Slide 19

Slide 19 text

Fensi の Headless CMS や決済機能などを利用し て、新規ファンクラブサービスを構築 独自のアプリケーションサーバーは開発せず、 マイクロサービスに機能追加とフロントエンドの 開発だけで完結 Fensi Platform の誕生 Fensi の機能を利用して新規サービス開発

Slide 20

Slide 20 text

Fensi と ファンクラブサービス開発の2チーム体 制 密接にコラボレーションして Fensi に機能追加 ファンクラブサービス開発チームは、 Fensi に機 能を追加しながらファンクラブサービスを開発 どのように Fensi Platform 構築していたか

Slide 21

Slide 21 text

新規サービスは Fensi Platform を利用する方針へ 開発速度と品質担保のために、 新規サービスは Fensi Platform を利用したサー ビス開発の方針へ 足りない機能は Fensi Platform へ追加するか、 サービスごとに独自のサーバーを立てて実装 する

Slide 22

Slide 22 text

ビジネスドメインで大別してストリームアラインドチームを 組成 Fensi Platform を開発・管理する Core チームが誕生 Core チームとストリームアラインドチームでコラボレーショ ンしながら Fensi Platform を充実させる SRE は各サービスの施策やイベントに応じて、 Fensi Platform 上のサービスが安定稼働できるように対応 どのように Fensi Platform 構築していたか

Slide 23

Slide 23 text

Before After

Slide 24

Slide 24 text

これまでの課題に対する解決 保守性の低下 → 機能を共通化することでサービスごとに開発・修正する頻度を下げることができた 環境を横断した運用の大変さ → 1つの Kubernetes 上でサービスを稼働させることで運用効率があがった → Fensi Platform にオブザーバビリティを導入したことで、 Fensi Platform 上のサービスの障害対応や   パフォーマンス改善を効率的にできるようになった

Slide 25

Slide 25 text

品質のばらつき → 共通機能の品質を担保することで利用しているサービス全体の品質も維持できるようになった → Fensi Platform とデータサイエンスチームが連携することで、レコメンデーションなどの   従来は個別に実装できなかった機能をサービスに導入できるようになった 新規サービスの開発速度 → GitOps の推進、マニフェストのテンプレートなどを提供し、環境構築の負担を減らすことができた → 共通機能を活用して高速に新規サービスを立ち上げられるようになった これまでの課題に対する解決

Slide 26

Slide 26 text

既存サービスの移管

Slide 27

Slide 27 text

CAM には30以上の既存サービスがある 既存サービスの運用の効率化とサービス品質向上のために Fensi Platform への移管を決定 移管対象のサービスや順番は CTO を始めとする経営陣などで判断 既存サービスはどうする

Slide 28

Slide 28 text

サービスのリニューアルと同時に、 Fensi Platform を利用するように裏側を作り替えて移管 移管する機能なども精査 - サービス間で共有できる機能は Fensi Platform へ実装 - 共有できない機能は独自アプリケーションサーバーで実装 ユーザー関連データは既存サービスからマイグレーション 2020年 〜 2023年の約3年かけて移管 結果20以上のサービスが Fensi Platform 上で稼働中 どう移管したか

Slide 29

Slide 29 text

Fensi Platform のこれから

Slide 30

Slide 30 text

課題 Fensi Platform の立ち上げから 5年を経て課題も出てきた Fensi Platform 独自の用語や概念による学習コストの増加 (ドキュメント不足 ) マイクロサービスの増加による Fensi Platform の複雑化 - 他のサービスでも利用する想定だったが、結局使わなかった。。 - 細かくマイクロサービスを切りすぎた。。 - 過度な共通化による複雑な依存関係 Fensi Platform に機能を足すか・独自実装するか、どこまで Fensi Platform を利用するか、という設計の難しさ

Slide 31

Slide 31 text

Core チームが Fensi Platform の開発者体験を向上させることにフォーカスする Fensi Platform 独自の用語や概念による学習コストの増加 (ドキュメント不足 ) → Fensi Platform に関するドキュメントの提供 → Backstage の検証・導入 - Fensi Platform上のサービスを Software カタログ化 - ドキュメントの集約 - CI/CD などの情報を集約 → Fensi Platform に関する社内勉強会の開催 課題に対する取り組み

Slide 32

Slide 32 text

マイクロサービスの増加による Fensi Platform の複雑化 → 古いマイクロサービスのシャットダウン → モジュラーモノリスとして統合 Fensi Platform に機能を足すか・独自実装するか、どこまで Fensi Platform を利用するか、という設計の難しさ → ドキュメント提供 , 勉強会, 相談・レビューなどのファシリテーションで支援 課題に対する取り組み

Slide 33

Slide 33 text

まとめ CAM では Fensi Platform という独自の Platform を構築してたくさんのサービスを開発・運用し ている 最初から大きなプラットフォームを作ったのではなく、必要に応じて Platform の機能を開発し ていった結果、 CAMのサービスを支えるプラットフォームとなった (TVP) 既存サービスはサービスリニューアルと同時に、 裏側を Fensi Platform を使うように作り替えて Fensi Platform へ移管した

Slide 34

Slide 34 text

一緒に働く仲間を募集しています メディア事業、広告事業、ゲーム事業と多様な事業を展開するサイバーエージェントでは、各事業において、開発者の生 産性‧開発者体験の向上に努めています プライベートクラウド「 Cycloud」や決済基盤「 Simply」、継続的デリバリーツール「 PipeCD」、子会社 CAMによるサービス基 盤「Fensi Platform」など、Platform Engineeringにおける多様な取り組みを進めている点が特長です 詳細は下記のリンクをご確認ください! https://www.cyberagent.co.jp/careers/professional/ https://hrmos.co/pages/cyberagent-group/jobs/0000659 おわりに

Slide 35

Slide 35 text

ご清聴ありがとうございました