Proff の本番環境を刷新した(ECS/Fargate)
Proff(プロフ)の本番環境を刷新した。2018 年から約 2 年ほど運用してきて初の大規模インフラ改修となった。 TL;DR; EC2 → ECS(Fargate) に変更 静的アセットを S3 から配信するように変更 CircleCI Orbs を使用し Docker ビルド Terraform で構成管理 サービス構成 概要 既存の本番環境とは別に VPC を作成し、関連する AWS サービスもほぼ全部新規に作成した(S3 以外)。というのも、まず新構成の開発環境を構築して色々と検証をした上で、まったく同じ構成で本番環境を構築したかったから。Terraform の workspace 切り替えで検証済みの構成と同等の設定で本番環境も作成した。CPU や Memory などスペックは本番向けに増強している。 主な変更点は下記の通り。 Before After ELB ALB (Application Load Balancer) に変更 EC2 (Nginx, RoR, Node.js) ECS + Fargate (RoR, Node.js) に変更 静的コンテンツを S3 から配信 (asset_sync) | ECR (Docker Registry) | System Manager (ECS で使う秘匿情報を Parameter Store で保存) Capistrano | CircleCI で Docker ビルド (Orb を使用: circleci/aws-ecr, circleci/aws-ecs) サービス選定 一番の目的は本番環境をコンテナ化することだった。IoC (Infrastructure as Code) したい、環境差分をなくしたい (ローカル, 本番, CI)、スケールを容易にしたい、というのが主な狙い。コンテナ化しない理由は逆になく ECS を選択した。...