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
ここから始めるDevOps CI/CD編
Search
とことんDevOps
March 16, 2023
Technology
0
650
ここから始めるDevOps CI/CD編
DevOpsを始めるにあたってCI/CDの観点から学ぶべきポイントを紹介します。
とことんDevOps
March 16, 2023
Tweet
Share
More Decks by とことんDevOps
See All by とことんDevOps
この夏に始めたい!SQLデータベース超入門
devops_vtj
0
82
GitLabでCI/CDを動かしてみよう
devops_vtj
0
280
いまさら聞けない Git 超入門 〜Gitって結局なに?から始める第一歩〜
devops_vtj
0
440
もう難しくない!誰でもカンタンDocker入門 〜30分であなたのPCにアプリを立ち上げる〜
devops_vtj
0
400
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
1k
E2Eテスト自動化入門
devops_vtj
1
330
今日からはじめるWSL実践入門
devops_vtj
0
450
'24/11月開催 Visual Studio CodeのDev Containersを使って開発環境構築してみよう
devops_vtj
0
470
DevOpsに関連するツールとその概要を淡々と読み上げる会
devops_vtj
2
380
Other Decks in Technology
See All in Technology
事業特性から逆算したインフラ設計
upsider_tech
0
100
Amazon Q と『音楽』-ゲーム音楽もAmazonQで作成してみた感想-
senseofunity129
0
140
Strands Agents & Bedrock AgentCoreを1分でおさらい
minorun365
PRO
7
320
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
250
開発 × 生成AI × コミュニケーション:GENDAの開発現場で感じたコミュニケーションの変化 / GENDA Tech Talk #1
genda
0
200
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
AIエージェントを現場で使う / 2025.08.07 著者陣に聞く!現場で活用するためのAIエージェント実践入門(Findyランチセッション)
smiyawaki0820
6
1k
Intro to Software Startups: Spring 2025
arnabdotorg
0
250
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
3
1.1k
Amazon Qで2Dゲームを作成してみた
siromi
0
140
o11yツールを乗り換えた話
tak0x00
2
1.2k
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Scaling GitHub
holman
461
140k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Invisible Side of Design
smashingmag
301
51k
Designing for humans not robots
tammielis
253
25k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
760
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
Producing Creativity
orderedlist
PRO
347
40k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Transcript
ここから始めるDevOps CI/CD編 日本仮想化技術株式会社 水野 源
[email protected]
2023/03/15 1
発表者について • 水野 源 • VTJ 技術部所属 • Ubuntu JPメンバー
• ubuntu.comメンバー • 日経Linuxにて「Linux 100%活用 ガイド」を連載中 • 著書に「そろそろ常識? マンガで わかるLinuxコマンド」など 2
本日のアジェンダ • CIとは • CDとは • CircleCI • ArgoCD •
まとめ 3
CIとは • 自動的にテストするやつでしょ? くらいの理解の人も多いのでは • 間違いではないんだけど、テストは統合のための手段 • Continuous Integrationの略 •
日本語にすると継続的なインテグレーション(統合) • 統合とは、開発者のコードをリリースブランチにマージ可能にすること • リリースブランチは常に正常で、デプロイ可能でなければならない • ぶっ壊れたコードのマージはダメ絶対 • マージ可能にするということは? • マージ対象となるコードの品質を確認できているということ • そのためのテスト 4
コードの品質を担保するには • コードの品質を担保するにはテストがなにより重要 • 最初にテストを書き、テストが成功するようロジックを実装するのも一般的 • これがテスト駆動開発 • コードをリリースブランチへマージする前には •
コードのテストや静的解析を行う • テスト結果を確認する • 実際にマージを行う • ……というプロセスを踏む • これを継続的に行うのがCI 5
継続的? • 単にテストを実行しているだけでは不十分 • 人間は間違えるし、サボる生き物 • コードに対して十分なカバレッジを持つテストを行うこと • それを常に、自動的に実行し続けること •
この両方が大事 • これが満たされていれば、リリースブランチにあるコードは常に、す べてのテストをパスしていることが担保される • この状態を維持することこそがCIの本質 6
CDとは • Continuous Deliveryの略 • デリバリーとは、本番デプロイ可能な準備を整えること • CIによって品質が担保され、リリースブランチにマージされたコードも、 実際に動かすには本番サーバーにデプロイしなければならない •
だがデプロイには、それなりの準備や手順がある • コンテナイメージをビルドしたり • ビルドしたイメージをコンテナレジストリにプッシュしたり • これを継続的に行うのがCD 7
CDとは • 新しいコードをデプロイする時とは? • 当然リリースブランチのコードが更新された時 • つまりCIを完了した後にCDが実行されるのが基本 • そのためCIとCDはだいたいセットで扱われる •
そのためまとめてCI/CDと呼ばれる 8
Continuous Deployとは • Continuous Deliveryと同じくCDと略される概念 • まぎらわしい…… • デリバリーは、あくまでデプロイの準備を整えるだけ •
対してデプロイは、文字通りデプロイまでを一気に行う • Continuous Delivery + 本番デプロイ = Continuous Deploy という感じ • 単にCDと言った場合は区別がつかないことがあるので要注意 9
CI/CD概念図 10 テスト 静的解析 セキュリティチェック etc イメージビルド プッシュ etc 本番デプロイ
Continuous Integration Continuous Delivery Continuous Deploy CircleCI ArgoCD
CircleCI • CIやCDを行うには専用のツールを使うのが一般的 • コミットを検知し、自動的にCIワークフローを起動できることが求められる • そのためコードホスティングサービスと一体化したCIサービスも存在する • CircleCIはCIに特化した老舗のSaaS •
GitHub/GitLabとスムーズに連携できる • Insight、分割並列実行、SSHデバッグなど、便利機能も豊富 • 昨年、無料枠が大幅に強化された 11
CircleCI • CIとCDは、概念的には別物 • だが、実際は明確に分離されているものでもない • 分けて考える必要もあまりない • 単一のフロー内で、CIとCDを順番に実行することも一般的 •
CircleCIはCIという名前だが、デプロイ処理を書くこともできる • 例えばテスト→コンテナのビルド→プッシュ→k8sへのデプロイなどをひとつ のワークフロー内で行うことも可能 12
CircleCI 13
ArgoCD • さっきCircleCIからのデプロイも可能と言ったな? • だがそのためには、CircleCIに本番をいじる権限を預けなければならない • 本番がk8sなら、KUBECONFIGをCircleCIに設定する必要がある • それセキュリティ的にどうよ……? •
CIツールがクラスターを自由にいじれてしまうと、ワークフローを修正した時 などに事故が起きるかもしれない • そこでCDはCD用のツールを別に用意するというのもおすすめ 14
ArgoCD • ArgoCDは、それ自身もk8s上で動くアプリ • クラスター上で動作する他のアプリを管理できる • CircleCIがCDを行う場合、外からクラスターにアプリをプッシュする • だがArgoCDを使えば、ターゲットとなるクラスター上からアプリをプルできる •
この方式のメリットは? • クラスターの認証情報を外部に持ち出さなくてよい • CI/CD(デリバリー)とCD(デプロイ)を分離できる • クラスター上で動いているアプリの状態を管理できる • etc… 15
ArgoCD 16
CI/CD CI/CD概念図 17 コンテナリポジトリ GitHub コード CircleCI テスト ビルド イメージ
k8s ArgoCD アプリ コミット デリバリー デプロイ
まとめ • 高速にDevOpsサイクルを回すには • それを支援するツールの導入が必要不可欠 • なによりキモとなるのが、CI/CD • だがCI/CD自体は、プロダクトの価値に直接寄与しない •
なのでなるべくツールを使って手軽にやりたい • 無料枠の強化されたCircleCIはオススメ • テストやデプロイにツールを導入して自動化し、品質を担保しながら 高速な開発とリリースを実現しよう 18