費用認識
SaaS COST 1: 個々のテナントのリソース消費はどのように測定されますか? |
---|
マルチテナント環境でのコストの測定と要因の判断は、消費の要因がテナントであることを明らかにするための確固たる戦略を持つことから始まります。そのためには、テナントがシステムのリソースをどのように消費しているかを明確に表す消費マッピングモデルの設計と開発をチームで行う必要があります。最終的な目標は、システムの各テナントに消費の割合を割り当てることができるようにするためのインサイトを集めることです。
テナントがシステムのリソースの一部または全部を共有する可能性があるマルチテナント環境では、このような消費に関する情報をまとめることは特に困難です。このより詳細な消費モデルは、AWS 環境で消費の要因を判断するためによく使われるオプションやツール戦略の多くを排除しています (タグ付けなど)。
SaaS アーキテクチャでテナントの消費をどのように捉えるかを定義するための単一のモデルはありませんが、アプリケーションの戦略を選択する際に考慮すべき共通の戦略がいくつかあります。まず、SaaS 環境の全体的なコストプロファイルを確認して、アプリケーションが AWS の請求書のコストにどのような影響を与えているかを判断するとします。環境によっては、アプリケーションのいくつかの領域にコストが集中している場合があります。これらのシナリオでは、請求書に最も影響している領域のみの消費データを収集することによって、ROI を改善できることがあります。例えば、Amazon S3 が請求書を占める割合が 1% である場合、テナントの Amazon S3 の消費を計算してもほとんど意味がないかもしれません。
ここで考慮が必要なもう 1 つの要素は、詳細度です。環境に適合すると考えられるテナントの消費を推測できる侵襲性の低いアプローチがあります。これは、結局のところ、求める消費の詳細のレベルと、消費を帰属させるために必要なデータを取り込んで取得することの複雑さのバランスを取るという問題になります。
まずは、テナントの消費を推測するための最も単純なモデルを見てみましょう。図 25 は、低侵襲モデルでテナントのアクティビティを取得する方法の概念図です。ここでの基本的なアプローチは、AWS Lambda オーソライザーとして使用される API への各呼び出しを検査することです。オーソライザーは、受信した JWT からテナントのコンテキストを抽出し、テナントのアクティビティを記録するイベントを発行します。これに代わるアプローチとして、Amazon API Gateway の代わりに AWS X-Ray を使用してこのデータを取得する方法があります。
図 25: テナントの消費の低侵襲取得
図には、テナントの消費を集計して計算するためのプレースホルダーもあります。このギャップを埋めるために選択する戦略とツールは、データの性質、そのライフサイクル、より広範な SaaS のメトリクスと分析にどのように適合するかによって異なります。このデータを SaaS 環境の一般的なメトリクスフットプリントの一部として含めると、テナントへの消費配分に不可欠なインサイトを引き出すことができます。
この特定のアプローチは、各テナントの消費レベルを推測する方法として、各テナントの呼び出し頻度の追跡を利用します。サービスの呼び出し数と消費は正確には相関しないかもしれませんが、環境によってはこれが妥当な妥協点になることがあります。
アプリケーションの詳細を取得するより専門的な計測器を導入すれば、消費をより詳細に明らかにすることができます。図 26 は、SaaS アプリケーションのマイクロサービスにメトリクス計測を導入する方法を示しています。
図 26: テナント消費イベントによるマイクロサービスの計測
この例では、アプリケーションの各マイクロサービスにメトリクス計測を導入しています。これらのマイクロサービスは、テナントによるこのサービスの消費状況、およびその関連リソースについてのより詳細なデータを取得します。この詳細データはイベントとして公開され、集計されます。ここでは、Amazon CloudWatch、AWS Lambda、Amazon Data Firehose、Amazon S3 がデータの公開と取り込みに使用されていることがわかります。その後、このデータが分析され、独自のモデリングに基づいて、テナント間の消費の分布が明らかになります。
アプリケーションのマイクロサービスを超えると、テナントの消費の要因を判断することが困難になります。サービスごとにターゲットを絞った具体的な戦略作りが必要になる場合もあります。例えば、ストレージサービスに、ストレージの消費をプロファイリングすることができる別のサービスが必要になるかもしれません。その場合、テナントの消費を分析するために、IOPS やデータフットプリントなどを調査する必要があるかもしれません。
SaaS COST 2: テナントの消費とインフラストラクチャのコストはどのように関連付けられますか? |
---|
SaaS 環境は動的な性質を持つことから、システムのインフラストラクチャのコストプロファイルがどのように変化しているかを理解することは困難です。システム内のニーズの変化やテナントの混在により、SaaS 環境の運用コストは大きく変動する可能性があります。同時に、SaaS ビジネスでは、SaaS アプリケーションの構築、販売、運用方法を戦略的に決定するために、テナントがどのようにコストに影響を与えているかを明確に把握しておく必要があります。
テナントがビジネスのコストにどのように影響を与えているかを把握することのビジネス上の価値を理解するために、SaaS 環境へのコストデータの適用例を見てみましょう。図 27 のグラフは、SaaS 環境のコストがテナントからの収益とテナントが管理する e コマースカタログのサイズと相関関係にあるシナリオの一例を示しています。
図 27: 階層ごとのテナントあたりのコスト
このグラフは、SaaS サービスの各層におけるコストの分布を示しています。ここでは、ベーシック階層とアドバンスト階層のテナントのインフラストラクチャコストに大きな差があることがわかります。収益の最も少ないベーシック階層が、システムのインフラストラクチャコストの最大の部分を担っているということを読み取ることが重要です。一方で、収益が最も多いアドバンスト階層は、コストフットプリントがはるかに小さくなっています。このバランスの悪さは、おそらくこのモデルに何か問題があるということを意味しています。
これは、SaaS プロバイダーにとって、テナントや階層別にコストを分類してアクセスできることが不可欠であることを示すほんの一例です。このテナントごとのコストデータにアクセスできれば、SaaS 組織は、環境のコストプロファイルに影響を与える可能性のある幅広いアーキテクチャ上の考慮事項を評価することができます。また、料金や階層化戦略のガイドとしても役立ちます。
このコストをテナントデータごとにまとめることには、2 つの基本的な側面があります。まず、テナントの消費の要因を判断して計算し、各テナントの消費の割合を求める方法が必要です (この消費データの収集方法の詳細については、上述を参照してください)。消費データを入手したら、このデータと AWS の請求書のコスト情報を関連付けて、テナントごとのコスト計算を行う必要があります。
請求データのコレクションへのアクセスには、いくつかのオプションが用意されています。AWS は、この課金データを取り込んで集計するための API を提供しています。また、APN パートナーのさまざまなソリューションを利用してデータを取り込み、これらのソリューションを介してコストにアクセスすることもできます。ここでは、多くの場合、AWS のコストを取り込んでまとめるために APN パートナーと連携するのが最短ルートになります。
このエクスペリエンスの概要を図 28 に示します。収集する必要のある 2 つのデータがあることがわかります。あるプロセスで、テナントごとのコストモデルに関連するコストの詳細度に合わせて、コストをまとめた AWS の請求書のデータが集約され、取り込まれます。次に、テナントのアクティビティを分析し、各テナントに消費の割合を割り振ったテナント消費集計が表示されます。最後に、これらの消費の割合をインフラストラクチャコストに適用して、テナントあたりのコストを算出します。
図 28: テナントあたりのコストの計算
このデータを取得したら、結果として得られるコストを表現する最適な方法を選択することができます。一般的には、ビジネスの中核となるサービスの範囲を対象とした、テナントあたりのコストを持つことが重要であると考えられますが、他の分析を行う場合には、重み付けを使用することによって、テナントごとの全体的なコストを計算することができます。