SAP-C02-100 · セクション 11 / タスク 2.6
Network ArchitectureによるData Transfer Cost最適化
VPC Endpoint / Amazon CloudFront / NAT Gateway / AZ Affinity / リージョナルアーキテクチャ / データ転送モデリング
AWSのデータ転送コストの構造が分かっても、
Inter-AZ料金が高い
NAT Gateway料金が高い
Inter-Region料金が高い
と確認するだけでは、コスト最適化は完成しません。
次に必要なのは、
現在の通信経路
↓
料金が発生している箇所
↓
経路・配置・サービスを変更
↓
課金対象そのものを減らす
という設計判断です。
例えば、
Amazon EC2
↓
NAT Gateway
↓
Amazon S3
という経路なら、
Amazon EC2
↓
Gateway VPC Endpoint
↓
Amazon S3
へ変更できないかを評価します。
重要なのは、
料金単価だけを下げる
ことではなく、
不要な転送
不要なAZ境界
不要なNAT処理
不要なオリジン転送
不要なリージョン間通信
そのものを減らすことです。
ゴール
最終的に、
通信量
×
料金
だけではなく、
この通信は
本当にこの経路を通る必要があるか
を判断できることがゴールです。
代表的には、
VPC Endpoint
Amazon CloudFront
NAT Gateway配置
AZアフィニティ
リージョン配置
データ転送モデリング
を使って、
変更前
↓
課金される経路
変更後
↓
より少ない課金経路
を比較します。
1. 最初に「削減できる通信」を探す
データ転送コスト最適化では、
料金表を見る
より先に、
どの通信を減らせるか
を確認します。
基本的な順番は、
不要な通信をなくす
↓
有料の処理サービスを外す
↓
AZ / リージョン境界を減らす
↓
繰り返し転送をキャッシュする
↓
残った通信の料金を比較する
です。
例えば、
NAT Gateway
0.0X USD / GB
を、
もっと安いNAT料金
へ変更するより、
そもそもS3通信を
NAT Gatewayへ通さない
方が効果的な場合があります。
2. 現在の経路からコスト要因を特定する
最初に、099で作ったデータ転送モデルを使います。
例えば、
プライベートEC2
↓
別AZのNAT Gateway
↓
Amazon S3
なら、確認する料金要素は、
Inter-AZ
+
NAT Gateway データ処理
です。
同一リージョンのEC2とS3間のデータ転送自体が無料でも、
途中にNAT Gatewayがある
ことで料金が発生します。
したがって、
S3の料金を下げる
のではなく、
S3までの経路を変更する
ことが最適化になります。
3. Amazon S3 / DynamoDBではGateway VPC Endpointを最初に評価する
Amazon S3とAmazon DynamoDBには、
Gateway VPC Endpoint
があります。
Gateway Endpointには、
エンドポイント 時間料金 料金
データ処理 料金
がありません。
例えば、
Private Subnet
↓
NAT Gateway
↓
Amazon S3
を、
Private Subnet
↓
S3 Gateway Endpoint
↓
Amazon S3
へ変更すると、S3通信について、
NAT Gateway データ処理
を経路から外せます。
NAT Gatewayが別AZにあった場合は、
NATまでのInter-AZ トラフィック
も削減できる可能性があります。
4. Gateway Endpointで削減できる料金を正確に分ける
例えば、
S3通信
4 TB / 月
インターネット通信
1 TB / 月
があり、両方を同じNAT Gatewayへ通していたとします。
S3 Gateway Endpointを導入すると、
S3 4 TB
↓
NAT Gatewayを通らない
ため、
S3分の
NAT データ処理
は削減できます。
しかし、
インターネット 1 TB
のためにNAT Gatewayが残るなら、
NAT Gateway-hour
は残ります。
したがって、
Gateway Endpoint導入
=
NAT Gateway料金が全部なくなる
とは考えません。
削減額は、
実際に消える料金
だけを数えます。
5. NAT Gateway自体を削除できる場合は固定料金も削減できる
反対に、NAT Gatewayの通信が、
S3
DynamoDB
対応AWSサービス
だけだった場合、すべてを適切なVPC Endpointへ移行して、
NAT Gatewayが不要
になれば、
NAT データ処理
+
NAT Gateway-hour
の両方を削減できる可能性があります。
つまり、
トラフィックをエンドポイントへ移した
ことと、
NAT Gatewayを削除できた
ことを分けて評価します。
6. Interface VPC Endpointは無料ではない
Gateway Endpointを利用できないAWSサービスでは、
Interface VPC Endpoint
を評価できます。
Interface Endpointでは、一般に、
エンドポイント Hour
+
データ処理 / GB
が発生します。
したがって、
NAT Gateway
↓
Interface Endpoint
へ変更すれば、
必ず安くなる
わけではありません。
比較するのは、
現在
NAT Gateway-hour
+
NAT処理
+
必要なInter-AZ
vs
候補
Interface Endpoint-hour
+
エンドポイント処理
+
必要なデータ転送
です。
7. Interface EndpointはAZ数もコストモデルへ入れる
Interface VPC Endpointは、
可用性 ゾーン
ごとにエンドポイント用ネットワークインターフェイスを配置できます。
そのため、
1 AZ
と、
3 AZ
では固定料金の形が異なります。
例えば、
通信量
非常に少ない
エンドポイント
3 AZ
の場合、GB単位の削減額より、
エンドポイント-hour
の方が大きくなる可能性があります。
逆に、
大量のAWSサービストラフィック
↓
NAT Gateway
がある場合は、
NAT データ処理削減
によってInterface Endpointが有利になる可能性があります。
8. VPC Endpointの分散配置と中央集約も総経路で比較する
多数のVPCがある環境では、
VPC A
→ Interface Endpoint
VPC B
→ Interface Endpoint
VPC C
→ Interface Endpoint
のように各VPCへ配置すると、
エンドポイント-hour
が重複します。
そのため、
共有サービスVPC
↓
Interface Endpointを中央集約
する設計も候補になります。
しかし中央集約すると、
スポークVPC
↓
Transit Gateway / VPC Peering等
↓
共有 VPC
↓
Interface Endpoint
という経路になります。
したがって、
エンドポイント数削減
だけではなく、
Transit Gateway データ処理
Inter-AZ
VPC Peering データ転送
Interface Endpoint 処理
など、追加される経路料金も含めて比較します。
9. エンドポイント 集中化は「VPC数が多い = 必ず安い」ではない
例えば、
10 VPC
×
3 AZ
×
Interface Endpoint
の固定料金が大きい場合、中央集約によってエンドポイント数を減らせる可能性があります。
しかし、
トラフィック量
が非常に大きいと、中央ハブまでの、
データ処理
データ転送
が増えます。
したがって、
VPC数が多い
↓
中央集約
と機械的には決めません。
見るのは、
エンドポイント固定料金の削減
vs
中央経路で増える従量料金
です。
10. Zonal NAT Gatewayでは同一AZ経路を基本候補にする
Zonal NAT Gatewayは1つのAZに属します。
例えば、
AZ-A EC2
↓
AZ-A NAT Gateway
なら、EC2からNAT GatewayまでAZ境界を越えません。
一方、
AZ-B EC2
↓
AZ-A NAT Gateway
なら、
Inter-AZ
が追加される可能性があります。
そのため、高トラフィックなワークロードでは、
各AZのワークロード
↓
同じAZのNAT Gateway
という経路を評価します。
11. NAT GatewayをAZごとに置けば必ず安いわけではない
例えば2 AZで、
NAT Gateway
1台
から、
NAT Gateway
2台
へ変更すると、
Inter-AZ トラフィック
を減らせる一方、
NAT Gateway-hour
は増えます。
したがって、
追加NAT Gatewayの固定料金
と、
削減されるInter-AZ料金
を比較します。
概念的には、
追加固定料金
<
削減できるInter-AZ料金
なら、コスト面でも有力になります。
ただし、マルチAZでのNAT Gateway配置は、
可用性
にも影響するため、コストだけで1 AZへ集約してはいけません。
12. Regional NAT Gatewayも候補にする
現在は、
Regional NAT Gateway
も利用できます。
Regional NAT Gatewayは、
ワークロードが存在するAZ
に応じて、自動的にAZへ展開・縮小できます。
これにより、
AZごとに
NAT Gatewayを作成
+
Route Tableを個別管理
する運用を簡素化できます。
13. Regional NAT Gatewayは「1台分の料金」ではない
Regional NAT Gatewayは、
1つの論理 NAT Gateway
ですが、料金は、
展開されているAZ
×
NAT Gateway-hour
として考えます。
さらに、
データ処理 / GB
も発生します。
したがって、
Zonal NAT Gatewayを
3 AZへ配置
vs
Regional NAT Gatewayが
3 AZへ展開
を比較するとき、
Regionalだから
常に固定料金が3分の1
とは考えません。
Regional NAT Gatewayの主な価値は、
自動的なAZ展開
高可用性
運用簡素化
と、AZローカルな経路を作りやすくすることです。
14. Regional NAT Gatewayの展開には時間差もある
Regional NAT Gatewayは、新しいAZにワークロードを検出すると自動的に展開します。
ただし、新しいAZへの展開には、
最大60分程度
かかる場合があります。
展開完了までは、
新AZのワークロード
↓
既存AZのRegional NAT Gateway
へ通信が処理される場合があります。
そのため、
Auto Scalingで頻繁に
新しいAZへワークロードが現れる
ような構成では、定常状態だけでなく、
展開中のAZ間トラフィック
も必要に応じて考慮します。
15. AZアフィニティは「通信を同じAZへ寄せる」設計
Inter-AZ トラフィックを減らす方法は、
すべてを1 AZへ置く
ことではありません。
高可用性を維持しながら、
AZ-A
アプリ
↓
AZ-A
バックエンド
AZ-B
アプリ
↓
AZ-B
バックエンド
のように、
各AZの内部で
通信を完結させる
設計を評価できます。
これを、
AZアフィニティ
として考えます。
16. AZアフィニティとマルチAZは両立できる
例えば、
AZ-A
ウェブ → アプリ → キャッシュ
AZ-B
ウェブ → アプリ → キャッシュ
という2つのZonal Stackを持てば、
Multi-AZ
を維持しながら、通常時の大量East-West トラフィックを、
同一AZ
へ寄せられる可能性があります。
つまり、
可用性
vs
Inter-AZ コスト
を、
どちらか一方だけ選ぶ
必要はありません。
17. Network Load BalancerではAvailability Zone Affinityも評価できる
Network Load Balancerでは、
Availability Zone Affinity
を利用できます。
ただし、この機能は、
Route 53 Resolverを使用して
Network Load BalancerのDNS名を
解決するクライアント
に対して使用します。
この条件を満たすクライアントでは、
クライアント
↓
Route 53 Resolver
↓
NLB DNS Resolution
の際に、
クライアントと同じAZの
Network Load Balancer IP
へ通信を寄せることができます。
さらに、
Cross-zone Load Balancing
OFF
と組み合わせることで、
クライアント
↓
同じAZのNLB
↓
同じAZのTarget
というZonal Flowを作りやすくなります。
大量のAZ間通信があり、
Route 53 Resolverを使った
NLB DNS Resolution
を利用できるワークロードでは、Inter-AZ コスト最適化の候補になります。
一方、
任意のインターネットクライアント
↓
任意のDNS Resolver
に対して、Availability Zone Affinityが自動的に同じAZへ誘導する機能だとは考えません。
18. AZ間料金はサービス固有の例外を確認する
ただし、
Cross-zone
=
必ずInter-AZ料金
とは限りません。
例えばアプリケーション Load Balancerでは、Cross-zone Load Balancingに伴う特定のリージョン内データ転送には料金が発生しません。
そのため、
Inter-AZを見つけた
↓
必ずアーキテクチャを変更
ではなく、
実際にそのサービスで
料金が発生しているか
を確認します。
最適化対象は、
トラフィック
ではなく、
課金対象 トラフィック
です。
19. Amazon CloudFrontは繰り返し転送するデータをエッジへ寄せる
インターネット向けに、
同じ画像
同じ動画
同じソフトウェア
同じウェブ応答
を繰り返し配信する場合、毎回、
オリジン
↓
インターネット ユーザー
へ送信する必要はありません。
Amazon CloudFrontを使えば、
オリジン
↓
CloudFront
↓
ビューワー
とし、キャッシュヒット時は、
CloudFront エッジ
↓
ビューワー
だけで応答できます。
20. CloudFrontではオリジンへのデータ量を減らす
CloudFrontのコスト効果では、
リクエスト ヒット率
だけではなく、
バイトヒット率
も重要です。
例えば、
小さいオブジェクト
90% キャッシュヒット
非常に大きいオブジェクト
キャッシュミス
なら、リクエスト数ではヒット率が高くても、
オリジン転送バイト
は大きい可能性があります。
データ転送コストでは、
CloudFrontが
何リクエストを処理したか
だけではなく、
何バイトをオリジンから
再取得したか
を確認します。
21. AWSオリジンからCloudFrontへのデータ転送もコストモデルへ反映する
AWS上の対応オリジンからCloudFrontへコンテンツを配信する場合、現在のCloudFront料金体系では、
CloudFrontへの
AWSオリジン データ転送
が免除されます。
さらにキャッシュヒットが増えると、
オリジンリクエスト
オリジンコンピューティング
オリジンサービス 使用量
も減る可能性があります。
そのため、
インターネットへの直接配信
と、
CloudFront 配信
を比較するときは、
ビューワーへのCloudFront配信料金
+
CloudFront リクエスト料金
+
残るオリジンリクエスト コスト
を含めて比較します。
22. CloudFrontも必ず安くなるわけではない
例えば、
利用者ごとに
完全に異なる対応
キャッシュヒット
ほぼ0%
なら、
オリジン転送削減
は限定的です。
そのため、
CloudFrontを置けば
必ずデータ転送コストが下がる
とは判断しません。
確認するのは、
キャッシュ可能 データ量
キャッシュヒット
バイト ヒット
ビューワー トラフィック
オリジントラフィック
CloudFront 料金
です。
23. リージョン間通信は配置そのものを見直す
例えば、
リージョン A
アプリケーション
↓
毎回Inter-Region
↓
リージョン B
データ
という大量通信がある場合、
Inter-Region単価
だけを最適化するのではなく、
アプリケーションをデータへ寄せられないか
を確認します。
つまり、
コンピューティング
+
データ
を可能な範囲で同じリージョンへ配置します。
24. 「データを動かす」か「処理を動かす」かを比較する
大量データを毎回別リージョンへ送るより、
処理プログラム
数GB
をデータのリージョンへ配置して、
処理結果
数MB
だけ返した方が効率的な場合があります。
例えば、
生データ データ
10 TB
↓
別リージョンへ転送
↓
結果
100 MB
なら、
10 TBを動かす
より、
コンピューティングをデータの近くへ動かす
ことを評価します。
25. レプリケーションとInter-Region トラフィックを比較する
複数リージョンから、
同じデータ
を何度も読み取る場合は、
リージョン A
データ
↓ 毎回転送
リージョン B
コンシューマー
より、
リージョン A
データ
↓
レプリケーション
↓
リージョン B
レプリカ
リージョンB コンシューマー
↓
ローカル読み取り
が有利になる場合があります。
しかしレプリケーションには、
レプリケーション トラフィック
レプリカ ストレージ
書き込み 同期
などのコストがあります。
そのため、
レプリケーション
=
必ず安い
ではありません。
比較するのは、
継続リモート読み取り コスト
vs
レプリケーション + ストレージ コスト
です。
26. 必要なマルチリージョン アーキテクチャをコストだけで壊さない
例えば、
災害復旧
データ所在地要件
事業継続性
レイテンシ
によってマルチリージョンが必要なら、
Inter-Region料金がある
という理由だけで単一リージョンへ変更できません。
正しい順序は、
必要要件
↓
許容されるアーキテクチャ候補
↓
候補の中でデータ転送を最適化
です。
コスト最適化は、
要件を削る
ことではありません。
27. データ転送モデリングは変更前 / 変更後で行う
アーキテクチャ変更前後を、
変更前
と、
変更後
で比較します。
変更前
送信元
↓
AZ 境界
↓
NAT Gateway
↓
送信先
変更後
送信元
↓
VPC Endpoint
↓
送信先
各候補について、
トラフィック量
×
データ転送 単価
+
トラフィック量
×
データ処理 単価
+
時間料金 / 固定料金
を計算します。
28. 「消える料金」だけを削減額へ入れる
例えば、
NAT Gateway
から一部のトラフィックだけをVPC Endpointへ移しても、NAT Gatewayが残るなら、
NAT Gateway-hour
は削減できません。
この場合の削減額は、
回避できる NAT処理
+
回避できる Inter-AZ
などです。
一方、
すべてのNAT トラフィックがなくなる
↓
NAT Gatewayを削除
できれば、
NAT Gateway-hour
も削減額へ入れられます。
29. 固定費と従量費を分けて損益分岐点を見る
例えばInterface Endpointへの変更では、
Interface Endpoint固定料金
+
エンドポイント処理
が増えます。
一方、
NAT処理
Inter-AZ
などが減ります。
したがって、
追加固定費
<
削減される従量費
となるトラフィック量を求めれば、
損益分岐点
を判断できます。
つまり、
通信量が少ない
↓
固定料金が支配的
通信量が多い
↓
GB単位の差が支配的
になる場合があります。
30. データ転送最適化の比較表
| 現在のコスト要因 | 主な候補 |
|---|---|
| S3 / DynamoDB トラフィックがNAT経由 | Gateway VPC Endpoint |
| 対応AWSサービストラフィックがNAT経由 | Interface VPC Endpointとの総額比較 |
| 別AZのZonal NAT Gatewayを大量利用 | 同一AZ NAT / Regional NAT Gateway |
| 大量の東西 Inter-AZ トラフィック | AZアフィニティ |
| 同一コンテンツをインターネットへ繰り返し送信 | Amazon CloudFront |
| 大量の継続Inter-Region トラフィック | コンピューティング / データのリージョン配置見直し |
| 複数リージョンから同じデータを反復取得 | レプリケーションとの総額比較 |
| Interface EndpointがVPCごとに大量重複 | 中央集約との総額比較 |
31. 代表的なアンチパターン
| アンチパターン | 問題 |
|---|---|
| NAT Gatewayが高いので単価だけを見る | 経路そのものを変更できる可能性を見落とす |
| S3通信もNAT Gatewayへ流し続ける | 無料のGateway Endpointを使える場合がある |
| Interface Endpointなら必ず安いと考える | AZごとの固定料金と処理料金を無視 |
| エンドポイントへ一部移行しただけでNAT時間料金も削減額にする | NATが残れば固定料金も残る |
| 1つのZonal NATへ全AZを集約する | Inter-AZ コストと可用性を見落とす |
| NATを各AZへ置けば必ず最安と考える | 追加固定料金を無視 |
| Regional NAT Gatewayなら1 AZ分の料金と考える | 展開AZごとの料金を無視 |
| Multi-AZをやめてInter-AZをゼロにする | 可用性要件を破壊 |
| Inter-AZ トラフィックはすべて最適化対象と考える | サービス固有の無料例外を見落とす |
| CloudFrontなら必ず安いと考える | キャッシュヒットと配信料金を無視 |
| Inter-Region料金を下げるため無条件にデータ複製 | レプリケーション / ストレージ コストを無視 |
| エンドポイントを中央集約すれば必ず安い | ハブまでの処理 コストを無視 |
32. SAP-C02での判断フロー
現在のトラフィックフローを作る
↓
どこにコストがある?
↓
インターネット
Inter-AZ
Inter-Region
データ処理
時間料金
↓
トラフィック自体を減らせる?
│
├─ 繰り返し配信
│ ↓
│ CloudFront
│
└─ 不要通信
↓
削除
↓
NAT Gatewayを通る
AWSサービストラフィックか?
│
├─ S3 / DynamoDB
│ ↓
│ Gateway Endpoint
│
└─ その他の対応サービス
↓
Interface Endpoint
との総額比較
↓
Zonal NATを
別AZから利用している?
↓
同一AZ NAT
またはRegional NAT
を比較
↓
大量Inter-AZ トラフィック?
↓
AZアフィニティを評価
ただし可用性を維持
↓
大量Inter-Region トラフィック?
↓
コンピューティング / データの
リージョン配置を見直す
↓
反復 リモート読み取り?
↓
レプリケーションとの
総額比較
↓
変更前 / 変更後の
データ転送モデルを作る
↓
実際に消える料金だけを
削減額へ入れる
↓
要件を満たす候補の中から
総ネットワークコストが低い
アーキテクチャを選択
まとめ
ネットワークアーキテクチャによるデータ転送コスト最適化では、
料金が発生している
と確認するだけでは不十分です。
まず、
そのトラフィックは
本当にその経路を
通る必要があるか
を確認します。
Amazon S3 / DynamoDBへの通信では、
Gateway VPC Endpoint
によってNAT Gatewayを経路から外せる場合があります。
その他の対応AWSサービスでは、
Interface VPC Endpoint
と、
NAT Gateway
の、
時間料金
+
データ処理
+
データ転送
を比較します。
NAT Gatewayでは、
同一AZのZonal NAT
または
Regional NAT Gateway
を使ってAZ間トラフィックを減らせないか確認します。
大量の東西 トラフィックでは、
AZアフィニティ
を使い、高可用性を維持しながら同一AZへ通信を寄せます。
インターネットへ同じデータを繰り返し配信する場合は、
Amazon CloudFront
によってオリジントラフィックを減らします。
Inter-Region トラフィックでは、
データを動かす
だけではなく、
コンピューティングをデータへ寄せる
ことも検討します。
最後に、
変更前 コスト
vs
変更後 コスト
を比較し、
実際に消えるコスト
だけを削減額として計算します。
主要AWS公式資料
- AWS Certified Solutions Architect - Professional SAP-C02 Exam Guide — Task 2.6
- AWS Well-Architected Framework — COST08-BP01 Perform data transfer modeling
- AWS Well-Architected Framework — COST08-BP02 Select components to optimize data transfer cost
- AWS Well-Architected Framework — COST08-BP03 Implement services to reduce data transfer costs
- Amazon VPC — Gateway endpoints
- Amazon VPC — AWS PrivateLink pricing
- Amazon VPC — NAT Gateway pricing
- Amazon VPC — Regional NAT gateways
- Amazon CloudFront — Pricing
- Elastic Load Balancing — Availability Zone Affinity / Cross-zone Load Balancing