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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
350
Databricks 導入から Genie 活用まで、全部やった話
cyberagentdevelopers
PRO
0
1.7k
専任DEゼロからの データ基盤構築 - Databricks x IaC x AIで 進める「データの民主化」-
cyberagentdevelopers
PRO
1
1.2k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
10
9.9k
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
1
460
Local LLM Meetup #1 Opening
cyberagentdevelopers
PRO
1
520
LocalLLMで機密データを匿名化したい
cyberagentdevelopers
PRO
2
570
Vibe Fine-Tuning Version 2 — RunPod SSH で安く学習してみた
cyberagentdevelopers
PRO
1
520
2026年度新卒技術研修 サイバーエージェントのデータベース 活用事例とパフォーマンス調査入門
cyberagentdevelopers
PRO
11
13k
Other Decks in Technology
See All in Technology
10分で知る最近のOmarchy
komagata
0
350
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
530
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
160
AI de Idea
kawaguti
PRO
2
120
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
SREは、MCPとAutopilotをこう使え!
kazumax55
2
840
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
330
HHKBエバンジェリストになる方法
941
0
110
おい、エージェントを使って終わらせろ
nwiizo
0
460
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
130
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
1
140
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
510
Featured
See All Featured
Scaling GitHub
holman
464
140k
A Tale of Four Properties
chriscoyier
163
24k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
800
My Coaching Mixtape
mlcsv
0
310
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Building Adaptive Systems
keathley
44
3.2k
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