Serverless Operations, inc

>_cd /blog/id_213

title

サーバーレスアーキテクチャを採用する際のコストに対する重要な考え方

サーバーレスアーキテクチャを採用する理由として、コスト削減が挙げられるケースをしばしば耳にします。しかし本当にコストは常に削減されるのでしょうか?

EC2に対するAWS Lambdaのコストのメリットを説明するために、以下のような図が用いられるケースがあります。

サーバーが起動していた時間に対して課金されるEC2に対して、AWS Lambdaはプログラムが実行された時間に対して課金されるため、最終的にはコストが最適化されることをこの図では説明しています。では、実際にどんな場合にでもコストは最適化・削減されているのかを見ていきましょう。

LambdaとEC2のコストを比較する

トラフィックが少ないワークロードの場合

月間2万リクエスト、1リクエスト辺りのプログラムの平均実行時間が0.5秒、必要なメモリサイズは512MBのワークロードを考えてみましょう。t3.microインスタンスでこのトラフィックをさばけたと仮定して、以下のようになります。

結果、AWS Lambdaが圧倒的に安くなることが分かります。次に大きなトラフィックを捌く場合を見てみましょう

トラフィックが大きなワークロードの場合

月間3千万リクエスト、1リクエスト辺りのプログラムの平均実行時間が0.5秒、必要なメモリサイズは2048MBのワークロードを考えてみましょう。m5.largeインスタンスでこのトラフィックをさばけたと仮定して、以下のようになります。

結果、AWS Lambdaがコストは高くなることが分かります。

サーバーレスのサービスは「動いた分だけ」という課金体系になっていることが多く、たくさんのトラフィックを捌くためにはそれなりにコストがかかることが分かります。
他の例を見てみましょう。

API GatewayとApplication Load Balancerのコストを比較してみる

トラフィックが少ないワークロードと大きなワークロードでそれぞれ比較します。同じ様にトラフィックが少ないうちはAPI Gatewayが安いですが、トラフィックが大きくなると高くなる傾向にあることが分かります。

トラフィックが少ないワークロード
トラフィックが大きなワークロード

大きなワークロードではALBを選んだほうがいいのか?

そうとは限りません。API Gatewayに合って、ALBには無い機能がいくつかあります。以下のような機能です。これらを使いたい場合はAPI Gatewayを選択するべきでしょう。

  • 認証認可のためにいくつかの機能(Lambda AuthorizerやIAM Authorizerなど)
  • リクエストバリデーション
  • Cache
  • Usage plan
  • サービスプロキシインテグレーション

また、Serverless FrameworkなどのIaCのツールを使ってデプロイする際にもAPI Gatewayの方が全体の記述量が少なく、手軽なケースが多いでしょう。ALBは先にリスナーなどを定義する必要があるため少し複雑です。

DynamoDBとElasticache Redisのコストを比較してみる

同様にトラフィックが少ないワークロードと大きなワークロードでそれぞれ比較します。やはり、トラフィックやストレージ使用量が少ないうちはサーバーレスなDBであるDynamoDBが安いですが、大きなワークロードになるとそれが逆転することが分かります。

トラフィックが少ないワークロード
トラフィックが大きなワークロード

運用コストの違い

Elasticache Redisを使った方が一般的には運用面のコストは高くなるでしょう。インスタンスの管理やノードの管理はユーザで実施する必要があります。また、ノードの増減などのオペレーションに備えて手順を準備しておく必要もあります。

また、ElasticacheにVPCが必要なことも大きな違いでしょう。冗長化などの信頼性確保はユーザで実施する必要があります。

DynamoDBであれば、インスタンスサイズを選定する必要もなければ、ノードの管理も不要です。冗長化もAWS側で実施してくれるため、運用面でのコストはDynamoDBに大きなメリットがあります。

まとめ

サーバーレスのコストを考える時はAWS自体のコストだけでなく、TCO(Total Cost of Ownership)で考えることが重要です。

極端な例かもしれませんが、例えばDynamoDBでなくElasticache Redisを採用して、運用専門のソフトウェアエンジニアを1人雇用したとすれば、100万円 – 200万程度のコストはかかってくるでしょう。これとAWS自体にかかるコストを足した時にどちらにメリットがあるのか、将来のコストも含めて検討する必要があるでしょう。

サーバーレスのサービスのメリットは、インフラストラクチャにおける様々な運用をクラウドベンダーが肩代わりしてくれることです。それにより目には見えにくい運用コストを削減させて、ビジネスロジックな重要な部分にエンジニアリングリソースを集中させることが出来ます。

サーバーレスアーキテクチャを採用する場合はこういった観点でコストを捉えることで、メリットとなる要点は何になるのか。分かりやすくなるかもしれません。

Written by
CEO

堀家 隆宏

Takahiro Horike

  • Facebook->
  • X->
  • GitHub->
Back
to list
<-