Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サイバーエージェントでCDツールを内製した話
Search
Kenta Kozuka
June 22, 2023
Programming
1
490
サイバーエージェントでCDツールを内製した話
Kenta Kozuka
June 22, 2023
Tweet
Share
More Decks by Kenta Kozuka
See All by Kenta Kozuka
フィーチャーフラグ&ABテストツールBucketeer開発の経緯 〜社内基盤としてのプロダクト戦略〜
kentakozuka
0
170
事業部を超えた 開発生産性向上に挑戦する
kentakozuka
7
1.6k
1000人を超えるエンジニア組織へのGitHub Copilot導入促進
kentakozuka
0
360
KubeCon 2023 China Recap & ブースを出展してきました
kentakozuka
0
250
PipeCD Good First Issues
kentakozuka
0
29
PipeCDでGitOpsやってみよう!
kentakozuka
0
850
サイバーエージェントのフィーチャーフラグを活用した高速開発
kentakozuka
0
55
リアルタイムデータ分析基盤をKafka(Strimzi) & Druidで構築し
kentakozuka
0
95
フィーチャーフラグを使用した開発で 迅速かつ安全にリリースする
kentakozuka
0
70
Other Decks in Programming
See All in Programming
Improving my own Ruby thereafter
sisshiki1969
1
160
旅行プランAIエージェント開発の裏側
ippo012
2
930
ProxyによるWindow間RPC機構の構築
syumai
3
1.2k
RDoc meets YARD
okuramasafumi
4
170
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
4.3k
Compose Multiplatform × AI で作る、次世代アプリ開発支援ツールの設計と実装
thagikura
0
170
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
440
🔨 小さなビルドシステムを作る
momeemt
4
690
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
350
Navigating Dependency Injection with Metro
zacsweers
3
3.5k
@Environment(\.keyPath)那么好我不允许你们不知道! / atEnvironment keyPath is so good and you should know it!
lovee
0
130
Ruby Parser progress report 2025
yui_knk
1
460
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Typedesign – Prime Four
hannesfritz
42
2.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Building an army of robots
kneath
306
46k
The Cult of Friendly URLs
andyhume
79
6.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
KATA
mclloyd
32
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
How to Ace a Technical Interview
jacobian
279
23k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Transcript
サイバーエージェントで CDツールを内製した話 Kenta Kozuka
@kentakozuka @kenta_kozuka CyberAgent Developer Productivity室 PipeCD maintainer #DevOps, #DeveloperProductivityEngineering #PlatformEngineering
Me
3 CDツール内製まで
CDツール開発前のCAのCD事情 • CIと密結合 • 一元化されたプラットフォームが存在しない • 各プロダクトチームは、独自のCDシステムを選択し、維持する全責任を負 わなければならない • チーム異動の際のオンボーディングコストが高い
• 使用プロダクト・ツールの増加 • マルチクラウド環境で使いにくい
目指したもの • すべての人に、プラットフォームに依存しない一貫したプロセスを • 誰にとっても簡単なUX • CIとCDの分離 • 迅速かつ有用なフィードバックを提供すること •
プロダクトチームにアプリのデプロイメントの管理とオブザーバビリティを 提供する • 高いセキュリティ
2019-2020年頭ぐらい 構想〜言語化 • 各部署に水面下でヒアリング • 現状の問題の洗い出し • 理想状態を言語化 • 既存ソリューションの分析
◦ Spinnaker、ArgoCD、FluxCD、Harnessなど • 導入プロセスを考える • 全体的なデザイン・ロードマップの作成
2020年5月 開発スタート • 提案書にまとめて偉い人に見せる • チーム発足 • 開発スタート
開発当初からOSS化を前提 • 業界水準のものを作る • 社内だけでなく色々な視点から意 見をもらう • コントリビュートしてもらう • みんな流行ってるもの使いたい
OSSの健全なライフサイクルを確立し、開発資源を最大化する 社内成果 事例創出 コミュニティ 活性化 市場 拡大化 ▪OSS公開 ▪ベストプラクティスの啓蒙 ▪カンファレンス発表
▪CNCF等参加での知名度・信頼性獲得 ▪社外の利用・事例が増える ▪個人or企業コントリビューター獲得 ▪採用チャンス増 ▪社外コンサル活動 ▪社内要望サポート ▪プロダクトグロース ▪社内Enablingチーム活動
〜2023年まで • 2020年10月 リポジトリを公開 • 2021年11月 社内Saas提供開始 • 2023年5月 CNCF
Sandboxに参加
現在 Github リポジトリ • ~3,500 commits • 50+ contributors •
700+ stars 社内SaaS • 20以上のプロジェクトで導入 • 約2,900のアプリケーションを管 理
社内の導入事例
13 PipeCDの特徴
14
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
マルチプロバイダ & マルチテナント 16 様々なプラットフォーム、アプリケーション、テレメトリーに対応 マルチクラスタ・テナンシーでの運用が可能
Kubernetesエコシステムとのインテグレーション 17
GitOps
シンプルなUIと可視性 19 UIはアプリケーションの状態をリアルタイムで可視化し、 どのタイミングで何が発生したかが明示される
Control Plane & Agentモデル • デプロイはクラスタ内のpiped agentが実行 • アプリケーションのクレデンシャルが外部に漏れるこ とがない
• pipedはステートレスなシングルバイナリなので場所を 選ばず、メンテも簡単
セキュリティ • ビルトインのシークレット管理 • RBAC • SSO
高度な自動化 22 エラーレートに基づく 自動ロールバック 構成変更の自動検知
DevOps指標の可視化
Plan Preview
プログレッシブデリバリー • 機能を段階的に公開していく • ユーザーへの影響を細かく制御する • 全てのプロセスを自動化 commit rollout analyze
release deploy rollback
プログレッシブデリバリーのプロセス • トラフィック制御(カナリアデプロイメント) • 分析(カナリア分析) • 自動化されたロールバック
分析
メトリクスの取得 ユーザーのモニタリングシステムからメトリクスを取得 - Prometheus - Datadog - CloudWatch - NewRelic
- Google Cloud Monitoring
EventWatcher UPDATE
Wait-Approval 30 デプロイに必要な承認者を指定する
Deployment chain 31 dev stg prd asia us europe
32 実際に見てみよう! pipecd.dev
33 社内SaaSの運用
社内構成 PipeCDチームがControl Planeを運用 各チームはpiped agentをクラスタ内に配置するだけ Aチーム Bチーム Cチーム PipeCDチーム
コントロールプレーンアーキテクチャー
コントロールプレーン構成詳解 • GKE上にHelmでデプロイ • Data storeはFirestore • File storeはGCS(Google Cloud
Storage) • 管理画面、監視(Grafana)へはIAPを通して アクセス • GithubでOAuthログイン • Github Teamsを使ってRBAC • Slackチャンネルへアラートを通知
社内dev,prdのインフラ構成
社内dev,prdのインフラ構成 • 各チームはpiped agentを社内のControl Planeに登録 • UI, APIはControl Planeで提供
社内dev,prdのインフラ構成 • 本番環境のインフラとPipeCDを別のPipeCDで管理
社内dev,prdのインフラ構成 • 開発環境のインフラとPipeCD は本番環境のPipeCDで管理
41 社内サポート
社内サポート Slackワークフロー • 利用申請や問い合わせ等 • 問い合わせはケースを立ててもらう • 5段階の緊急度でトリアージュ • Github
Internal repositoryのDiscussionと同期
社内コミュニティ Slackチャンネル • リリース • PipeCDチームからの情報共有
社内イベント • 社内での利用事例 • 新規リリースした機能の説明
pipe-cd/pipe @pipecd_dev https://pipecd.dev/ We always welcome your contributions!
さいごに Developer Productivity室では全方位でエンジニア募集中! #PipeCD #DevOps #開発生産性 #OSS開発インターン #副業 に興味があれば、 「Developer
Productivity室」で検索か、 @kenta_kozukaまでDMください🙋