相談する

EC2からECSへ サービスを​止めずに移す

Status / 状況 完了

不動産ポータルサイトの​基盤をEC2からECSへ​移行しました。​手作業だったOSの​更新と​スケーリングを​自動にし、​問題が​起きた​ときに​元に​戻せる​デプロイに​変えています。

業界
不動産
期間
2024年​(3か月)
役割
プロジェクト管理 / インフラ設計 / 移行計画 / 実装 / 運用改善

これまで 手作業で更新するEC2 手作業で更新するEC2

から

これから 自動で入れ替わるECS

Fig.​ ​/​ ​デプロイに​かかる時間 これまで これから
Fig. / ソースの変更から本番の反映まで 完了
  1. 担当者

    ソースを変更する (完了)

    ビルド・​テスト・​デプロイが​自動で進む

  2. 自動

    ビルドとテスト (完了)

    同じ​コンテナイメージを​すべての​環境で使う

  3. 人

    承認する (完了)

    本番に​反映する前に必要

  4. 自動

    デプロイする (完了)

    新しい​タスクの​正常を​確認してから​古いタスクを止める

概要

これまで

EC2で​動く​サービスでは、​担当者がOSの​更新と​セキュリティパッチの​適用を​手作業で​進めていました。​この​作業に​毎月数十時間かかっていました。​運用は​特定の​担当者に​頼っていて、​その​担当者が​いないと​対応が​難しい​状態でした。​リリースは​手作業による​ファイルアップロード方式だった​ため、​操作ミスによる​サービス停止の​リスクを​抱えていました。

これから

CodeCiaoは​基盤をECSに​移し、​すべての​環境で​同じ​コンテナイメージを​使うようにしました。​担当者が​ソースを​変更すると、​ビルド・​テスト・​デプロイが​自動で​進みます。

コンテナイメージの​脆弱性と​設定の​誤りは、​リリースの​前に​自動で​検査します。​本番に​反映する​前には、​人の​承認が​必要です。

  • デプロイに​かかる​時間は、​30分から5分に​短くなりました
  • 運用の​作業は、​月に​約40時間減りました
  • アクセスが​集中した​ときは、​自動の​スケーリングで​対応します

進め方

  1. サービスを止めずに入れ替える

    通常の​更新では、​新しい​タスクが​起動して​正常だと​確認できてから、​古いタスクを​止めます。​大きな​更新では、​新旧の​タスクを​並べて​動かし、​安定を​確かめてから​切り替えます。​問題が​起きた​場合は、​すぐに​元の​状態へ​戻せます。

  2. 小さく試してから段階的に移す

    CodeCiaoは​まず​小さな​検証環境で、​動作・​デプロイの​方式・​ヘルスチェックの​設定を​確かめました。​次に​社内向けの​環境で​並行して​動かし、​設定を​調整してから​本番を​切り替えました。

  3. 移行の影響を文書にする

    移行で​変わる​点と、​利用者に​知らせる​内容を​文書に​まとめました。​その​文書を​もとに、​営業部門と​一緒に​周知の​計画を​立てました。

共通のつくり方を読む

技術

  • AWS
  • ECS
  • ECR
  • Docker
  • CodePipeline
  • CodeBuild
  • CodeDeploy

Contact

まずは Ciaoから

「手作業で​更新するEC2」と​同じ​状況の​方は、​現在の​やり方を​教えてください。