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
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
190
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
160
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
260
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
320
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
160
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
140
10分で知る最近のOmarchy
komagata
0
260
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
120
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
240
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.5k
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
140
Featured
See All Featured
It's Worth the Effort
3n
188
29k
The SEO Collaboration Effect
kristinabergwall1
1
550
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
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