検索
特集/連載

クラウド“高額請求”の謎「サーバレス」が一瞬にして高くなる原因とはAWSのサーバレスで節約する【前編】

クラウドサービスでは、サーバレスコンピューティングを使うことで開発を効率化できる可能性がある。ただし、サーバレスコンピューティングは思わぬコスト増につながる可能性もある。

Share
Tweet
LINE
Hatena

 クラウドベースのアプリケーション開発ではサーバレスコンピューティングの導入を検討する価値がある。サーバレスコンピューティングは、サーバが不要という意味ではなく、コードを実行するサーバのプロビジョニングや管理の必要性がなくなるという意味だ。インフラ管理を効率化できるため、アプリケーション開発の速度が向上する。

 だが、サーバレスコンピューティングの運用には複雑な領域もある。その一つがコストだ。例えばAmazon Web Services(AWS)のサーバレスコンピューティングサービス「AWS Lambda」を利用する際にコストが跳ね上がらないようにするには、課金の仕組みを理解する必要がある。サーバレスコンピューティングを利用する際に思いがけず不必要な出費が生じないよう、さまざまな課金要素について確認しよう。

一瞬で高額請求になることも? サーバレスの料金算出方法

 AWSは、関数(イベントを処理するためのコード)を1GB利用する秒数(以下、GB秒)でサーバレスコンピューティングの料金を計算する。GB秒は、関数に割り当てるメモリのGB数に、一定期間内にその関数が実行された累積時間(秒数)を乗算して求められる。つまり、各関数の実行完了までの時間と、実行のトリガー回数によって料金が決まる。

 例えば、米国東部リージョンにデプロイされた関数でメモリが1GB割り当てられ、その関数が任意のx86サーバで実行されるとする。実行が1秒に1回で平均実行時間が1秒、つまり1カ月当たり260万回であれば、1カ月の実行時間は260万GB秒になる。AWSでは、実行時間に対して月額43ドル、リクエスト件数に料金(100万件当たり0.2ドル)が課金される。従って、1カ月の総額は約43.50ドルとなる。

 料金はこれ以外にも発生することに注意を要する。例えば、プロセッサの種類も料金に影響する。AWS Lambdaの場合、Arm製のプロセッサを利用すればx86より約20%安価になる。

課金シナリオ

 思いがけない出費を避けるには、サーバレスコンピューティングを構成するさまざまな要素の課金シナリオを理解し、運用アプリケーションに想定する用途やパフォーマンス要件と、そのシナリオを照らし合わせる必要がある。以下にその例を挙げる。

  • トランザクションの量
    • 単位時間当たりのリクエスト件数
  • 量の増減パターン
    • 標準時の使用量とピーク時の使用量の違い
  • リソース消費量
    • 実行1回当たり、実行期間全体、保存、外部統合に必要なコンピューティング容量

 基本的にアプリケーションは最長応答時間に厳しい水準を求めるため、想定応答時間が重要な要素になる。サーバレスコンピューティングでは、応答時間を割り当てることができないため、応答時間の概算は、利用するクラウドアーキテクチャのサーバレスコンピューティングの構成要素ごとに求める必要がある。

 AWS LambdaやMicrosoftの「Azure Functions」など、サーバレス関数の料金には次に示す3つの要素が主に影響する。

  • メモリ割り当て
  • 実行回数
  • 毎回の実行時間

 関数の数が増えたり、メモリのオーバープロビジョニング(余剰領域を確保すること)があったりすると、料金が跳ね上がる可能性がある。1秒当たり100件以上のリクエストがあるアプリケーションだと、月額料金が瞬く間に数千ドルに達することもある。

 関数によっては、料金とパフォーマンスをサーバベースの仮想マシンサービス「Amazon Elastic Compute Cloud」(Amazon EC2)と比較すべきだ。アプリケーション開発の際は、サーバレスからサーバベースに移行できるようにしておく必要があるだろう。


 後編ではAWS Lambdaをモデルに、サーバレスコンピューティングで費用を抑える方法を紹介する。

TechTarget発 世界のインサイト&ベストプラクティス

米国TechTargetの豊富な記事の中から、さまざまな業種や職種に関する動向やビジネスノウハウなどを厳選してお届けします。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る