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
Y.Sumikura
January 13, 2023
Technology
4.9k
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
320
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
260
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
190
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
82
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
370
水を運ぶ人としてのリーダーシップ
izumii19
3
690
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
720
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
200
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
150
人材育成分科会.pdf
_awache
4
310
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
190
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
270
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
290
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
770
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
23
7k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Faster Mobile Websites
deanohume
310
32k
Bash Introduction
62gerente
615
220k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
Accessibility Awareness
sabderemane
1
140
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Skip the Path - Find Your Career Trail
mkilby
1
150
A Modern Web Designer's Workflow
chriscoyier
698
190k
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