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
PipeCDを導入してリリースフローを改善した話/How to improve release...
Search
tom-256
October 03, 2024
0
18
PipeCDを導入してリリースフローを改善した話/How to improve release workflow by pipecd
https://livesense.connpass.com/event/328856/
tom-256
October 03, 2024
Tweet
Share
More Decks by tom-256
See All by tom-256
サーバサイドTypeScriptモノレポを半年運用した結果/How to maintain server side typescript monorepo
tom256
0
320
フロントエンドのCIについて/front end ci tips
tom256
0
83
レガシーなAnsibleを改善していくための方針/How to improve the legacy Ansible
tom256
10
2.7k
Slack + Cloud Functionsで迅速な障害の初動対応をする/incident management by slack
tom256
0
140
AWSで実現するChatOps〜サーバレスでBlue/Greenデプロイする仕組みと工夫点〜 /chatops deployment
tom256
0
390
GHEとAWSを使用したデプロイ/リリースフローの紹介/introduction-deployflow-aws-and-ghe
tom256
0
130
Featured
See All Featured
Facilitating Awesome Meetings
lara
51
6.2k
For a Future-Friendly Web
brad_frost
176
9.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
GraphQLとの向き合い方2022年版
quramy
44
13k
Docker and Python
trallard
43
3.2k
Rails Girls Zürich Keynote
gr2m
94
13k
A Tale of Four Properties
chriscoyier
157
23k
Transcript
PipeCDを導入してリリースフローを改 善した話 @tom-256
自己紹介 @tom-256 インフラ・SRE
最近やってきたこと 本業 TypeScript monorepoのCI/CD構築 PipeCD導入 Terraform monorepoのCI/CD構築 Terraform monorepoのAtlantis導入 ArgoCD導入
Renovate導入
業務委託 Terraform monorepoのAtlantis導入 CI/CD改善 CDリポジトリ分離 ecspresso導入 Renovate導入
今日話すこと PipeCDを使ってリリースフロー改善を実施 8ステップから1ステップに 作業時間を20分から3分に
背景 ECS CI...GitHubActions CD...Terraform
課題 作業が複雑でリリースに時間がかかる Terraformによるデプロイのため自動化できない アプリケーションによってワークフローが異なっている
やったこと
PipeCDの導入 PipeCD Pull型のデプロイツール ECS, EKS, Lambda, Terraformなどに対応 ECSの場合下記で構成 PipeCDのアプリケーション定義(app.pipecd.yaml) ECSサービス定義
ECSタスク定義
ディレクトリ設計 aws-account-id/ecs-cluster/ecs-service 将来的に他のリソース(Lambdaとか)を考慮する必要 全体像 PipeCDリポジトリ アプリケーションリポジトリA アプリケーションリポジトリB
移行方法検討移行 Deployment ControllerがEXTERNALになるのでサービスを作り直 す必要があった EXTERNALは複数ターゲットグループが紐づけられないので設計 を変更 移行作業はALBの加重ターゲットグループでリクエスト切り替え チームと連携しながら移行実施
CI連携 pipe-cd/actions-plan-preview
pipe-cd/actions-event-register PipeCDのアプリケーション定義にどのイベントを受け取ってど こを更新するか定義 GitHubActionsでどのイベントをどの値で発行するか定義 Git commitしてくれる dev, stg環境のタスク定義のイメージ更新に利用
実際のワークフロー dev環境 mainブランチマージでデプロイ
stg環境 Gitタグ作成でデプロイ
prd環境 リリース作成でPipeCDリポジトリにPR作成 PRマージでデプロイ
他の工夫点 リリース時に必要なDB系のバッチを自動化 ECRはクロスアカウントアクセスに変更 イメージビルドでRegistry cache導入
まとめ PipeCDを導入してリリースワークフローを改善した Pull型はCIの記述量が減る いくつか考慮点があるので注意 DeploymentControllerが変更 テンプレート機能がない
課題:作業が複雑でリリースに時間がかかる 冪等性を考慮して不要な判断を削る 通知を整備して確認作業を削る Repository Dispatchを使ってアプリケーションリポジトリと連携す る
課題:Terraformによるデプロイのため自動化できない Pull型のデプロイを利用することで不要な考慮点が減った 課題:アプリケーションによってワークフローが異なっている デプロイ方法を統一することでコンテキストスイッチを減らした
リリース作業は毎回やるのでCI/CDパイプラインを整理するとレバレ ッジが効く 改善の方向性は見えていたが優先できなかった
おわり