小西秀和です。
Amazon Aurora、Amazon Neptune、Amazon EMR、Amazon Redshift、Amazon Managed Streaming for Apache Kafka(Amazon MSK)、Amazon OpenSearch Serviceなどのインスタンスで構成されたクラスターで処理を実行するAWSサービスでは、従来、リクエストを処理するために待ち受けているインスタンスの起動時間とインスタンスサイズに応じて料金が発生する課金体系でした。
近年ではこうしたクラスター型のAWSサービスの一部にリクエストやトラフィック処理に使用した時間やリソース量の分だけ料金が発生する課金体系が「~Serverless」のような名称で追加されてきています。
例えば前述したAWSサービスにはAmazon Aurora Serverless(v1, v2)、Amazon Neptune Serverless、Amazon EMR Serverless、Amazon Redshift Serverless、Amazon MSK Serverless、Amazon OpenSearch Serverlessといった名称で提供されています。
この記事では上記のようなクラスター型のAWSサービスにおける「~Serverless」という課金体系の概念を表す総称に、次のAWS公式記事で使われている「Serverless option(Serverlessオプション)」という呼称を使用して説明していきます。
Amazon EMR Serverless Now Generally Available – Run Big Data Applications without Managing Servers
Amazon Redshift Serverless – Now Generally Available with New Capabilities
Log analytics the easy way with Amazon OpenSearch Serverless
Amazon EMR Serverless
Amazon Neptune features
また、Amazon DynamoDB、Amazon Kinesis Data Streamsなどの一部のAWSサーバーレスサービスは予め必要なプロビジョニングしたキャパシティに応じて料金が発生する料金体系(プロビジョニングモード)でしたが、こちらもリクエストやトラフィック処理に使用した時間やリソース量の分だけ料金が発生する課金体系が「On-Demand(オンデマンドモード)」という名称で追加されてきています。
今回は、こうした一部のAWSサービスで追加されてきているServerlessオプション、オンデマンドモードの特徴と比較についてまとめをしたいと思います。
今回の記事の内容は次のような構成になっています。
- プロビジョニングと比較したServerlessオプション、オンデマンドモードの特徴
- Serverlessオプションが使える主なAWSサービス
- オンデマンドモード使える主なAWSサーバーレスサービス
- まとめ
プロビジョニングと比較したServerlessオプション、オンデマンドモードの特徴
Serverlessオプションとオンデマンドモードは使用可能なAWSサービスのカテゴリや課金のされ方など違いがありますが、コンセプトや特徴が似ている部分があります。
そのため、Serverlessオプション、オンデマンドモードのそれぞれの特徴を洗い出した上で、共通する特徴をまとめました。
一部のクラスター型AWSサービスにおけるServerlessオプション
従来のクラスターを構成するインスタンスの課金体系ではインスタンスを停止すれば課金されませんが、リクエストを処理するには常に起動しておくプロビジョニングが必要でした。
このようなクラスターまたはインスタンスをプロビジョニングする料金体系のAWSサービスのうち、
Amazon Aurora、Amazon Neptune、Amazon EMR、Amazon Redshift、Amazon Managed Streaming for Apache Kafka(Amazon MSK)、Amazon SageMakerのInference(推論)、Amazon OpenSearch Service
といったAWSサービスでは、それぞれ
Amazon Aurora Serverless(v1, v2)、Amazon Neptune Serverless、Amazon EMR Serverless、Amazon Redshift Serverless、Amazon MSK Serverless、Amazon SageMaker Serverless Inference(Amazon SageMakerサーバーレス推論)、Amazon OpenSearch Serverless
といった名称で異なる料金体系が提供されています。
これらを「Serverlessオプション」と呼称すると、Serverlessオプションはリクエストやトラフィック処理に使用した時間やリソース量の分だけ料金が発生する構成と言えます。
※Serverlessオプションはクラスター等をプロビジョニングする構成から設定で容易に変更できるものではなく、その多くはServerlessオプションの構成を新規作成してマイグレーションする必要があります。
また、従来のクラスターやインスタンスのAuto Scaling設定ではリソースの構成やしきい値などのスケーリングポリシーの設定や管理が必要で、一部のインスタンスが起動していることを前提としてインスタンスを増減させることでスケールアウトしていました。
Serverlessオプションでは継続的なインスタンスの起動を維持するための費用は必要なく、リソース構成、管理、スケーリングに関する設定が少ないことが特徴です。
そのため、Serverlessオプションはオンデマンドインスタンスや従来のAuto Scaling設定よりさらに「管理が少なく使用した分だけ課金」というクラウドの特徴にアプローチしたフルマネージドに近いAuto Scaling構成と見ることもできます。
一部のAWSサーバーレスサービスにおけるオンデマンドモード
オンデマンドモードは主に予め必要なキャパシティをプロビジョニングして使用するプロビジョニングモードを提供しているAWSのサーバーレスサービスにおいて、リクエストやトラフィックの処理時間とキャパシティの分だけ料金が発生する構成です。
オンデマンドモードがあるAWSサービスにはAmazon DynamoDB、Amazon Kinesis Data Streamsといったものが挙げられます。
プロビジョニングモードはキャパシティの設定方法で、対象のリソースを削除すれば課金されず、キャパシティを減らせば料金を下げることもできますが、リクエストを処理するには常にキャパシティを設定した上でプロビジョニングしておく必要があります。
また、Amazon DynamoDB、Amazon Kinesis Data Streamsなどで使用できるApplication Auto Scalingではリソースの構成やしきい値などのスケーリングポリシーの設定や管理が必要でした。
一方で、オンデマンドモードではそのようなリソース構成、管理、スケーリングに関する設定が少ないことが特徴です。
オンデマンドモードはサーバーレスサービスにおけるプロビジョニングモードよりさらに「管理が少なく使用した分だけ課金」というクラウドの特徴にアプローチしたフルマネージドに近いAuto Scaling構成と見ることもできます。
※オンデマンドモードはキャパシティ設定を伴うAWSサービスでプロビジョニングモードと対を成して使用される用語のため、インスタンスの課金体系で使用するオンデマンドインスタンスとは異なる概念です。
Serverlessオプションとオンデマンドモードで共通する特徴
Serverlessオプションとオンデマンドモードに共通している特徴には次のものがあります。
- リクエストやトラフィックに対して実行した処理の時間とリソース量に応じて課金される
- 変動の激しいまたは予測不可能なリクエストやトラフィックの処理に向いている
- 同じ処理時間、同じトラフィック量を同様のコンピューティング能力で処理した場合にプロビジョニング型の料金体系よりもリソース料金が割高になる場合が多い
- 従来のAuto Scaling設定に比べてリソース構成、管理、スケーリングに関する設定が少ない(フルマネージドに近いAuto Scaling)
Serverlessオプションとオンデマンドモードのユースケース
上記の特徴からServerlessオプションとオンデマンドモード、プロビジョニングでそれぞれ適しているユースケースについて次のことが言えます。
Serverlessオプションやオンデマンドモードが適しているユースケース
リクエストやトラフィックが少ない時間が長いが急にトラフィックが増加するケースなど、
リクエストやトラフィックのパターンが予測不可能で需要にあわせたプロビジョニング設定が難しい場合。
(例)普段はあまり使用していないが急に使用する必要がある開発や実験の目的で利用する場合、普段のリクエストは少ないが急な流行など事前に得られる情報から予測できないリクエストの急増がある場合プロビジョニングが適しているユースケース
トラフィックが一定または増える時間帯・期間が予め予測できるなど、
リクエストやトラフィックのパターンが予測可能で需要にあわせてプロビジョニング設定ができる場合。
(例)一定のリクエストが継続的にあってプロビジョニングしたリソースやAuto Scaling機能で処理可能だと予測できる場合、期間が決まったイベントなど事前に得られる情報から予測できるリクエストの増加に予めスケールアウトして準備する時間的余裕がある場合
Serverlessオプションが使える主なAWSサービス
本記事執筆時点でServerlessオプションが使える主なAWSサービスについては次の記事へ個別に特徴、設定項目、料金、制限事項をまとめています。
オンデマンドモード使える主なAWSサーバーレスサービス
本記事執筆時点でオンデマンドモード使える主なAWSサーバーレスサービスについては次の記事へ個別に特徴、設定項目、料金、制限事項をまとめています。
<参考資料>
AWS Documentation(Using Amazon Aurora Serverless v1 - Amazon Aurora)
AWS Documentation(Using Aurora Serverless v2 - Amazon Aurora)
Amazon Aurora Pricing
AWS Documentation(Amazon Neptune Serverless - Amazon Neptune)
Amazon Neptune Pricing
AWS Documentation(Amazon EMR Serverless User Guide - Amazon EMR)
Amazon EMR Pricing
AWS Documentation(Amazon Redshift Serverless - Amazon Redshift)
Amazon Redshift Pricing
AWS Documentation(MSK Serverless - Amazon Managed Streaming for Apache Kafka)
Amazon MSK Pricing
AWS Documentation(Serverless Inference - Amazon SageMaker)
Amazon SageMaker Pricing
Amazon OpenSearch Serverless (preview) - Amazon OpenSearch Service
Amazon OpenSearch Service Pricing
AWS Documentation(Read/write capacity mode - Amazon DynamoDB)
Amazon DynamoDB Pricing for On-Demand Capacity
AWS Documentation(Choosing the Data Stream Capacity Mode - Amazon Kinesis Data Streams)
Amazon Kinesis Data Streams Pricing
Tech Blog with related articles referenced
まとめ
今回はプロビジョニングをして運用するAWSサービスの一部でサポートされているServerlessオプション、オンデマンドモードについてまとめました。
フルマネージドに近い管理作業量の少なさ、実行した処理の時間とリソース量に応じて課金されるServerlessオプション、オンデマンドモードのような機能は「管理が少なく使用した分だけ課金」というクラウドの特徴をより忠実に実現したものだと言えるでしょう。
ただ、Serverlessオプション、オンデマンドモードを導入している各AWSサービスではそれぞれ提供するサービスの特徴によって管理不要で自動的にスケールする項目が異なり、スケールの上限や機能面での制限が設けられているものが多いです。
そのため、導入する場合にはプロビジョニングする方法が適しているか、Serverlessオプション・オンデマンドモードが適しているかをユースケース(予測不可能なトラフィックかどうかなど)とコスト計画(トラフィックから推測した料金比較など)および使用可能な機能から判断する必要があります。
このようなServerlessオプション、オンデマンドモードといった機能は今後も多くのプロビジョニング型のAWSサービスに追加され、サーバーレスサービスやフルマネージドサービスの概念に近づいていくのではないかと考えられます。
今後も継続的にServerlessオプション、オンデマンドモードがどのAWSサービスに提供していくのかその動向をウォッチしていきたいと思います。