Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CI/CDのススメ(サイバーエージェント新卒研修2024)
Search
CyberAgent
PRO
June 05, 2024
Technology
1.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CI/CDのススメ(サイバーエージェント新卒研修2024)
CyberAgent
PRO
June 05, 2024
More Decks by CyberAgent
See All by CyberAgent
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
340
Databricks 導入から Genie 活用まで、全部やった話
cyberagentdevelopers
PRO
0
1.6k
専任DEゼロからの データ基盤構築 - Databricks x IaC x AIで 進める「データの民主化」-
cyberagentdevelopers
PRO
1
1.2k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
10
9.8k
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
1
450
Local LLM Meetup #1 Opening
cyberagentdevelopers
PRO
1
510
LocalLLMで機密データを匿名化したい
cyberagentdevelopers
PRO
2
560
Vibe Fine-Tuning Version 2 — RunPod SSH で安く学習してみた
cyberagentdevelopers
PRO
1
510
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
11
13k
Other Decks in Technology
See All in Technology
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
170
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
510
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
140
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
150
Omarchy Quattro の日本語設定周り
simosako
2
140
Tab5をRubyで動くパソコンにする
kishima
2
340
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
340
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
810
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
550
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
120
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
300
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
11k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Evolving SEO for Evolving Search Engines
ryanjones
0
280
The Pragmatic Product Professional
lauravandoore
37
7.4k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Joys of Absence: A Defence of Solitary Play
codingconduct
1
500
From π to Pie charts
rasagy
0
360
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
CI/CDのススメ サイバーエージェント 2024新卒研修 @ 2024/04/10 CyberAgent Infrastructure Unit / K.Saito
1
齋藤 健太 (Saito Kenta) • 入社年度 ◦ 2022
年 新卒入社 • 所属 ◦ CIU > Development Div • 最近の業務 ◦ プライベートクラウド運用 ◦ マネージドサービスの開発・運用 • 趣味 ◦ ゲーム・漫画 2
CI/CD? 3
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 4
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 5
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 6 継続的な
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 7 継続的な デプロイ デリバリー
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 8 継続的な ???
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 9 継続的な なにかをやる
CI • 「好きなタイミング」で「なにかをやらせる」 ◦ 「git push」で「テストをやる」 ◦ 「朝1時」で「バッチをやる」 ◦ 「特定のブランチにマージ」で「リリースする」
10
CI • 「好きなタイミング」で「なにかをやらせる」 ◦ 「git push」で「テストをやる」 ◦ 「朝1時」で「バッチをやる」 ◦ 「特定のブランチにマージ」で「リリースする」
11 手動でやるのはかなり辛い...
CI 12
CI 13
CI 14 GitOps
なにがうれしいの? 🤔 15
Q このコードの悪い点は? 16 package main import "fmt" func main() {
i := 0 fmt.Println("Hello, 世界") }
Q このコードの悪い点は? 17 package main import "fmt" func main() {
i := 0 fmt.Println("Hello, 世界") } $ go build . ./prog.go:8:2: i declared and not used
Q このコードの悪い点は? 18 func main() { i := 0 for
j := 0; j < 10; j++ { resp, err := http.Get("https://www.cyberagent.co.jp") if err != nil { panic(err) } defer resp.Body.Close() byteArray, err := io.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(byteArray)) } }
Q このコードの悪い点は? 19 func main() { i := 0 for
j := 0; j < 10; j++ { resp, err := http.Get("https://www.cyberagent.co.jp") if err != nil { panic(err) } defer resp.Body.Close() byteArray, err := io.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(byteArray)) } }
Q このコードの悪い点は? 20 func main() { i := 0 for
j := 0; j < 10; j++ { resp, err := http.Get("https://www.cyberagent.co.jp") if err != nil { panic(err) } defer resp.Body.Close() byteArray, err := io.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(byteArray)) } }
毎回手でチェックは面倒😩 →CIでチェックしよう! 21
CI を行う大きな利点 22 認知負荷を下げられる
CI を行う大きな利点 • 「このコードってコンパイル通るの?」 ◦ 継続的にビルドしてチェック • 「このコードって書き方合ってるの?」 ◦ 継続的にLinterにかけてチェック
• 「このコードってどこにデプロイされているの?」 ◦ 継続的にデプロイされることで確認不要 23
Q このコードの悪い点は? 24 func main() { i := 0 for
j := 0; j < 10; j++ { resp, err := http.Get("https://www.cyberagent.co.jp") if err != nil { panic(err) } defer resp.Body.Close() byteArray, err := io.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(byteArray)) } } コンパイルエラーで発見可能 Lintツールで発見可能
流行りのAIによるコードレビュー 25
CI を行う大きな利点 26 より高度なコードレビューを実 現 💪
CI を行う大きな利点 (再掲) • 「このコードってコンパイル通るの?」 ◦ 継続的にビルドしてチェック • 「このコードって書き方合ってるの?」 ◦
継続的にLinterにかけてチェック • 「このコードってどこにデプロイされているの?」 ◦ 継続的にデプロイされることで確認不要 27
CI を行う大きな利点 (再掲) • 「このコードってコンパイル通るの?」 ◦ 継続的にビルドしてチェック • 「このコードって書き方合ってるの?」 ◦
継続的にLinterにかけてチェック • 「このコードってどこにデプロイされているの?」 ◦ 継続的にデプロイされることで確認不要 28 コードの品質を担保 +チーム内で可視化
CI を行う大きな利点 (再掲) • 「このコードってコンパイル通るの?」 ◦ 継続的にビルドしてチェック • 「このコードって書き方合ってるの?」 ◦
継続的にLinterにかけてチェック • 「このコードってどこにデプロイされているの?」 ◦ 継続的にデプロイされることで確認不要 29 チームの合意を ソフトウェアで担保
CI を行う大きな利点 (再掲) • 「このコードってコンパイル通るの?」 ◦ 継続的にビルドしてチェック • 「このコードって書き方合ってるの?」 ◦
継続的にLinterにかけてチェック • 「このコードってどこにデプロイされているの?」 ◦ 継続的にデプロイされることで確認不要 30 チームの合意を ソフトウェアで担保
CIとは 31 ここまでがCIの説明
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 32 継続的な
CI / CD? CI: Continuous Integration CD: Continuous Delivery
Continuous Deployment 33 継続的な デプロイ デリバリー
CD? 34 Delivery VS Deployment
Delivery VS Deployment 35 コード変更 ビルド Staging環境 にデプロイ Production環境 にデプロイ
CI(Continuous Integration) CD(Continuous Delivery) CD(Continuous Deployment) Production環境にデプロイ準備完了まで =CD(elivery) Production環境に自動デプロイ =CD(eployment)
CD? 36 Push VS Pull
Push VS Pull • Push型 ◦ CI上の一つのタスクとしてdev/stg/prd環境を操作 ◦ e.g. Ansible,
Terraform • Pull型 ◦ k8sやマネージドサービスからコードの更新を監視 → 変更があった際にコードをpullしてデプロイ ◦ e.g. ArgoCD 37
CDを行う大きな利点 • 「このコードってどこにデプロイされてるんだっけ?」 ◦ CDの設定を確認することで分かる • 「このコードってデプロイしたんだっけ?」 ◦ CDのStatusを確認することで分かる •
「このコードってどうやってデプロイするんだっけ?」 ◦ CDの設定時以外で意識することが無くなる 38
3. CI/CDを実現する ソフトウェア 39
現代のCIが持つ特徴 • 実行ごとに新しい環境がセットアップされる • Gitリポジトリに動作条件を記載する ◦ 実行タイミング・実行するコマンドやスクリプト • ライブラリのように共有して使えるエコシステムがある •
実行結果はWebやAPIで結果を確認できる 40 ※絶対にこの条件を満たさないといけないわけではありません!
代表的なCIサービス • SaaS 専業企業 ◦ CircleCI / Travis CI /
Bitrise / Xcode Cloud • パブリッククラウド付属サービス ◦ AWS CodeBuild / Google Cloud Cloud Build • その他 ◦ GitHub Actions • OSS(自前のマシンが必要) ◦ Jenkins 41
Github Actions • GitHub社が提供しているCIサービス • 様々なOSに対応している ◦ Linux, macOS,
Windows • 他ユーザーとワークフローを共有可能 42
代表的なCDサービス • CDはデプロイ先に応じて手法が異なる • パブリッククラウド付属サービス ◦ AWS CodePipeline / Google
Cloud Cloud Deploy • OSS ◦ ArgoCD ◦ PipeCD 43
• GitOps といえばこれ的なところがある • CLI, WebUI などユーザにあった操作も可能 • 依存関係のあるデプロイメントプロセスもサポート •
弊社での利用実績も多い • Public Cloud => Cloud Deploy, Code Deploy ArgoCD 44
ご清聴ありがとうございました! 45