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
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
170
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
280
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
110
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
310
Goでデータパイプラインを作ろう
sansantech
PRO
1
480
ラジオの科学
frievea
0
330
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
0
340
関東Kaggler会発表資料
takoi
1
250
ブラウザ研修 2026
recruitengineers
PRO
6
1.1k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
780
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Marketing to machines
jonoalderson
1
5.7k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
280
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
Code Review Best Practice
trishagee
74
20k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
490
The agentic SEO stack - context over prompts
schlessera
0
860
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
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