ロゴ:株式会社テクノスフィア
NEW 採用情報
EC・SaaS企業 / クラウドコスト最適化

AWS EC2常時稼働を
サーバーレス化して
ランニングコスト 72% 削減

72%月額クラウド費用削減
0常時稼働サーバーゼロへ
3ヶ月移行期間
99.95%可用性向上

プロジェクト概要

アパレル向けBtoB受発注SaaSを運営する企業様。AWS上にEC2インスタンス8台を常時稼働させてAPIサーバー・バッチ処理・管理画面を運用していましたが、月額クラウド費用が増加の一途をたどり「トラフィックは深夜ほぼゼロなのにずっと課金されている」という課題が浮上しました。

分析したところ、リクエスト数のピーク(平日昼間)と閑散時(深夜・休日)の差が約50倍あることが判明。常時稼働型のEC2は閑散時にリソースを無駄に消費していました。テクノスフィアはアーキテクチャを全面的にサーバーレス構成へ再設計し、トラフィックに完全連動する従量課金に切り替えることでコスト問題を根本解決しました。

移行前の問題:なぜコストが高いのか

⚠ BEFORE(移行前の構成と問題)
  • EC2(t3.large × 4台)でAPIサーバーを常時稼働
  • EC2(t3.medium × 2台)でバッチ処理サーバーを常時稼働
  • EC2(t3.small × 2台)で管理画面サーバーを常時稼働
  • RDS MySQL(db.r5.large)を常時稼働
  • 深夜・休日はトラフィックがほぼゼロだが課金は同額
  • スパイク時はスケールアップが間に合わず503エラー発生
  • 月額費用:約42万円(EC2+RDS+ALB等)
✅ AFTER(サーバーレス化後)
  • APIサーバー → AWS Lambda + API Gateway
  • バッチ処理 → AWS Lambda + EventBridge(スケジュール)
  • 管理画面 → S3 + CloudFront(静的配信)
  • DB → DynamoDB(オンデマンド)+ Aurora Serverless v2
  • 非同期処理 → SQS + Lambda
  • 使った分だけ課金・深夜はほぼ0円
  • 月額費用:約12万円(72%削減)

サーバーレスアーキテクチャ構成図

SERVERLESS ARCHITECTURE ON AWS

▼ APIリクエストフロー

📱
クライアント
ブラウザ / アプリ
CloudFront
CDN + WAF
API Gateway
REST API v2
λ
Lambda
Node.js 20.x
DynamoDB
オンデマンド

▼ 管理画面(静的配信)

🖥️
管理者
ブラウザ
CloudFront
OAC設定済み
S3
静的ファイル
API Gateway
管理API
λ
Lambda
管理用関数

▼ バッチ・非同期処理

EventBridge
cron スケジュール
λ
Lambda
バッチ関数
SQS
非同期キュー
λ
Lambda
ワーカー関数
Aurora
Serverless v2
集計・レポート用

移行前後のコスト内訳比較

コンポーネント 移行前(EC2構成) 移行後(サーバーレス) 削減
APIサーバー EC2 t3.large × 4台
約158,000円/月
Lambda + API Gateway
約18,000円/月
▼ 89%
バッチ処理 EC2 t3.medium × 2台
約36,000円/月
Lambda + EventBridge
約2,000円/月
▼ 94%
管理画面 EC2 t3.small × 2台
約16,000円/月
S3 + CloudFront
約1,500円/月
▼ 91%
データベース RDS MySQL db.r5.large
約88,000円/月
DynamoDB + Aurora Serverless v2
約42,000円/月
▼ 52%
その他(ALB・NAT等) 約22,000円/月 約6,000円/月 ▼ 73%
合計 約420,000円/月 約117,000円/月 ▼ 72%
年間▼363万円

3ヶ月移行タイムライン

Month 1
現状調査・コスト分析・設計

AWSコスト分析(Cost Explorer)でリソース別コスト内訳を可視化。トラフィックパターン分析(CloudWatch)でピーク・閑散の差を定量化。サーバーレス化可能箇所の特定と優先順位づけ。Lambda/DynamoのABC試算。新アーキテクチャ設計・APIインターフェース確定。

Month 2
Lambda関数実装・ステージング環境テスト

APIサーバーのNode.js Expressロジックを Lambda関数に分割移植(約40関数)。Serverless Framework でデプロイ自動化(IaC化)。DynamoDB テーブル設計・RDSからのデータ移行。管理画面をReactで再構築しS3静的配信へ切り替え。ステージング環境で全APIの動作検証・負荷テスト。

Month 3
段階的本番切り替え・EC2撤去

API GatewayのRoute weighting機能で10%→50%→100%と段階的にLambdaへトラフィック移行。CloudWatchアラームでエラー率を監視しながら進行。全切り替え完了後、EC2インスタンスを順次停止・削除。Aurora Serverless v2 への最終データ移行。コスト確認・チューニング。

移行の技術的ポイント

Lambdaコールドスタート対策

サーバーレスの課題として挙げられる「コールドスタート(初回起動遅延)」に対し、以下の対策を実施しました。

  • Provisioned Concurrency:常に一定数のLambdaを暖機状態に保ち、ユーザーが体感する初回遅延を解消。コスト増は最小限に抑えつつ、ユーザー体験を維持。
  • 関数の軽量化:不要な依存パッケージを削除し、Lambda Layerで共通ライブラリを分離。デプロイパッケージを最小化してコールドスタート時間を短縮。
  • 接続プーリング:Aurora Serverless v2へのDB接続はRDS Proxyを経由し、Lambda の大量並列起動時のDB接続枯渇を防止。

RDS → DynamoDB データモデル変換

RDSの正規化されたリレーショナルスキーマをDynamoDBのシングルテーブル設計に変換しました。主要なアクセスパターンを洗い出し、Partition Key / Sort Key を最適設計。N+1問題を発生させないDynamoDBらしいデータ取得パターンに変更することで、RDS比でクエリレスポンスを平均60%高速化しました。

Serverless Framework による IaC 化

全インフラをServerless Frameworkのyamlで定義し、sls deploy一発で全環境(dev/stg/prod)に再現可能な状態にしました。Lambda関数・API Gateway設定・DynamoDBテーブル・IAMロール・CloudWatch設定がすべてコードで管理されているため、設定ミスによる障害リスクを大幅に低減しています。

サーバーレスが向いているケース・向いていないケース

✅ サーバーレスが向いているケース
  • リクエスト数に波がある(深夜少・昼多など)
  • バッチ処理が定時実行中心
  • マイクロサービス構成にできるAPI
  • 静的コンテンツ主体の管理画面・フロントエンド
  • 非同期メッセージ処理・キュー処理
  • イベント駆動(ファイルアップロード→処理など)
  • スタートアップ・低コスト重視
⚠ サーバーレスが向いていないケース
  • 常時高負荷・リクエストが均一に多い
  • 処理時間が15分を超える(Lambda上限)
  • メモリを大量に使う重いバッチ処理
  • ステートフルな接続が必要(WebSocket 常時接続等)
  • 既存コードが大規模モノリスで分割が困難
  • 厳格な実行環境・OS設定が必要なシステム

※ テクノスフィアでは現状分析を行い、サーバーレスが最適かどうかを含めて中立的にご提案します。向いていないケースでは、コンテナ化(ECS Fargate)やスポットインスタンス活用など別のコスト最適化手法をご提案します。

移行結果・成果

72%月額クラウド費用削減
(42万円→12万円)
年間363万円コスト削減効果
(移行費用は約4ヶ月で回収)
60%APIレスポンス高速化
(DynamoDB最適化)
0常時稼働サーバーゼロ
(運用工数も大幅削減)

「クラウド代が高すぎる」を解決します。サーバーレス化・コンテナ最適化はテクノスフィアへ。