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 を選択した。...

July 13, 2020

AWS CloudFront の Invalidation 完了を通知するブックマークレットをつくった

CloudFrontのInvalidation(Purge)には最大15分かかる. 開始してから完了を待つまでの間,終わったかどうかページをリロードしたり,パージを忘れてて気づいたら終わってたり. なんとなく気持ちが落ち着かないので,進捗をウォッチして完了を通知してくれるブックマークレットをつくった. 🚀 cloudfront-invalidate-checker CloudFrontのAPI使えばもっと賢くできるかもしれないが,とりあえずJSでさくっとつくった. ブックマークレット登録 Chromeの場合,cloudfront-invalidate-checker.min.jsの内容の前に javascript: を付けてブックマーク登録すればおk. 新規Invalidationを開始 ブックマークレットを実行してInvalidationIDを指定 Invalidation完了・通知 Invalidationが完了すると,Chromeから通知が来る. Chromeから離れて作業しててもポップアップで知らせてくれる. (※ AWSコンソール上で動くJSで実行しているのでタブを消すと通知されない) 社内では完了後,社内の音声流せるサーバにHTTPリクエスト送って,FFのファンファーレが流れるようにしている♪♪♪ (某T社に感化されてファンアーレにした) CloudFrontのInvalidation完了したらFFファンファーレ流れるようにしたら、結構いい感じだった♫♫♫ — TanakaWorld™ (@_tanakaworld) April 22, 2016 ...