MAMORIO
MAMORIO、6年間使ったHerokuのインフラをECS初心者のCTOが3ヶ月でAWSへ移行しインフラコストを約40%削減
落とし物防止タグを手がけるMAMORIOは、Heroku Enterpriseの年間契約更新を前にコスト削減の限界を感じ、CTOが自らECS + Fargate構成を構築して2023年11月から約3ヶ月でAWSへ移行。AWSのコストは25%増えたが、インフラコストの半分を占めていたHerokuの費用がゼロになり、全体で約40%削減した。
課題
Herokuのコストダウンが限界に達し、Enterprise契約の更新期日が迫っていた
アプローチ
ECS初心者のCTOが負荷テスト・AWS技術相談・リハーサルを重ねてECS + Fargateへ移行
効果
Heroku費用がゼロになりインフラコストを約40%削減、停止1時間以内で切替完了
背景
MAMORIOは落とし物防止タグ事業を展開しており、6年間にわたりHerokuの東京リージョンでインフラを運用してきた。しかしHerokuのコストダウンにはすでに限界に達しており、Heroku Enterpriseの一年契約を更新する期日を前に、さらなるコスト削減のためAWSへの移行を検討することになった。移行を担ったCTOはiOSアプリとRailsとReactの開発が主な知識領域で、ECSについては初心者だった。それでも移行に踏み切れたのは、ChatGPTなどのLLMツールの登場によって自身の作業スピードと学習能力が向上し、実現可能性が高まったと判断したためである。移行先の構成は、アプリケーションをECS + Fargateで動かし、データベースはロックインを避けるためAuroraを採用せずPostgreSQLを選択、スケジューラーはECSのスケジュールタスク、監視はCloudWatch、キャッシュはElastiCacheとした。
移行のプロセス
移行作業は2023年11月に開始し、以下のステップで進めた。
- 負荷テスト: ユーザーのスマートフォンから送られるタグの発見情報のログがシステム全体の負荷の90%を占めて最も重かったため、これを対象に負荷テストを実施した
- 技術相談: Amazon社のエンジニアから無料でアドバイスを受けた
- リハーサル: Herokuのデータベースのバックアップをダウンロードしてから移行先のDBにリストアする手順を、不安がなくなるまで何度も繰り返した
- 本番切替: 深夜0時から開始し、Herokuのメンテナンスモードをオンにしてからバックアップ・リストアを実施し、最後にドメインの向き先を変更して完了
リハーサルの過程で、当初予定していたローカル経由の手順ではなく、Heroku内のインスタンスにダウンロードしてからAWSへ直接アップロードする方法に変えることで作業時間を7割以上削減できることが判明し、サービス停止時間を1時間以内に収める余裕が確保できた。移行は2024年2月5日に完了し、期間は約3ヶ月だった。
移行前後の変化
| 指標 | Before | After | |
|---|---|---|---|
| インフラコスト全体 | Heroku費用が全体の約半分 | 約40%削減 | |
| AWSのコスト | 移行前 | 25%増加 | |
| Herokuのコスト | インフラコストの半分 | ゼロ | |
| 移行期間 | 2023年11月開始 | 2024年2月5日完了(約3ヶ月) |
結果
移行によってAWSのコストが25%増加する代わりに、それまでインフラコストの半分を占めていたHerokuのコストがゼロになり、インフラコスト全体を約40%削減した。本番切替はサービス停止時間1時間以内で完了している。ECS初心者のCTOが1人で3ヶ月かけて完遂した点も特徴で、LLMツールによる学習・作業の効率化が移行の実現可能性を後押しした。
学び
著者は移行を検討している人に向けて、Amazon社の技術相談は必ず受けるべきであること、リハーサルは不安が全くなくなるまで何度も行うべきことを強調している。リハーサルを重ねたことでDB移行手順の改善点が見つかり、作業時間を7割以上削減できたことがその裏付けとなっている。
