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
AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまて...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuki Fujita
July 04, 2019
Technology
2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまで〜/The automation of CICD with AWS CodePipeline
Yuki Fujita
July 04, 2019
Other Decks in Technology
See All in Technology
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
160
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
190
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
200
形式手法を使って仕様をコーディングしよう
mikanichinose
0
170
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
320
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
320
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
130
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
210
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
170
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
770
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
2.9k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
23k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
YesSQL, Process and Tooling at Scale
rocio
174
15k
Six Lessons from altMBA
skipperchong
29
4.5k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Accessibility Awareness
sabderemane
1
230
RailsConf 2023
tenderlove
30
1.6k
Transcript
AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまで〜 2019/7/4 スペースマーケット 藤田勇希
2 自己紹介 • 藤田 勇希 • バックエンドエンジニア • 2018年11月にスペースマーケット入社 • 最近は1日1本映画見てる
• 好きな AWS サービス ◦ AWS Lambda ◦ AWS Dynamodb ◦ AWS Batch ◦ AWS CodePipeline
3 今日お話すること • AWS CodePiepeline とは? • CI/CD の基本 •
スペースマーケットの CI/CD の事例 ◦ CodePipeline 導入前の課題 ◦ CodePipeline 導入後に解決したこと • AWS CodePipeline 導入に取り組んで得たノウハウ ◦ 様々なシナリオへの応用 ◦ CI/CD の仕組みを横展開するためには
4 今日お話しないこと • CI/CD の細かいお話 • 発表に登場する AWS 各サービスの細かい説明 •
AWS CodePipeline の具体的な設定方法 ◦ スペースマーケットの tech ブログに書きました! ◦ 「AWS CodePipeline で CI/CD の仕組みを構築したお話」で検索!
5 AWS CodePipeline とは
6 AWS の公式説明より
7 もうちょっと詳しく AWS CodePipeline は完全マネージド型の継続的デリバリーサービスで、 素早く確実性のあるアプリケーションとインフラストラクチャのアップデートのための、パ イプラインのリリースを自動化します。 ー AWS 公式ドキュメントより
8 つまり AWS CodePipeline は • 面倒くさい部分は AWS が管理してくれて •
継続的にプロダクトの自動的なリリースを実現する CI/CD プロダクトなのです。 「自動化」・・・好きですよね?
9 CI/CD の基本
10 突然ですが・・・ Web サービスを作ったので 代わりにインターネット上に 公開してくれませんか? ソースコードは に push しておきましたので。
どうする?
11 一例 push pull 必要があれば Build Amazon EC2 Amazon S3
配置 配置 配置
12 場合によっては バグが見つかりました。 修正しましたので、再度 デプロイしてくれませんか? ソースコードは に push しておきましたので。 どうする?
13 やることは一緒(再掲) push pull 必要があれば Build Amazon EC2 Amazon S3
配置 配置 配置
14 更には 品質も大事なので テストコードを追加しました。 テストコードも実行してください。 ソースコードは例の通り に push しておきましたので。 どうする?
15 テストコードの実行が必要 push pull 必要があれば Build Amazon EC2 Amazon S3
配置 配置 配置 テストコード 実行 +
16 何回もやるとなる面倒くさい!
17 しかし、何回も繰り返す必要があるんです! • 開発の単位を小さくして早いペースで 実装 > テスト > デプロイ を繰り返す
◦ スピードは上がりそうだけど、品質の担保は必要 ◦ テストを繰り返し実行する必要がある ◦ デプロイ作業が増える • 実装 > テスト > デプロイ をできるだけ自動化したい! プロダクトの成長にスピードと品質の両立が求められる昨今(アジャイル開発) CI/CD
18 CI/CD のフェイズ概念
19 ざっくりと図で表すと
20 Continuous Integration(CI) Code > Build > Test > Code
> Build > Test ・・・ のサイクルを高速に回して開発スピードと品質の担保を実現するのが Continuous Integration(CI)
21 Continuous Delivery, Deploy(CD) CI に加えて変更内容をステージング環境などに自動的に反映して リリース可能な状態に持っていくのが Continuous Delivery(CD) CD
の中でも自動的に本番環境にリリースを行うのが Continuous Deploy(CD)
22 スペースマーケットの CI/CD 事例
23 スペースマーケットの CI/CD 概要
24 CodePipeline 導入前の課題 • Circle CI でビルド・テスト・デプロイのパイプラインを構築していた ◦ フロントエンド・バックエンドの複数のシステムが Circle
CI を使っていた ◦ ジョブの同時実行数の上限の関係で CI/CD の待ち時間が増えてきた • (AWS ECS へのデプロイも自前で作る必要があった) CI/CD は構築していたけど、デプロイされるまでの待ち時間が問題に・・ Job Job Job Job Job
25 新しい CI/CD への要求
26 CI/CD の開始の合図はリポジトリへの Push で! ビルドやデプロイの実行のために AWS のコンソールに入って・・・ みたいなことは避けたいな GitHub
への push は必ず行うから それ以降は自動がいいな CodePipeline の GitHub Webhook 連携
27 Webpack の実行や Docker のビルドも自動的にやって! jsトランスパイルや画像の最適化 は自動的にやってほしいし ECS で動かすために Docker
イメージの ビルドとかはいい感じに やっててほしいな CodeBuild の buildspec.yml で指定
28 テストコードの実行とかもできないとね! ローカルで単体テストコードを 実行することはできるけど QA用のカバレッジレポート等は リモート上で共有できるようにしたい CodeBuild の buildspec.yml で指定
29 ビルド・テストまで自動でやってくれるならば、デプロイも! CI を自動化してくれるならば CD もやってくれると嬉しいな ECS のタスクの置き換えを手動でやるの は事故が怖いしね CodePipeline×ECS
の シームレス連携
30 導入前の課題とCI/CD への要求を踏まえて 頑張ってみました
31 新しい CI/CD(再掲)
32 CodePipeline 導入後に解決したこと • CodePipeline による実行の時間だけで、他の要因はなくなった ◦ (before) 最大1時間近く待つ ->
(after) 安定して 20分ぐらい • AWS ECS へのデプロイも CodePipeline の標準の機能でカバーできる • CloudWatchEvent などの他の AWS サービスとの連携が楽なので夢が広がる ◦ デプロイ完了後の Slack への通知も設定 CI/CD が独立したので Circle CI の制限に引っかからなくなった
33 CI/CD を構築する側も使う側もハッピー!
34 AWS CodePipeline 導入に取り組んで得たノウハウ
35 設定次第で様々な自動化が可能 • 開発環境のアプリケーションを現在の本番環境に追従させる ◦ 毎日決まった時間に、各システムの master ブランチに対して CI/CD 回す
◦ デプロイ先を開発環境に向けた version の CodePipeline を作るだけ ◦ CloudWatchEvent で定期スケジュールで CodePipeline の実行設定可能 • バッチや migration 用のタスクの CI 構築 ◦ バッチや migration の実行内容の実装 > ビルド > テストだけ自動化 ◦ 実行は AWS Batch で設定 or 手動で実行などなど ◦ バッチや migration の内容の CI と、実行のサイクルを分離 カスタマイズ次第で色々なシナリオに対応できる
36 こんな使い方も
37 こんな使い方も Aの Pipeline Bの Pipeline Cの Pipeline Dの Pipeline
Eの Pipeline 複数システムの CI/CD を同時に並列で 実行する Pipeline を作る
38 CI/CD の仕組みを横展開するには • コード化すると設定の変更・変遷を Git 管理&レビューできる • 横展開する際もコードの一部の値を書き換えて実行するだけで、安全&確実 ◦
AWS CloudFormation ◦ Terraform(今回私はこちらを使って横展開しています) 構築した AWS CodePipeline の設定をコード化する 構文やルールを理解するために 多少の学習コスト入りますが・・・
39 ちなみに・・・ 前回私が投稿した tech ブログのエントリーより抜粋 Terraform を使ったコード化のお話も記事にしますので 興味のある方はチェックしてみてください!
40 CodePipeline で素敵な CI/CD ライフを!
41 ご清聴ありがとうございました! 「踏み込んだ CI/CD 論を語りたい」「今回使った AWS サービスの話などをもっと聞きたい」 という方はこの後の懇親会で是非お声掛けください!
None