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
470
サイバーエージェントでCDツールを内製した話
Kenta Kozuka
June 22, 2023
Tweet
Share
More Decks by Kenta Kozuka
See All by Kenta Kozuka
フィーチャーフラグ&ABテストツールBucketeer開発の経緯 〜社内基盤としてのプロダクト戦略〜
kentakozuka
0
150
事業部を超えた 開発生産性向上に挑戦する
kentakozuka
7
1.5k
1000人を超えるエンジニア組織へのGitHub Copilot導入促進
kentakozuka
0
340
KubeCon 2023 China Recap & ブースを出展してきました
kentakozuka
1
230
PipeCD Good First Issues
kentakozuka
0
26
PipeCDでGitOpsやってみよう!
kentakozuka
0
800
サイバーエージェントのフィーチャーフラグを活用した高速開発
kentakozuka
0
53
リアルタイムデータ分析基盤をKafka(Strimzi) & Druidで構築し
kentakozuka
0
89
フィーチャーフラグを使用した開発で 迅速かつ安全にリリースする
kentakozuka
0
61
Other Decks in Programming
See All in Programming
CRUD から CQRS へ ~ 分離が可能にする柔軟性
tkawae
0
220
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
240
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
210
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
370
マテリアルって何者?RealityKitで扱うマテリアル入門
nao_randd
0
140
rbs-traceを使ってWEARで型生成を試してみた After RubyKaigi 2025〜ZOZO、ファインディ、ピクシブ〜 / tried rbs-trace on WEAR
oyamakei
0
1k
Agent Rules as Domain Parser
yodakeisuke
1
290
複雑なフォームを継続的に開発していくための技術選定・設計・実装 #tskaigi / #tskaigi2025
izumin5210
12
6.3k
がんばりすぎないコーディングルール運用術
tsukakei
1
180
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
120
バリデーションライブラリ徹底比較
nayuta999999
1
410
Featured
See All Featured
Balancing Empowerment & Direction
lara
1
83
What's in a price? How to price your products and services
michaelherold
245
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Statistics for Hackers
jakevdp
799
220k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
It's Worth the Effort
3n
184
28k
Writing Fast Ruby
sferik
628
61k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
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ください🙋