ポータルサイトのインフラ構成 10 • 3つの ECS Service で成り⽴つ • 各 ECS Service の前段に ALB をはさむ • インフラコストは増えるが、Connection Draining など ALB の機能が使えるメリットを優先 Public subnet Private subnet ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server)
こうして、新しいデプロイパイプラインが⽣まれました 13 feature/xxx feature/yyy feature/zzz Developer Developer Developer JIRA xxx JIRA yyy JIRA zzz create create create ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 stg merge ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) Proxy Service (Nginx) Front Service (Next.js) ALB API Service (Apollo Server) リリース main merge ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) Proxy Service (Nginx) Front Service (Next.js) ALB API Service (Apollo Server) リリース ステージング環境 本番環境 ブランチが削除されたら 環境をすべて削除 Blue / Green Deployment
ECSのデプロイ⽅式 • 待機系をすべて更新し、疎通確認OKであればALBの向き先を切り替える 16 Public subnet Private subnet ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) CloudFormation ①待機系の更新 Main Listener Test Listener ②疎通確認 ③切り替え
Branch ⽣成をトリガーにテスト環境を⾃動構築 • Blue / Green Deployment で作成した CloudFormation を流⽤ • パラメータだけ変えれば動くようにしている 31 Public subnet Private subnet ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) CloudFormation
コスト削減策その1︓Feature は⽚⾯構成かつ最低スペックに • 最初は、Feature 環境も Blue / Green 両⾯構成 • コスト削減、リソース消費の抑制のため最⼩構成に変更 43 Public subnet Private subnet ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) CloudFormation
Blue / Green Deployment , Feature 環境⾃動⽣成パイプラインを紹介 46 feature/xxx feature/yyy feature/zzz Developer Developer Developer JIRA xxx JIRA yyy JIRA zzz create create create ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) 環境構築 stg merge ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) Proxy Service (Nginx) Front Service (Next.js) ALB API Service (Apollo Server) リリース main merge ALB Proxy Service (Nginx) ALB Front Service (Next.js) ALB API Service (Apollo Server) Proxy Service (Nginx) Front Service (Next.js) ALB API Service (Apollo Server) リリース ステージング環境 本番環境 ブランチが削除されたら 環境をすべて削除 Blue / Green Deployment Feature 環境⾃動⽣成 Blue / Green Deployment