最近の動きとして、DoorDash社はクラウドインフラのコストを大幅に最適化した。同社は、マイクロサービス・アーキテクチャに移行する際、AZをまたぐデータ転送コストの増加に直面した。このコストを大幅に削減するため、DoorDash社はEnvoyベースのサービスメッシュに、セルベースアーキテクチャの利点を生かしたゾーン・アウェア・ルーティングを導入した。
DoorDash社がEnvoyベースのサービスメッシュにゾーン認識ルーティングを導入したことは、クラウド・インフラのコスト削減に不可欠だった。この実装により、DoorDash社は同じアベイラビリティゾーン(AZ)内のトラフィックを効率的に誘導し、コストのかかるAZをまたぐデータ転送を最小限に抑えられた。
Envoyのゾーン認識ルーティング機能により、発信側サービスは同じAZ内の着信側サービスにトラフィックを誘導することを好むため、AZをまたぐデータ転送コストを削減できる。下図の 「Before」は、単純なラウンドロビン・ロードバランサーを使ってAZをまたいでポッド同士が通信している様子を示しており、追加料金が発生している。一方、「After」の図は、ゾーンを意識したルーティングによって、同じゾーン内のサービスを優先する方法を示している。
ポッド間のシンプルなラウンドロビン負荷分散*(*ソース)
ポッド間のゾーン認識ルーティング**(ソース)
ゾーン認識ルーティングを可能にするために、DoorDash社は自社でカスタムしたサービス・メッシュ・コントロール・プレーンを変更し、Envoyに各ノードのAZ情報を提供するようにした。
resources:
- "@type": type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment
cluster_name: payment-service.service.prod.ddsd
endpoints:
- locality:
zone: us-west-2a
lb_endpoints:
- endpoint:
address:
socket_address:
address: 1.1.1.1
port_value: 80
- locality:
zone: us-west-2b
lb_endpoints:
- endpoint:
address:
socket_address:
address: 2.2.2.2
port_value: 80
- locality:
zone: us-west-2c
lb_endpoints:
- endpoint:
address:
socket_address:
address: 3.3.3.3
port_value: 80
エンドポイント・ディスカバリー・レスポンスの例 - 追加されたローカリティ情報には注意が必要(出典)。
DoorDash社のセルベースアーキテクチャは、この移動の成功に大きく貢献した。セルベースアーキテクチャーとは「船の隔壁の概念に由来し、垂直の仕切り壁が船内を自己完結型の水密区画に細分化している。ソフトウェアアーキテクトは、複雑なシステムにおいてこのパターンを再現し、故障の隔離を可能にしている。障害隔離された境界は、ワークロード内の障害の影響を限られた数のコンポーネントに限定し、境界外のコンポーネントは障害の影響を受けないようにする。
Slackは最近、グレー障害を軽減するためにセルベースアーキテクチャを使用していることを紹介した。
DoorDash社のセルベースアーキテクチャでは、各セルは複数のKubernetesクラスタで構成され、各マイクロサービスは指定されたセル内の1つのクラスタのみに展開される。DoorDash社のエンジニアは、可用性とフォールトトレランスを強化するために、各Kubernetesクラスタを複数のAZに展開した。
セルベースのマルチクラスターデプロイメント*(*出典)
これらのセル内でゾーン・アウェア・ルーティングを有効にすることで、DoorDash社はトラフィックを効果的に局所化し、可用性ゾーンをまたぐデータ転送をさらに削減した。このアプローチは、ネットワーク効率を最適化するだけでなく、システム全体の耐障害性を向上させ、単一セル内の障害の影響を最小限に抑え、DoorDash社のマイクロサービス・エコシステムの堅牢性に貢献した。
著者のHochuen Wong 氏とLevon Stepanian氏は、節約率そのものは公表していない。しかし、同氏らは、「これらのアクションは、DoorDash社のデータ転送コストを大幅に削減した。同氏らは次のように結論付けている。
クラウド・サービス・プロバイダーのデータ転送価格は、当初考えられていたよりも複雑である。正しい効率化ソリューションを構築するためには、時間をかけて価格モデルを理解して検討する必要がある。
AZをまたぐすべてのトラフィックを包括的に理解・把握することは困難である。しかし、さまざまなソースからのネットワーク・バイトのメトリクスを組み合わせることで、ホットスポットを特定できる。
マイクロサービスのコールグラフでホップ数が増えるにつれて、AZをまたいでデータが転送される可能性が高くなり、すべてのホップがゾーンを考慮したルーティングをサポートすることを保証する複雑さが増す。
著者らは、マイクロサービスベースのシステムの所有者が、データ転送コストに注目し、トラフィック管理機能だけでなく、効率化の可能性からもサービスメッシュを検討することを推奨している。