使用した分だけ支払い、使用しない時はゼロにスケールし、サーバーの管理を完全にやめます。ただし、経済的メリットがなくなる時を把握しておく必要があります。

あなたのアプリケーションのトラフィックは変動します。夜間は静かで、営業時間中は急増し、マーケティングキャンペーンや季節イベントによって予測不能なバーストが発生します。あなたは70%の時間アイドル状態のサーバーに料金を払っています。あるいは、新しい製品を構築中で、製品と市場の適合性を検証する前に、インフラプロビジョニング、キャパシティプランニング、オンコールローテーションに投資したくない場合です。Serverlessは、リクエストごとの課金、自動スケーリング、ゼロインフラ管理を提供しますが、それはワークロードの特性が適合する場合に限ります。
Explore more design patterns and system architectures
serverless-firstは、15分を超える長時間実行プロセス、永続的なWebSocket接続を必要とするワークロード、予約容量が安価な一貫した高スループットトラフィックを持つアプリケーション、および低レベルのOSまたはネットワーク構成を必要とするシステムには不向きです。MicrocosmWorksは、アーキテクチャ設計中にこれらの制約に対して各ワークロードを評価し、serverlessがAPIエンドポイントとイベント処理を扱い、コンテナまたはVMが永続的なコンピューティングを必要とするワークロードを実行するハイブリッドアプローチを推奨しています。この実用的なアプローチにより、適合しないすべてのコンポーネントをserverlessに無理やり押し込むという一般的な間違いを避けることができます。
MicrocosmWorks は、重要なエンドポイントに対して provisioned concurrency を使用し、初期化時間を短縮するために関数バンドルの最適化を行い、Java ワークロード向けに Lambda SnapStart を戦略的に活用することで、Lambda cold starts を秒単位からミリ秒単位に短縮しています。また、レイテンシーに敏感なパスでは、Node.js や Python のような軽量ランタイムを最小限の依存関係で使用するようにアプリケーションを設計しており、provisioned concurrency がなくても cold starts を 200ms 未満に抑えています。このレイテンシーでも許容できないエンドポイントについては、Lambda@Edge または CloudFront Functions を使用して 10ms 未満の応答を実現しています。
MicrocosmWorks は、SST (Serverless Stack)、LocalStack、あるいは Serverless Framework のオフラインモードのようなツールを使用して、開発者のマシン上でクラウドサービスをほぼ本番環境に近い忠実度でエミュレートするローカル開発環境を構築します。私たちは、プルリクエストごとに起動される一時的なクラウド環境に対して実行される統合テストスイートを実装しており、開発者はステージング環境を共有することなく、実際の AWS サービスに対して検証できます。この二重のアプローチは、開発のための高速なローカルイテレーションループを提供するとともに、コードが本番環境に到達する前にクラウド固有の問題を捕捉します。
MicrocosmWorksは、serverlessが、可変的または急増するトラフィックパターンを持つアプリケーションにとって劇的に安価であることを発見しました。多くの場合、同等の常時稼働のcontainer deploymentsと比較して70-90%のコスト削減が可能です。しかし、月あたり1000万〜2000万以上の持続的なinvocationsのスループットでは、そのコストメリットは縮小します。当社はarchitecture design中に、お客様固有のトラフィックパターンに合わせて、serverlessのper-invocation料金と予約されたcontainer capacityを比較するコスト予測モデルを構築します。これには、API Gatewayの料金やデータ転送費用といった隠れたコストも含まれます。当社の最適化サービスは、1時間あたり$10〜$35のコンサルティング料金でご利用いただけ、定期的にserverlessの請求書をレビューし、過剰にプロビジョニングされたメモリ、過度な関数実行時間、または不要なAPI Gatewayの使用による無駄を特定します。
MicrocosmWorks は、Lambda 関数とデータベースの間に永続的な層としてデプロイされる Amazon RDS Proxy や PgBouncer のようなコネクションプーリングプロキシを使用します。これにより、数千の Lambda 接続が実際のデータベース接続の管理可能なプールに多重化されます。また、コネクションプーリングを使用してもボトルネックが生じるような高並行性ワークロードでは、DynamoDB やその他のコネクションレスなデータベースを優先するようにサーバーレスアプリケーションを設計しています。リレーショナルデータベースを使用しなければならないアプリケーションの場合、データベースの接続容量に合わせて並行する Lambda 呼び出しを制限する、接続認識型スケーリング制限を実装しています。
Serverless優先アーキテクチャは、マネージドでスケール・トゥ・ゼロのコンピューティングサービス(Lambda, Cloud Functions, Vercel Functions)と、マネージドイベントサービス(EventBridge, SQS, Step Functions)によって接続されたアプリケーションを完全に構築します。パッチを適用するサーバーも、サイズを変更するクラスターも、計画するキャパシティもありません。関数はイベント(HTTPリクエスト、キューメッセージ、スケジュールトリガー、データベース変更)に応答して実行され、ゼロから数千の同時インスタンスに自動的にスケールします。このパターンは、Serverlessデータベース(DynamoDB, Neon, PlanetScale)、Serverlessキュー(SQS)、Serverlessオーケストレーション(Step Functions, Temporal Cloud)にも拡張されます。
このアーキテクチャは本質的にイベント駆動型です。API Gateway(AWS API Gateway, Vercel)は、HTTPリクエストを個々の関数にルーティングします。イベントソース(SQSキュー、EventBridgeルール、S3通知、DynamoDBストリーム)は、非同期的に関数をトリガーします。Step FunctionsまたはTemporalは、各ステップがリトライ、タイムアウト、エラー処理を内蔵した関数である多段階ワークフローをオーケストレーションします。Serverlessデータベース(キーバリュー用はDynamoDB、リレーショナル用はNeon/PlanetScale)は、キャパシティ管理なしでストレージを処理します。ストランラーフィグパターンは、既存のモノリスからの段階的な移行を可能にします。
| レイヤー | テクノロジー |
|---|---|
| コンピューティング | AWS Lambda, Vercel Functions (Fluid Compute), Google Cloud Functions, Cloudflare Workers |
| API | API Gateway (REST/WebSocket), Vercel, AppSync (GraphQL) |
| オーケストレーション | AWS Step Functions, Temporal Cloud, Vercel Workflow DevKit |
| データ | DynamoDB, Neon Postgres, PlanetScale, Upstash Redis, S3 |
| イベント | EventBridge, SQS, SNS, Vercel Queues |
| 可観測性 | CloudWatch, Datadog (serverless monitoring), Lumigo, X-Ray |
| 使用する状況 | 避けるべき状況 |
|---|---|
| トラフィックが変動し、アイドル期間が長い場合(スケール・トゥ・ゼロでコストを節約できます) | トラフィックが安定しており、高ボリュームの場合 — 継続的な負荷ではリザーブドインスタンスが50-70%安くなります |
| インフラ管理と運用オーバーヘッドをゼロにしたい場合 | 永続的な接続(WebSocketサーバー、データベースコネクションプール)が必要な場合 — ただしVercelはこれを処理します |
| アプリケーションがイベント駆動型関数に自然に分解される場合 | ワークロードがリクエストあたり15分を超える連続実行を必要とする場合 |
| モノリスから段階的に移行しており、エンドポイントごとのロールアウトを望む場合 | チームが分散システムに不慣れな場合 — Serverlessは分散デバッグの複雑さをもたらします |
MWはServerlessを宗教的なものではなく、経済的な決定として扱います。私たちは、お客様の実際のトラフィックパターン(理論上のものではない)に基づいて、Serverless、コンテナ、リザーブドインスタンスのコストを比較し、運用にかかるエンジニアリング時間を含めた総所有コストを最小限に抑える選択肢を推奨します。私たちのServerlessアーキテクチャには、関数ごとのコストアトリビューション(各呼び出しをトリガーした機能でタグ付け)、P99がしきい値を超えた場合の警告付きコールドスタート監視、およびスプリントごとに1つのエンドポイントを移行する段階的な移行プレイブックが含まれます。私たちはメディア企業、SaaS製品、Eコマースプラットフォーム向けにモノリスをServerlessに移行してきました。そして2つのケースでは、ワークロードの特性が変化した際に一部をコンテナに戻しました。
セキュリティは、ローンチ後に付け加える機能ではありません。それはアーキテクチャの特性であり、システムがそのために設計されたか、されなかったかのどちらかです。