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
440
サイバーエージェントでCDツールを内製した話
Kenta Kozuka
June 22, 2023
Tweet
Share
More Decks by Kenta Kozuka
See All by Kenta Kozuka
フィーチャーフラグ&ABテストツールBucketeer開発の経緯 〜社内基盤としてのプロダクト戦略〜
kentakozuka
0
120
事業部を超えた 開発生産性向上に挑戦する
kentakozuka
7
1.5k
1000人を超えるエンジニア組織へのGitHub Copilot導入促進
kentakozuka
0
320
KubeCon 2023 China Recap & ブースを出展してきました
kentakozuka
1
210
PipeCD Good First Issues
kentakozuka
0
22
PipeCDでGitOpsやってみよう!
kentakozuka
0
730
サイバーエージェントのフィーチャーフラグを活用した高速開発
kentakozuka
0
35
リアルタイムデータ分析基盤をKafka(Strimzi) & Druidで構築し
kentakozuka
0
80
フィーチャーフラグを使用した開発で 迅速かつ安全にリリースする
kentakozuka
0
52
Other Decks in Programming
See All in Programming
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
ファインディの テックブログ爆誕までの軌跡
starfish719
2
1.1k
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
Grafana Loki によるサーバログのコスト削減
mot_techtalk
1
130
SpringBoot3.4の構造化ログ #kanjava
irof
2
1k
Unity Android XR入門
sakutama_11
0
160
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
910
仕様変更に耐えるための"今の"DRY原則を考える / Rethinking the "Don't repeat yourself" for resilience to specification changes
mkmk884
0
220
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
230
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Making Projects Easy
brettharned
116
6k
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
RailsConf 2023
tenderlove
29
1k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Adopting Sorbet at Scale
ufuk
74
9.2k
Embracing the Ebb and Flow
colly
84
4.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
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ください🙋