Slide 1

Slide 1 text

サイバーエージェントで CDツールを内製した話 Kenta Kozuka

Slide 2

Slide 2 text

@kentakozuka @kenta_kozuka CyberAgent Developer Productivity室 PipeCD maintainer #DevOps, #DeveloperProductivityEngineering #PlatformEngineering Me

Slide 3

Slide 3 text

3 CDツール内製まで

Slide 4

Slide 4 text

CDツール開発前のCAのCD事情 ● CIと密結合 ● 一元化されたプラットフォームが存在しない ● 各プロダクトチームは、独自のCDシステムを選択し、維持する全責任を負 わなければならない ● チーム異動の際のオンボーディングコストが高い ● 使用プロダクト・ツールの増加 ● マルチクラウド環境で使いにくい

Slide 5

Slide 5 text

目指したもの ● すべての人に、プラットフォームに依存しない一貫したプロセスを ● 誰にとっても簡単なUX ● CIとCDの分離 ● 迅速かつ有用なフィードバックを提供すること ● プロダクトチームにアプリのデプロイメントの管理とオブザーバビリティを 提供する ● 高いセキュリティ

Slide 6

Slide 6 text

2019-2020年頭ぐらい 構想〜言語化 ● 各部署に水面下でヒアリング ● 現状の問題の洗い出し ● 理想状態を言語化 ● 既存ソリューションの分析 ○ Spinnaker、ArgoCD、FluxCD、Harnessなど ● 導入プロセスを考える ● 全体的なデザイン・ロードマップの作成

Slide 7

Slide 7 text

2020年5月 開発スタート ● 提案書にまとめて偉い人に見せる ● チーム発足 ● 開発スタート

Slide 8

Slide 8 text

開発当初からOSS化を前提 ● 業界水準のものを作る ● 社内だけでなく色々な視点から意 見をもらう ● コントリビュートしてもらう ● みんな流行ってるもの使いたい

Slide 9

Slide 9 text

OSSの健全なライフサイクルを確立し、開発資源を最大化する 社内成果 事例創出 コミュニティ 活性化 市場 拡大化 ■OSS公開 ■ベストプラクティスの啓蒙 ■カンファレンス発表 ■CNCF等参加での知名度・信頼性獲得 ■社外の利用・事例が増える ■個人or企業コントリビューター獲得 ■採用チャンス増 ■社外コンサル活動 ■社内要望サポート ■プロダクトグロース ■社内Enablingチーム活動

Slide 10

Slide 10 text

〜2023年まで ● 2020年10月 リポジトリを公開 ● 2021年11月 社内Saas提供開始 ● 2023年5月 CNCF Sandboxに参加

Slide 11

Slide 11 text

現在 Github リポジトリ ● ~3,500 commits ● 50+ contributors ● 700+ stars 社内SaaS ● 20以上のプロジェクトで導入 ● 約2,900のアプリケーションを管 理

Slide 12

Slide 12 text

社内の導入事例

Slide 13

Slide 13 text

13 PipeCDの特徴

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

One CD for All 15 全ての環境 - dev, stg, prod... 全てのオペレーション - scaling, upgrading, config updating, rolling back, infra provisioning... 全てのアプリケーション - infra, kubernetes, serverless... 全てのインフラ - public clouds such as GCP, AWS, Azure, private cloud

Slide 16

Slide 16 text

マルチプロバイダ & マルチテナント 16 様々なプラットフォーム、アプリケーション、テレメトリーに対応 マルチクラスタ・テナンシーでの運用が可能

Slide 17

Slide 17 text

Kubernetesエコシステムとのインテグレーション 17

Slide 18

Slide 18 text

GitOps

Slide 19

Slide 19 text

シンプルなUIと可視性 19 UIはアプリケーションの状態をリアルタイムで可視化し、 どのタイミングで何が発生したかが明示される

Slide 20

Slide 20 text

Control Plane & Agentモデル ● デプロイはクラスタ内のpiped agentが実行 ● アプリケーションのクレデンシャルが外部に漏れるこ とがない ● pipedはステートレスなシングルバイナリなので場所を 選ばず、メンテも簡単

Slide 21

Slide 21 text

セキュリティ ● ビルトインのシークレット管理 ● RBAC ● SSO

Slide 22

Slide 22 text

高度な自動化 22 エラーレートに基づく 自動ロールバック 構成変更の自動検知

Slide 23

Slide 23 text

DevOps指標の可視化

Slide 24

Slide 24 text

Plan Preview

Slide 25

Slide 25 text

プログレッシブデリバリー ● 機能を段階的に公開していく ● ユーザーへの影響を細かく制御する ● 全てのプロセスを自動化 commit rollout analyze release deploy rollback

Slide 26

Slide 26 text

プログレッシブデリバリーのプロセス ● トラフィック制御(カナリアデプロイメント) ● 分析(カナリア分析) ● 自動化されたロールバック

Slide 27

Slide 27 text

分析

Slide 28

Slide 28 text

メトリクスの取得 ユーザーのモニタリングシステムからメトリクスを取得 - Prometheus - Datadog - CloudWatch - NewRelic - Google Cloud Monitoring

Slide 29

Slide 29 text

EventWatcher UPDATE

Slide 30

Slide 30 text

Wait-Approval 30 デプロイに必要な承認者を指定する

Slide 31

Slide 31 text

Deployment chain 31 dev stg prd asia us europe

Slide 32

Slide 32 text

32 実際に見てみよう! pipecd.dev

Slide 33

Slide 33 text

33 社内SaaSの運用

Slide 34

Slide 34 text

社内構成 PipeCDチームがControl Planeを運用 各チームはpiped agentをクラスタ内に配置するだけ Aチーム Bチーム Cチーム PipeCDチーム

Slide 35

Slide 35 text

コントロールプレーンアーキテクチャー

Slide 36

Slide 36 text

コントロールプレーン構成詳解 ● GKE上にHelmでデプロイ ● Data storeはFirestore ● File storeはGCS(Google Cloud Storage) ● 管理画面、監視(Grafana)へはIAPを通して アクセス ● GithubでOAuthログイン ● Github Teamsを使ってRBAC ● Slackチャンネルへアラートを通知

Slide 37

Slide 37 text

社内dev,prdのインフラ構成

Slide 38

Slide 38 text

社内dev,prdのインフラ構成 ● 各チームはpiped agentを社内のControl Planeに登録 ● UI, APIはControl Planeで提供

Slide 39

Slide 39 text

社内dev,prdのインフラ構成 ● 本番環境のインフラとPipeCDを別のPipeCDで管理

Slide 40

Slide 40 text

社内dev,prdのインフラ構成 ● 開発環境のインフラとPipeCD は本番環境のPipeCDで管理

Slide 41

Slide 41 text

41 社内サポート

Slide 42

Slide 42 text

社内サポート Slackワークフロー ● 利用申請や問い合わせ等 ● 問い合わせはケースを立ててもらう ● 5段階の緊急度でトリアージュ ● Github Internal repositoryのDiscussionと同期

Slide 43

Slide 43 text

社内コミュニティ Slackチャンネル ● リリース ● PipeCDチームからの情報共有

Slide 44

Slide 44 text

社内イベント ● 社内での利用事例 ● 新規リリースした機能の説明

Slide 45

Slide 45 text

pipe-cd/pipe @pipecd_dev https://pipecd.dev/ We always welcome your contributions!

Slide 46

Slide 46 text

さいごに Developer Productivity室では全方位でエンジニア募集中! #PipeCD #DevOps #開発生産性 #OSS開発インターン #副業 に興味があれば、 「Developer Productivity室」で検索か、 @kenta_kozukaまでDMください🙋