360°パノラマVR「スペースリー」WebアプリケーションのECS移行

株式会社スペースリー / K.Kuge
チームリーダー / インフラエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 |
---|---|
11名〜50名 | 2024年6月 |
ツールの利用規模 | 11名〜50名 |
---|---|
ツールの利用開始時期 | 2024年6月 |
アーキテクチャ

導入の背景・解決したかった問題
導入背景
ツール導入前の課題
Rails アプリケーションを EC2 上で運用していたため、高負荷時にスケールアウトが必要な場合は手動対応が必要でした。
その結果、作業に手間がかかり、対応に時間を要することがありました。
また、Ruby のバージョンアップや各種ライブラリのインストールの度に、AMI の更新と EC2 への Ansible の適用が必要で運用コストが大きい状況でした。
どのような状態を目指していたか
負荷に応じた自動的なスケーリングを実現し、柔軟なリソース管理を行うこと。
Ruby のバージョンアップや各種ライブラリのインストールが、Dockerfile の変更のみで完結し、運用の手間を最小限にすること。
比較検討したサービス
- Amazon Elastic Kubernetes Service
比較した軸
- 運用のしやすさ
- 学習コストの低さ
- マネージドサービスとして提供される範囲の広さ
選定理由
既に画像処理バッチの実行環境として ECS を利用していたため、社内に知見があり、スムーズな導入と運用が期待できたことから ECS を選定しました。
導入の成果
改善したかった課題はどれくらい解決されたか
手動で行っていたスケールイン・スケールアウトの作業は、ECS のオートスケーリング導入により自動化されました。
スケジュールベースのスケーリングにより、夜間の余剰リソースを削減することができました。
また、Ruby のバージョンアップや各種ライブラリのインストールは、Dockerfile の更新とコンテナイメージのビルドのみで完結できるようになり、AMI の更新や Ansible の適用作業が不要になりました。
これにより、運用負荷が大幅に軽減され、環境の変更にも迅速に対応できるようになりました。
どのような成果が得られたか
EC2 時代と比較して、1日あたり約 $17 のコスト削減が実現できました。
Datadog 上でもスケーリングによるタスク数の変化を確認できるようにして、効果を定量的に把握できています。
導入時の苦労・悩み
Sidekiq コンテナのスケーリングに適した標準メトリクスがなかったため、Redis のキューサイズを AWS Lambda で取得し、CloudWatch のカスタムメトリクスとして登録する仕組みを構築する必要がありました。
導入に向けた社内への説明
上長・チームへの説明
下記のようなメリットがあることを説明しました
- 高負荷時には自動でスケールアウトすることで、パフォーマンス低下やユーザー影響を防ぐことができる。
- 夜間など負荷の少ない時間帯はスケールインすることで、リソース使用量を抑え、コストを削減できる。
- Fargate を利用することで EC2 のインスタンス管理が不要となり、運用負荷を軽減できる。
- EC2 の OS として使用していた Amazon Linux 2 が EOL を迎えるため、将来的なセキュリティリスクや保守コストの増加を回避できる。
活用方法
よく使う機能
- サービスのオートスケーリング
- スケーリングポリシー
- スケジュールされたアクション
- ECS Exec
ツールの良い点
- 運用コストが低い
- スケーリングやタスクの障害時に、ECS が自動でタスクを再配置するセルフヒーリング機能があり安定性がある
- デプロイサーキットブレーカーにより、タスクのデプロイ失敗時には自動的にロールバックが行われるため、異常な状態がサービス全体に影響を及ぼす前に対処できる
ツールの課題点
- ECS タスクの stopTimeout の最大値が 120 秒に制限されており、長時間実行する処理が途中で強制終了されるリスクがある
今後の展望
Fargate Spot を導入し、さらにコスト効率の良い構成にしていきたいと考えています。

株式会社スペースリー / K.Kuge
チームリーダー / インフラエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名

株式会社スペースリー / K.Kuge
チームリーダー / インフラエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名