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
4.7k
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
260
第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
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
2
800
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
370
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
590
Ruby::Boxでできること、Refinementsでできること
joker1007
3
410
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
250
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
1.8k
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
53
58k
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
180
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
350
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2.1k
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
0
220
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
3
1.1k
Featured
See All Featured
Navigating Team Friction
lara
192
16k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
580
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Site-Speed That Sticks
csswizardry
13
1.2k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Building an army of robots
kneath
306
46k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Chasing Engaging Ingredients in Design
codingconduct
0
210
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
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