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
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Y.Sumikura
January 13, 2023
Technology
5.4k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
Y.Sumikura
January 13, 2023
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
330
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
200
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
270
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
700
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
86
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
370
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.6k
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
760
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
120
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
410
三人寄ればチューリング完全
puhitaku
4
2k
コーチングの奥義 何もしないテクニック
jinwatanabe
0
140
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
380
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
codmoninc
0
180
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
180
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
170
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
Facilitating Awesome Meetings
lara
57
7.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
ラッコキーワード サービス紹介資料
rakko
1
4.5M
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
The Pragmatic Product Professional
lauravandoore
37
7.4k
A designer walks into a library…
pauljervisheath
211
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Transcript
第93回 雲勉【オンライン︓初⼼者向け】 CI/CDって結局何なの︖インフラエンジニアがCode3兄弟を学ぶ アイレット株式会社
アジェンダ 2 0. ⾃⼰紹介 1. はじめに (19:05~19:10) 2. CI/CDって何︖ (19:10~19:20)
3. AWSでのCI/CDを構成するメリットって︖ (19:20~19:25) 4. AWSで⼀連の流れを作ってみた (19:25~19:40) 5. おわりに (19:40~19:45) 6. 質疑応答 (19:45~)
0. 講師⾃⼰紹介 3 n 阿部 幸司 • クラウドインテグレーション事業部 プロジェクト企画推進セクション インフラ技術グループ
• 経歴 オンプレミスインフラエンジニア(構築,運⽤保守) 10年 クラウドインフラエンジニア(構築,運⽤保守) 3年 • ロードバイク、マウンテンバイク、シクロクロスに乗ったり登⼭しています。 ⾝体が⾃然と⼭を求めています。
1. はじめに 4
1. はじめに 5 皆さんはCI/CDというものについてどのくらいご存知ですか︖ 私はこんなイメージです。 いい感じにアプリケーションを構築するための何か、 アプリケーション開発のリリース速度が上がり リリースまでが楽になる何か、⾃動化 とても良さそうなものではあるもののふわっとして何がいいのかイマイチですね笑 アプリケーションの領域に近いもののAWSのインフラエンジニアとしてお客様に提案するこ
ともありし、何より「AWS DevOps Engineer Professional」を持っているのでプロフェッ ショナルとして正しく理解する必要があると思い、CI/CDとAWSでのCode兄弟による実装を ⼿を動かしならが理解できればと思いこちらを今回の題材としました。
2. CI/CDって何︖ 6
2. CI/CDとは︖ 7 CI/CDとは下記の略称で「アプリケーション開発のステージに⾃動化を取り⼊れて、顧客に アプリケーションを提供する頻度を⾼める⼿法」です。 ※ ※ https://www.redhat.com/ja/topics/devops/what-is-ci-cd CI︓Continuous Integration(継続的インテグレーション)
CD︓Continuous Delivery(継続的デリバリー) なるほど、わからん︕ つまりどういうことだってばよ︖
2. CI/CDとは︖ 8 アプリケーション開発とそれを本番に反映するにはざっくり下記のような⼿順を踏みます。 ・プログラムを書く ・コンパイル(⼈間が理解できる⾔語で作られたプログラムをPCが理解できる⾔葉に変換する処理) ・テスト(動作確認) ・展開 これを⾃分のPCで実⾏しようとすると。。。 ・コンパイルでPCの処理能⼒を持っていかれてその間何も出来ない
・テストがたくさんあって時間を取られるしテスト漏れがでないか⼼配 ・展開のたびに申請を上げたりして展開までに多くの時間を費やす これらを⼀連のフローとしてテスト含め⾃動化しましょう、それによって開発者は開発に専念して品質向上、⾼頻 度のアップデートを繰り返して利⽤者のフィードバックを反映していいものを作りましょう、という感じのものに なります。
2. CI/CDのフェーズ 9 ⼀般的にCI/CDはSource、Build、Test、Deployの4フェーズで構成されます。 Source Build Test Deploy ソースの保管 ・ソースが先祖返りしないよう
にバージョン管理を⾏う ソフトウェアのパッケージング ・ソフトウェアが実⾏可能な状 態にする テスト ・単体テスト、結合テスト、ア プリケーション正常動作を確認 するためのテストを⾏う デプロイ ・テストを⾏ったアプリケー ションをリリースする CI︓継続的インテグレーション CD︓継続的デリバリー
2. CI/CDメリット 10 ・ソフトウェアリリースプロセスの⾃動化 ⼿動でのビルド、社内での承認処理といったメイン開発部分以外の⼿間がかかる部分を⼀連の処理と して⾃動化することで効率的かつ迅速なリリースを可能とする。 ・開発者の⽣産性の向上 開発者がメイン開発以外の⼿動作業から開放されアプリケーション開発に注⼒できるようになる。 ・コード品質の向上 ⼀連の処理の中でテスト、デプロイが⾏われるため、品質を維持することが容易となり、問題が発⽣
した際にもロールバックといったことが容易となる。
2. インフラエンジニアって関係なくない︖ 11 ここまでの話の中にインフラエンジニアがどこに関係してくるんだ︖となったかもしれません。 前のページに記載した領域は開発者が主に触る部分で、インフラエンジニアが考える領域では無いと 思われるかもしれません。 確かにそう捉えられるかもしれませんが、クラウドという現場ではインフラ、開発の垣根が低くなっ て来ています。また前にも記載した通り開発者が開発に専念するためにも環境の整備という点では全 く関係ないとは⾔えず、積極的に取り組んでいく領域と考えています。
3. AWSでのCI/CDを構成するメリットって︖ 12
3. CI/CDを実装できるAWSサービス 13 AWSからCI/CDを実装するための機能がサービスとして展開されており、 今回使⽤するサービスを下記に記載します。 • CodeCommit • CodeBuild •
CodeDeploy • CodePipeline AWS CodeBuild AWS CodeCommit AWS CodeDeploy AWS CodePipeline AWSサービス 説明 AWS以外の同様のサービス CodeCommit AWSが提供するマネージド型のソース管理サービス。 Gitの標準機能がサポートされており、Gitコマンドが利⽤できる。 PushなどのイベントをトリガーにSNS/Lambdaの呼び出しが可能でAWSサービスとの親和性が⾼い。 GitHub,GitLab, GitBucket等 CodeBuild スケーラビリティに優れたAWSが提供するマネージド型のビルドサービス。 ソースコードのコンパイル、テストを実⾏し、デプロイ可能なソフトウェアパッケージを作成するサービス。 Dockerイメージの作成も可能。 Jenkins, CircleCI等 CodeDeploy AWSが提供するマネージド型のデプロイサービス。 EC2、ECS、Lambda、オンプレサーバといった様々なものにソフトウェアのデプロイを⾏えるサービス。 Azure Pipelines, Cloud Build/Google Cloud Deploy等 CodePipeline AWSが提供するマネージド型のデリバリーサービス。 パイプラインと呼ばれるCode3兄弟や様々なAWSサービス、3rdパーティ製品との統合をサポートできるサー ビス。 Azure Pipelines, Cloud Build/Google Cloud Deploy等 Code3兄弟
3. AWSサービスのいいところって何︖ 14 • AWSサービスへの親和性の⾼さ • AWS内部で処理が完結できるため安全性が⾼い • マネージドサービスなのでサーバ管理が不要で容量、実⾏環境のリソースを気にする必要が無い •
利⽤に応じた従量課⾦ • AWSサービス、3rdパーティツールとの連携が可能
4. AWSで⼀連の流れを作ってみる 15
4. AWSサービスを使って実装してみる 16 今回構築した環境はAWSから出ているハンズオンを元に構築した環境になります。 実際に⼿を動かして動作を確認されたい場合はこちらの資料をご確認いただければと思います。 ▪AWS CI/CD for Amazon ECSハンズオン
~ Cloud9, Docker, Code Services を⽤いた開発効率向上 ~ https://pages.awscloud.com/rs/112-TZM-766/images/AWS_CICD_ECS_Handson.pdf # 補⾜ CI/CD部分にフォーカスをしているためFargateの説明は省かせていただきます。 Fargateについては過去の雲勉にて題材として取り上げられたものがありますので、そちらをご確認いただければと思います。 ▪ECS⼊⾨ ~ CloudFront + ELB + ECS FargateでWebサイトを公開 ~ https://www.youtube.com/watch?v=0NR8SiYvNCI
4. AWSサービスを使って実装してみる(構成概要図) 17 AWS CodeCommitへのpushをトリガーにしてコンテナイメージをECSで動かす。
4. AWSサービスを使って実装してみる(構成図) 18 AWS CodeCommitへのpushをトリガーにしてコンテナイメージをECSで動かす。
4. AWSサービスを使って実装してみる(構成図) 19 AWS CodeCommitへのpushをトリガーにしてコンテナイメージをECSで動かす。
4. リポジトリの中⾝ 20 ・Dockerfile 使⽤するdockerイメージとsrcフォルダをdockerイメージに取り込む記載をした ファイル ・buildspec.yml ビルドで処理される内容を記載した定義ファイル(作成したdockerイメージをECR へプッシュする記載をしたファイル) ・appspec.yml
コンテナイメージをデプロイするECSに関する記述 ・taskdef.json ECSで設定したタスク定義を記載しているファイル ・src/index.php コンテナイメージ内に設置するファイル # リポジトリ php-sample/ ├── Dockerfile ├── buildspec.yml ├── appspec.yml ├── taskdef.json └── src └── index.php
4. AWS CodeCommit 21 CodeCommitよりリポジトリの作成をクリックする 任意のリポジトリ名を ⼊⼒して作成をクリックする git cloneコマンドを控える
4. AWS CodeCommit 22 控えたgit cloneコマンドを実⾏してローカルにリポジトリをクローンする リポジトリにソースをプッシュする
4. AWS CodePipeline 23 CodePipelineよりパイプラインを作成するをクリックする 任意のパイプライン名を⼊⼒して次へをクリックする 先に作成したCodeCommitを指定して次へをクリックする
4. AWS CodePipeline 24 ビルドステージでCodeBuildを選択して、 プロジェクトを作成するをクリックする ビルド環境情報をを⼊⼒して作成をクリックする
4. AWS CodePipeline 25 デプロイ先となる事前に作成したECSの情報を⼊⼒する
4. AWS CodePipeline 26 AWS CodeBuild AWS CodeCommit AWS CodeDeploy
4. AWS CodePipeline 27 AWS CodeBuild AWS CodeCommit AWS CodeDeploy
AWS CodePipeline
4. ハンズオンに追加設定︓Testを追加 28 CoedePipelineの中に Testフェーズを追加
4. ハンズオンに追加設定︓Testを追加 29 パイプラインのBuildのあとにTestを追加して、ECRにアップし たdockerイメージ:latestを指定してテストを⾏う buildspec.yml例 (このファイルはプログラム、テスト内容によって記載が変わります)
4. ハンズオンに追加設定︓Testを追加 30
4. ハンズオンに追加設定︓Testを追加(レポート出⼒) 31
4. ハンズオンに追加設定︓承認プロセスを追加 32 ここに承認プロセスを追加 CodeCommitにpushが⾏われたらSNS で承認 or 拒否の通知を送信する
4. ハンズオンに追加設定︓承認プロセス 33 メールが届くので記載のURLをクリッ クして承認 or 拒否を⾏い処理を進める
5. おわりに 34
5. おわりに 35 今回CI/CDについての学習と実際に⼿を動かして実装までを⾏ってみました。 CodePipeline、Code3兄弟の設定はAWSマネージメントコンソールから操作するだけで簡単に設定できましたし、 ハンズオンを⾏ったので⼤きく躓くということはなく、ある程度の動きを理解することが出来ました。 最初に⼿をかけて⼀度CI/CDという流れを作ってしまえば以降はそこにソースを流すだけでいいため開発者の⼿が減る んだろうな、ということも感じました。 時代の潮流、トレンドがものすごいスピードで移ろうこの時代において、顧客のニーズを素早く取り込み、それを早急 に、品質を保ちながら実現することが求められます。
それらを要望を実現するために可能な限り⾃動化を組み込むことでお客様の要望する品質、コスト、納期を満たす必要 があり、その⾃動化の⼿法がCI/CDというツールになります。 改めてインフラエンジニアがそんな事考えないといけないのか︖というところに⽴ち返りますが、 クラウドを利⽤するとお客様はそういった知識、知⾒を求めています。そんなときに最低限CI/CDがどんなもので、ク ラウドで実装するにはどのような⽅法があり、どんなことができるのかは把握しておく必要があります。 今回の雲勉がそんなところの⼀助となればと思っております。
参考 36 ▪第84回 雲勉【オンライン︓初⼼者向け】ECS⼊⾨ ~ CloudFront + ELB + ECS
FargateでWebサイトを公開 ~ https://www.youtube.com/watch?v=0NR8SiYvNCI ▪CodeBuild で PHPUnit を実⾏したかったので PHP のコンテナイメージを作って公開した https://iret.media/36779 ▪AWS CI/CD for Amazon ECSハンズオン ~ Cloud9, Docker, Code Services を⽤いた開発効率向上 ~ https://pages.awscloud.com/rs/112-TZM-766/images/AWS_CICD_ECS_Handson.pdf ▪AWS における継続的インテグレーションと継続的デリバリーの実践 https://d1.awsstatic.com/International/ja_JP/Whitepapers/practicing-continuous-integration-continuous- delivery-on-AWS_JA_final.pdf ▪CI/CDとは https://www.redhat.com/ja/topics/devops/what-is-ci-cd
37