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
16
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
300
フロントエンドのCIについて/front end ci tips
tom256
0
81
レガシーな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
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Cult of Friendly URLs
andyhume
78
6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
What's in a price? How to price your products and services
michaelherold
243
12k
Writing Fast Ruby
sferik
627
61k
Speed Design
sergeychernyshev
25
620
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Become a Pro
speakerdeck
PRO
25
5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Building Applications with DynamoDB
mza
90
6.1k
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パイプラインを整理するとレバレ ッジが効く 改善の方向性は見えていたが優先できなかった
おわり