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
400
サイバーエージェントでCDツールを内製した話
Kenta Kozuka
June 22, 2023
Tweet
Share
More Decks by Kenta Kozuka
See All by Kenta Kozuka
事業部を超えた 開発生産性向上に挑戦する
kentakozuka
7
1.4k
1000人を超えるエンジニア組織へのGitHub Copilot導入促進
kentakozuka
0
290
KubeCon 2023 China Recap & ブースを出展してきました
kentakozuka
1
190
PipeCDでGitOpsやってみよう!
kentakozuka
0
610
サイバーエージェントのフィーチャーフラグを活用した高速開発
kentakozuka
0
32
リアルタイムデータ分析基盤をKafka(Strimzi) & Druidで構築し
kentakozuka
0
69
フィーチャーフラグを使用した開発で 迅速かつ安全にリリースする
kentakozuka
0
47
Other Decks in Programming
See All in Programming
Identifying User Idenity
moro
6
7.8k
CPython 인터프리터 구조 파헤치기 - PyCon Korea 24
kennethanceyer
0
240
Dev ContainersとGitHub Codespacesの素敵な関係
ymd65536
1
120
qmuntal/stateless のススメ
sgash708
0
120
僕がつくった48個のWebサービス達
yusukebe
18
17k
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
3
2.2k
のびしろを広げる巻き込まれ力:偶然を活かすキャリアの作り方/oso2024
takahashiikki
1
410
Nuxt UI Pro、NuxtHub、Nuxt Scripts、Nuxtエコシステムをふんだんに利用して開発するコーポレートサイト@Vue Fes Japan 2024
shingangan
3
890
Android 15 でアクションバー表示時にステータスバーが白くなってしまう問題
tonionagauzzi
0
140
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
100
カスタムしながら理解するGraphQL Connection
yanagii
1
1.2k
Piniaの現状と今後
waka292
5
1.4k
Featured
See All Featured
The Invisible Side of Design
smashingmag
297
50k
Statistics for Hackers
jakevdp
796
220k
What's new in Ruby 2.0
geeforr
342
31k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Six Lessons from altMBA
skipperchong
26
3.5k
Making the Leap to Tech Lead
cromwellryan
132
8.9k
Done Done
chrislema
181
16k
It's Worth the Effort
3n
183
27k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
How GitHub (no longer) Works
holman
311
140k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
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ください🙋