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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
Azure Copilot Resiliency Agentをいろいろ試してみる
tomokusaba
0
140
GitHub Agentic Workflows を触ってみる
htkym
2
880
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
190
企業の現実世界をグラフで写し取る
sansantech
PRO
0
210
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
250
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
170
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
120
Incremental HTTP
kazuho
4
1.5k
Meet AgentCore Identity Consent Portal
hironobuiga
2
140
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
240
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
770
Terraformを用いたJamf Pro構成のIaC, GitOps化への挑戦
yukun
0
120
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
540
YesSQL, Process and Tooling at Scale
rocio
174
15k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Being A Developer After 40
akosma
91
590k
Accessibility Awareness
sabderemane
1
220
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
The Curse of the Amulet
leimatthew05
3
15k
Thoughts on Productivity
jonyablonski
76
5.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
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