AWS移行を終えてひと安心していた矢先、マネジメントコンソールの請求画面を開いてフリーズしました。
本番環境:月額 約3万円
検証環境:月額 約4万5千円
……え?逆じゃない?
私が所属する情シス部門では、昨年度から業務システムをオンプレミス(社内サーバー)からAWSへ移行しました。本番環境と検証環境をそれぞれ構築して、「さあ運用開始!」となったタイミングでこの事態に気づいたのです。
「AWSはコスト削減になる」と社内で説明して移行を進めた手前、このままでは立場がありません。原因を徹底的に調べ、3つの対策を打った結果、検証環境のコストを本番環境以下に抑えることができました。同じような状況に悩んでいる情シス担当者の方に向けて、実体験をそのままお伝えします。
なぜ検証環境がコスト過多になりやすいのか
検証環境は「後回し」にされがちな、コストの伏魔殿です。
本番環境は障害が起きたら大変なので、みんな真剣に構成を考えます。冗長化の必要性・インスタンスのスペック・バックアップ……細かく精査します。ところが検証環境はどうでしょう?「本番と同じ構成で作っておけばいいか」という空気が漂いがちです。その結果、本番環境と同等のスペック・構成がそのままコピーされ、誰も最適化しないまま動き続けることになります。
AWS移行直後は特に要注意です。オンプレの感覚のまま「サーバーは常時稼働が当たり前」と思い込んでいると、AWSの従量課金の特性を活かせず、無駄なコストが積み上がっていきます。
私の検証環境が高くなった原因は3つだった
原因① EC2のインスタンスタイプが本番と同じだった
EC2(Amazon Elastic Compute Cloud)とは、AWSが提供する仮想サーバーのことです。私の環境では、本番・検証ともに m5.xlarge(vCPU 4個・メモリ16GB)を使っていました。本番環境ではこのスペックが必要ですが、検証環境でそこまでのパワーは必要ありません。スペックの選定は「本番の縮小版」ではなく、「検証に必要な最小限」で考えるべきでした。
原因② マルチAZ構成のまま使っていた
マルチAZ(Multi-AZ)とは、異なるデータセンターに同じシステムを冗長化して配置する構成です。本番環境では非常に重要な設定ですが、検証環境にここまでの可用性は必要ありません。にもかかわらず、RDS(AWSのデータベースサービス)でマルチAZ構成を有効にしたままでした。これだけでコストがほぼ2倍になります。本番と同じ「安心感」を検証環境にも求めてしまっていたのが原因でした。
原因③ 24時間365日、ずっと稼働していた
オンプレのサーバーは電源を入れたら基本的に動かし続けます。その感覚のままAWSを使っていたため、検証環境のEC2とRDSは土日も夜中も動き続けていました。1ヶ月720時間のうち業務時間外はおよそ500時間以上。全体の70%近くが「誰も使っていない稼働時間」になっていたのです。AWSの最大のメリットは「使った分だけ払う」こと。その利点をまったく活かせていませんでした。
実際にやった3つのコスト削減策
対策① EC2インスタンスタイプをダウンサイジング
m5.xlarge → t3.medium(vCPU 2個・メモリ4GB)に変更しました。t3シリーズは「バースト可能タイプ」と呼ばれ、普段は低スペックで動きつつ、負荷が高い瞬間だけCPUパワーを一時的に上げることができます。検証用途には十分な性能で、料金は約1/4程度になります。変更手順はEC2インスタンスを停止 → インスタンスタイプを変更 → 再起動の3ステップで完了します。「本番と同じスペックでないと不安」は思い込み。検証なら最小限で十分です。
対策② RDSのマルチAZ構成をシングルAZに変更
RDSの設定画面から「マルチAZ配置」を無効にするだけで完了です。この変更を行うと一時的にRDSが再起動するため、業務終了後に実施することをおすすめします。費用は変更直後から単純に半減します。冗長化は必要な場所にだけかける。検証環境は「止まっても困らない」が正解です。
対策③ EventBridge+Lambdaで夜間・週末を自動停止
これが最もインパクトのある対策でした。Amazon EventBridgeでスケジュールを設定し、AWS Lambdaを使ってEC2とRDSを自動で起動・停止するようにしました。
| 時間 | 動作 |
|---|---|
| 平日 8:00 | EC2・RDS 起動 |
| 平日 22:00 | EC2・RDS 停止 |
| 土曜 0:00 | EC2・RDS 停止(念のため) |
| 月曜 7:50 | EC2・RDS 起動 |
これにより、稼働時間は月720時間 → 約220時間に削減。コストも約70%減を実現しました。
Cost Explorerで今すぐ確認できること
コスト削減の第一歩は「何にお金がかかっているか把握すること」です。AWSのCost Explorerを使えば、サービス別・リソース別にコストを可視化できます。
- AWSマネジメントコンソールにログイン
- 画面右上のアカウント名をクリック →「請求とコスト管理」を選択
- 左メニューの「Cost Explorer」を開く
- 「サービス別」でEC2・RDSの費用を確認
- 「リソース別」に掘り下げて、どの環境が高いか特定する
「なんとなく高い」を「なぜ高いか」に変えるだけで、打ち手が見えてきます。
まとめ
| 原因 | 対策 | 効果 |
|---|---|---|
| インスタンスタイプが大きすぎた | t3.mediumにダウンサイジング | 約75%減 |
| マルチAZ構成が不要だった | シングルAZに変更 | 約50%減 |
| 24時間稼働していた | 夜間・週末を自動停止 | 約70%減 |
AWSはオンプレと違い、「設定を見直すだけでコストが下がる」というのが大きな強みです。最初から完璧な構成を作るより、まず動かして改善していく。その繰り返しがAWSを使いこなす近道だと実感しました。もし「うちも検証環境のコストが妙に高い……」と感じている方がいれば、ぜひCost Explorerを開いてみてください。
関連記事:LambdaでEC2・RDS夜間停止自動化|AWSコスト削減実装ガイド
関連記事:Aurora Serverlessで自動スケーリング|予測不能な負荷への対応方法
