AWS ALB LCUコスト確認まとめ



#はじめに
AWS ALBのコストを算出する機会があったものの
LCUコストの算出がすぐに理解できなかったので、
(https://aws.amazon.com/jp/elasticloadbalancing/pricing/?nc=sn&loc=3)　
に記載の計算例を見てみることにしました。

#そもそもLCUとは？
LCUは「Load Balancer Capacity Units」の略でALBの使用量の単位です。

#料金例
ここからALBの料金表に記載の計算例を見ていきます。
※リージョンはアジアパシフィック(東京)を選択
※LCUがトラフィックを処理する尺度や既定値の情報に関しては、割愛させて頂きます。
　詳細はALBの料金表を参照してください。

■例1 
条件
(1) アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信
(2) それぞれ 2 分間継続すると仮定
(3) クライアントは毎秒平均 5 つのリクエストを送信
(4) リクエストと応答の合計処理バイト数は毎秒 300 KB
(5) クライアントのリクエストをルーティングする 60 個のルールを設定

・新しい接続(1秒あたり)
LCUは1 秒あたり 25 個の新しい接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信する・・・(1) 

1/25 = 0.04LCU

・アクティブ接続(1分あたり)
LCUは1分あたり3,000 個のアクティブな接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信する・・・(1)
それぞれ 2 分間( 120秒 )継続すると仮定・・・(2)

120/3,000 = 0.04 LCU

・処理タイプ(バイト数:GB/時)
LCUは 1 時間あたり 1 GBの処理バイトを提供・・・（既定値)
アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信する・・・(1)
リクエストと応答の合計処理バイト数は毎秒 300 KB・・・(4)

1時間あたり

300*60*60 = 1,080,000 KB = 1.08 GB
1.08/1 = 1.08 LCU


・ルール評価(1秒あたり)
LCUは 1 秒あたり 1,000 個のルール評価を提供・・・（既定値)
アプリケーションは毎秒平均 5 つのリクエストを受信・・・(3)
各リクエストに対して 60 個のルールを設定・・・(5)

ルール評価数(1秒あたり)

(60-10)*5 = 250 個
250/1000 = 0.25 LCU

・最終評価
最もLCU値が大きい処理タイプ(バイト数:GB/時) = 1.08 LCUが計算対象となります。
LCU 時間（または 1 時間未満）あたり、0.008 USDより

1.08*0.008 = 0.00864 USD/時

上記の計算結果にApplication Load Balancer時間（または1時間未満)あたり、0.0243 USDを加えるとApplication Load Balancer の合計コストは以下のようになります。

0.00864+0.0243 = 0.03294 USD/時
0.03294*24*30 = 23.7168 USD/月


■例2
条件
(1)アプリケーションが 1 秒あたり平均 100 個の新しい接続を受信
(2)それぞれ 3 分間継続すると仮定
(3)クライアントが 1 秒あたり平均 4 個のリクエストを送信
(4)接続あたり 1,000 バイトがプロセスされる
(5)クライアントのリクエストをルーティングする 20 個のルールを設定

・新しい接続( 1 秒あたり)
LCUは1秒あたり 25 個の新しい接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 100 個の新しい接続を受信・・・(1)

100/25 = 4 LCU

・アクティブ接続( 1 分あたり)
LCUは 1 分あたり 3,000 個のアクティブな接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 100 個の新しい接続を受信・・・(1)
それぞれ 3 分間(180秒)継続・・・(2)

18,000/3,000 = 6 LCU

・処理タイプ(バイト数:GB/時)
LCUは1時間辺り 1 GBの処理バイトを提供・・・（既定値)
アプリケーションが 1 秒あたり平均 100 個の新しい接続を受信・・・(1)
各接続 1,000 バイトのデータが転送される・・・(4)

1時間あたり

1,000*100*60*60 = 360,000,000 バイト = 0.36 GB
0.36/1 = 0.36 LCU

・ルール評価( 1 秒あたり)
LCUは 1 秒あたり 1,000 個のルール評価を提供・・・（既定値)
アプリケーションが 1 秒あたり平均 100 個の新しい接続を受信・・・(1)
この 1 秒あたり平均 4 個のリクエストを受信・・・(3)
クライアントのリクエストをルーティングする 20 個のルールを設定・・・(5)

ルール評価数(1秒あたり)

(20-10)*400 = 4,000 個
4,000/1000 = 4 LCU

・最終評価　
最もLCU値が大きいアクティブ接続( 1 分あたり)= 6 LCUが計算対象となります。
LCU 時間（または 1 時間未満）あたり、0.008 USDより

6*0.008 = 0.048 USD/時

上記の計算結果にApplication Load Balancer時間（または 1 時間未満)あたり、0.0243 USDを加えるとApplication Load Balancer の合計コストは以下のようになります。

0.048+0.0243 = 0.0723 USD/時
0.0723*24×30 = 52.056 USD/月


■例3
条件
(1)アプリケーションが 100 秒あたり平均 100 個の新しい接続を受信
(2)それぞれ 200 ミリ秒間継続すると仮定
(3)クライアントは毎秒平均 100 のリクエストを送信
(4)接続中のLambdaリクエストと応答の合計処理バイト数は毎秒 14 KB 
(5)クライアントのリクエストをルーティングする 20 個のルールを設定

・新しい接続( 1 秒あたり)
LCUは 1 秒あたり 25 個の新しい接続を提供・・・（既定値）
アプリケーションが 100 秒あたり平均 100 個の新しい接続を受信・・・(1)

1/25 = 0.04 LCU

・アクティブ接続(1分あたり)
LCUは 1 分あたり 3,000 個のアクティブな接続を提供・・・（既定値）
アプリケーションが 100 秒あたり平均 100 個の新しい接続を受信・・・(1)
それぞれ 200 ミリ秒間継続すると仮定・・・(2)

100/3,000 = 0.03 LCU

・処理タイプ(バイト数:GB/時)
LCUはLambdaターゲット 1 時間あたり 0.4 GBの処理バイトを提供・・・（既定値)
接続中のLambdaリクエストと応答の合計処理バイト数は毎秒 14 KB・・・(4)

1時間あたり

14*100*60*60 = 5,040,000 KB = 5.04 GB
5.04/0.4 = 12.6 LCU

ルール評価( 1 秒あたり)
LCUは 1 秒あたり 1,000 個のルール評価を提供・・・（既定値)
このアプリケーションは毎秒平均 100 のリクエストを受信・・・(3)
クライアントのリクエストをルーティングする 20 個のルールを設定・・・(5)

ルール評価数(1秒あたり)

(20-10)*100 = 1,000個
1,000/1,000 = 1 LCU

・最終評価　
最もLCU値が大きい処理タイプ(バイト数:GB/時)= 12.6 LCUが計算対象となります。
LCU 時間（または 1 時間未満）あたり、0.008 USDより

12.6*0.008 = 0.1008 USD/時

上記の計算結果にApplication Load Balancer時間（または 1 時間未満)あたり、0.0243 USDを加えるとApplication Load Balancer の合計コストは以下のようになります。

0.1008+0.0243 = 0.1251 USD/時
0.1251*24*30 = 90.072 USD/月


■例４
条件
(1) アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信
(2) それぞれ 2 分間継続すると仮定
(3) クライアントは、1 秒あたり平均 50 のリクエストを送信
(4) リクエスト/応答ごとにロードバランサーを通じて転送された双方向の合計バイト数は 10 KB
(5) リクエストの平均 60 % はターゲットとして EC2 インスタンスによって提供され、
　  ターゲットとしての Lambda 関数によって 40 % 提供されます。
(6) クライアントのリクエストをルーティングする 50 個のルールを設定

・新しい接続(1秒あたり)
LCUは1 秒あたり 25 個の新しい接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信・・・(1)

1/25 = 0.04 LCU

・アクティブ接続(1分あたり)
LCUは 1 分あたり 3,000 個のアクティブな接続を提供・・・（既定値）
アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信・・・(1)
それぞれ 2 分間( 120 秒)継続すると仮定・・・(2)

120/3000 = 0.04 LCU

・処理タイプ(バイト数:GB/時)
LCUはEC2ターゲット 1 時間あたり 1 GBの処理バイトを提供・・・（既定値)
リクエストの平均 60 % はターゲットとして EC2 インスタンスによって提供・・・(5)

1時間あたり

300*60*60 = 1,080,000 KB = 1.08 GB
1.08/1 = 1.08 LCU

LCUはLambdaターゲット 1 時間あたり 0.4 GBの処理バイトを提供・・・（既定値)
リクエストの平均 40 % はターゲットとして Lambda 関数によって提供・・・(5)

1時間あたり

200*60*60 = 720,000 KB = 0.72 GB
0.72/0.4 = 1.8 LCU

EC2 および Lambda ターゲット間のプロセスされたバイト数

1.08+1.8 = 2.88 LCU

・ルール評価(1秒あたり)
LCUは 1 秒あたり 1,000 個のルール評価を提供・・・（既定値)
クライアントは、1 秒あたり平均 50 のリクエストを送信・・・(3)
クライアントのリクエストをルーティングする 50 個のルールを設定・・・(6)

ルール評価数(1秒あたり)

(50-10)*50 = 2000 個
2000/1000 = 2.00 LCU

・最終評価
最もLCU値が大きい処理タイプ(バイト数:GB/時)= 2.88 LCUが計算対象となります。
LCU 時間（または 1 時間未満）あたり、0.008 USDより

2.88*0.008 = 0.0230 USD/時

上記の計算結果にApplication Load Balancer時間（または 1 時間未満)あたり、0.0243 USDを加えるとApplication Load Balancer の合計コストは以下のようになります。

0.0230+0.0243 = 0.0473 USD/時
0.0473*24*30 = 34.056 USD/月