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
AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまて...
Search
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
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
330
EventBridge Connection
_kensh
5
680
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.5k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
360
Taking back control of your AI development
inesmontani
PRO
0
110
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
110
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
120
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.8k
Sync と Async ─ useSyncExternalStore を使う者の岐路
kakehashi
PRO
1
100
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
100
Agentic Web
dynamis
1
200
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
140
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Technical Leadership for Architectural Decision Making
baasie
3
400
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
The SEO Collaboration Effect
kristinabergwall1
1
480
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
The untapped power of vector embeddings
frankvandijk
2
1.7k
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