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
560
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サイバーエージェントでCDツールを内製した話
Kenta Kozuka
June 22, 2023
More Decks by Kenta Kozuka
See All by Kenta Kozuka
フィーチャーフラグ&ABテストツールBucketeer開発の経緯 〜社内基盤としてのプロダクト戦略〜
kentakozuka
0
240
事業部を超えた 開発生産性向上に挑戦する
kentakozuka
7
1.7k
1000人を超えるエンジニア組織へのGitHub Copilot導入促進
kentakozuka
0
390
KubeCon 2023 China Recap & ブースを出展してきました
kentakozuka
0
310
PipeCD Good First Issues
kentakozuka
0
63
PipeCDでGitOpsやってみよう!
kentakozuka
0
990
サイバーエージェントのフィーチャーフラグを活用した高速開発
kentakozuka
0
67
リアルタイムデータ分析基盤をKafka(Strimzi) & Druidで構築し
kentakozuka
0
120
フィーチャーフラグを使用した開発で 迅速かつ安全にリリースする
kentakozuka
0
90
Other Decks in Programming
See All in Programming
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
620
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
180
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
220
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.5k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
0
340
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
290
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
150
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
450
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
AIエージェントで 変わるAndroid開発環境
takahirom
2
760
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
Featured
See All Featured
Visualization
eitanlees
152
17k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Context Engineering - Making Every Token Count
addyosmani
9
1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Designing for humans not robots
tammielis
254
26k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
430
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
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ください🙋