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
14
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
290
フロントエンドのCIについて/front end ci tips
tom256
0
80
レガシーな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
120
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Visualization
eitanlees
144
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
What's in a price? How to price your products and services
michaelherold
243
12k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
It's Worth the Effort
3n
183
27k
Why Our Code Smells
bkeepers
PRO
334
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
107
49k
Building Adaptive Systems
keathley
38
2.2k
Producing Creativity
orderedlist
PRO
341
39k
Designing for Performance
lara
604
68k
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パイプラインを整理するとレバレ ッジが効く 改善の方向性は見えていたが優先できなかった
おわり