Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AZ同士の"陰口"が、クラウド費用を静かに食い潰す

By Hili ParyentiMay 5, 20254 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

クラウドにまつわる小ネタクイズです。目に見えず、音もなく、毎月何万ドル(時には何十万ドル)ものAWS請求を静かに吸い上げていくものは何でしょう?

いいえ、放置されたEBSボリュームではありません(もちろん、それも掃除しておきましょう)。

正解はAZ間データ転送。想像以上に厄介な存在です。

AZ同士のおしゃべりが招く高額請求

AWSでは、同一リージョン内のアベイラビリティゾーン(AZ)間でデータが行き来すると、二重に課金されます。送信元AZから出るデータと、宛先AZに入るデータの両方に料金が発生する仕組みです。料金は各方向でGBあたり2セント。大規模アーキテクチャではあっという間に積み上がります。

マルチAZのデータベースや高可用性構成なら、この課金にも納得できるでしょう。しかし本当の問題はここからです。AZ間データ転送の大半は、意図しない発生・不要なもの・単なる誤解に基づくものなのです。

AZ間トラフィックが膨れ上がる典型的な原因:

  • マイクロサービスが気づかないうちにAZをまたいで通信している。
  • 異なるAZに配置されたEKSノードが区別なく使われている。
  • ロードバランサーがゾーン間で予測不能にトラフィックを振り分けている。
  • ステートフルなサービスがAZアフィニティを無視している。
  • 2019年から引き継いだYAMLファイルを、動くことを祈りながら使い続けている。

こちらの秀逸な記事では、あるチームが徹底的に調査した結果、AZ間データ転送の80%以上が回避可能だったことが判明しました。深掘りするまで、まったく見えていなかったのです。

なぜAZ間コストの削減はこれほど難しいのか?

これらのコストはAWS Cost and Usage Report(CUR)で確認できます。以下のような使用タイプで表示されます。

  • AWS:DataTransfer-Regional-Bytes
  • AWS:DataTransfer-Regional-Bytes-Out
  • BoxUsage::DataTransfer-Out-Bytes

例えば、以下のようになります。

ところが厄介なのは、スプレッドシートで明細を眺めても、その原因がまったく特定できないという点です。

EC2インスタンスIDといったマシン単位の情報は得られますが、Kubernetes上でモダンなworkloadsを動かしている場合、特定のPod・ネームスペース・workloadまでコストを遡るのは至難の業です

このギャップを埋めようとVPC Flow Logsを使うチームもあります。IP間通信のメタデータを取得できるため一定の効果はありますが、インフラ全体でFlow Logsを常時取得するコストは非常に高額で、皮肉にも調査対象のAZ間転送よりも高くつくケースすらあります

たとえVPC Flow Logsのコストを許容できたとしても、もうひとつ問題があります。

Flow Logsから得られるのは生のネットワークデータであり、コンテキストではありません。ログの例は以下の通りです。

手元にはIP間トラフィックの山が積み上がりますが、これは完成図のないパズルのピースを箱ごと渡されるようなもの。ログを補強し、IPをインスタンスに紐づけ、クラウドのインベントリと突き合わせ、各IPがどのworkloadやコンテナに属しているかを特定し、そのうえでトラフィックパターンの裏にあるビジネスロジックを読み解くという重労働が丸ごと残ります。

Kubernetes環境ではさらに事態は悪化します。動的なIP、短命なPod、オートスケーリンググループ、サービスメッシュ……まさにカオスです。たった1つのマイクロサービスがAZをまたいで通信しているかを突き止めるだけのために、何時間(下手すれば何日)ものエンジニアリング工数、チーム横断のタグ付け運用、そして本格的なログ相関ツール群が必要になります。

答えにたどり着く頃には、クラウド請求はすでに膨れ上がった後です。

追跡すらできないコストと、どう戦えばよいのでしょうか?

Attribute™のソリューション:隠れたコストに光を当てる

Attribute™は、目に見えないものを可視化する独自のソリューションを開発しました。

当社のeBPFセンサーは、workloadsから出ていくすべてのバイトを送信元IPから宛先IPまで追跡し、データ転送の背後にあるストーリーを再構築します。しかも、それだけでは終わりません。

スマートAZ検出エンジン

単にトラフィックを見るのではなく、意味を理解します。当社のエンジンはすべてのIPをクラウドのルーティングテーブルと照合し、通信が次のどれに該当するかを判定します。

  • 同一AZ内
  • 同一リージョン内の2つのAZ間
  • 異なるリージョン間
  • あるいはインターネットへの直行(お待ちかねのエグレス料金です!)

NATゲートウェイやELB、その他のネットワーク中継を経由してデータがこっそり抜け出している場合も、しっかり捕捉します。

まとめると、eBPFセンサー独自のデータとCURのコスト項目を組み合わせることで、workloadレベルで接続ごと・IPごとの正確なAZ間コストを把握できるのです。

インサイトからアクションへ

問題が見えたら、次は解決です。同一AZへのサービス集約、Kubernetesのアフィニティルール調整、フローの再設計といった選択肢の評価をサポートします。

Attribute™があれば、可視性・明快さ・制御性を手に入れ、不要なAZ間コストを削減できます。多くの場合、50〜80%のコスト削減が可能です

最初の一歩を踏み出す

見えないものは直せません。

まずはAZ間トラフィックが実際にどこへ向かい、なぜ発生しているのかを突き止めることから始めましょう。そして、コスト削減のアクションへつなげていきます。Attribute™が最初から最後まで伴走します。

デモを予約するして、ネットワークコストという共通言語で話し始めましょう。