Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PipeCDを導入してリリースフローを改 善した話 @tom-256
Slide 2
Slide 2 text
自己紹介 @tom-256 インフラ・SRE
Slide 3
Slide 3 text
最近やってきたこと 本業 TypeScript monorepoのCI/CD構築 PipeCD導入 Terraform monorepoのCI/CD構築 Terraform monorepoのAtlantis導入 ArgoCD導入 Renovate導入
Slide 4
Slide 4 text
業務委託 Terraform monorepoのAtlantis導入 CI/CD改善 CDリポジトリ分離 ecspresso導入 Renovate導入
Slide 5
Slide 5 text
今日話すこと PipeCDを使ってリリースフロー改善を実施 8ステップから1ステップに 作業時間を20分から3分に
Slide 6
Slide 6 text
背景 ECS CI...GitHubActions CD...Terraform
Slide 7
Slide 7 text
課題 作業が複雑でリリースに時間がかかる Terraformによるデプロイのため自動化できない アプリケーションによってワークフローが異なっている
Slide 8
Slide 8 text
やったこと
Slide 9
Slide 9 text
PipeCDの導入 PipeCD Pull型のデプロイツール ECS, EKS, Lambda, Terraformなどに対応 ECSの場合下記で構成 PipeCDのアプリケーション定義(app.pipecd.yaml) ECSサービス定義 ECSタスク定義
Slide 10
Slide 10 text
ディレクトリ設計 aws-account-id/ecs-cluster/ecs-service 将来的に他のリソース(Lambdaとか)を考慮する必要 全体像 PipeCDリポジトリ アプリケーションリポジトリA アプリケーションリポジトリB
Slide 11
Slide 11 text
移行方法検討移行 Deployment ControllerがEXTERNALになるのでサービスを作り直 す必要があった EXTERNALは複数ターゲットグループが紐づけられないので設計 を変更 移行作業はALBの加重ターゲットグループでリクエスト切り替え チームと連携しながら移行実施
Slide 12
Slide 12 text
CI連携 pipe-cd/actions-plan-preview
Slide 13
Slide 13 text
pipe-cd/actions-event-register PipeCDのアプリケーション定義にどのイベントを受け取ってど こを更新するか定義 GitHubActionsでどのイベントをどの値で発行するか定義 Git commitしてくれる dev, stg環境のタスク定義のイメージ更新に利用
Slide 14
Slide 14 text
実際のワークフロー dev環境 mainブランチマージでデプロイ
Slide 15
Slide 15 text
stg環境 Gitタグ作成でデプロイ
Slide 16
Slide 16 text
prd環境 リリース作成でPipeCDリポジトリにPR作成 PRマージでデプロイ
Slide 17
Slide 17 text
他の工夫点 リリース時に必要なDB系のバッチを自動化 ECRはクロスアカウントアクセスに変更 イメージビルドでRegistry cache導入
Slide 18
Slide 18 text
まとめ PipeCDを導入してリリースワークフローを改善した Pull型はCIの記述量が減る いくつか考慮点があるので注意 DeploymentControllerが変更 テンプレート機能がない
Slide 19
Slide 19 text
課題:作業が複雑でリリースに時間がかかる 冪等性を考慮して不要な判断を削る 通知を整備して確認作業を削る Repository Dispatchを使ってアプリケーションリポジトリと連携す る
Slide 20
Slide 20 text
課題:Terraformによるデプロイのため自動化できない Pull型のデプロイを利用することで不要な考慮点が減った 課題:アプリケーションによってワークフローが異なっている デプロイ方法を統一することでコンテキストスイッチを減らした
Slide 21
Slide 21 text
リリース作業は毎回やるのでCI/CDパイプラインを整理するとレバレ ッジが効く 改善の方向性は見えていたが優先できなかった
Slide 22
Slide 22 text
おわり