クライアントサイド負荷分散で毎秒100万リクエストを処理
Client-side load balancing at a million requests per second
ZalandoのProduct Read API (PRAPI) は、毎秒数百万リクエストを処理し、ミリ秒単位の低レイテンシを実現している。従来、APIのレイテンシ問題の原因特定が困難だったのは、共有エッジイングレインロードバランサー(Skipper)が内部トラフィックも処理していたためである。この問題を解決するため、PRAPIは内部トラフィックの負荷分散をクライアントサイド負荷分散(CSLB)に移行した。CSLBはSkipperと同じ一貫性ハッシュルーティングアルゴリズム(xxHash64)と仮想ノードリングを実装し、ハッシュパリティを確保することでキャッシュの分割やDynamoDB負荷の増加を防いだ。KubernetesのInformerを利用してPodの存在をリアルタイムに検知し、リングを動的に更新する。また、デプロイパイプラインの改善により、迅速かつ安全なロールアウトが可能になった。CSLBの導入により、毎秒100万リクエスト以上がSkipperからオフロードされ、レイテンシの低下と安定性の向上が実現した。さらに、Nリングフェードインや、 in-flightリクエスト数ではなく「占有率(occupancy)」を負荷指標とするバウンドロード機構を導入し、スケールアップ時のレイテンシスパイクやPod間の負荷不均衡を解消した。これにより、Podの稼働率が改善し、インフラコストの削減にも繋がった。
- ZalandoのPRAPIチームがクライアントサイド負荷分散(CSLB)を実装し、毎秒100万リクエスト以上を従来のロードバランサー(Skipper)からオフロードした。
- 占有率(occupancy)を負荷指標とするバウンドロード機構を導入し、Pod間の負荷不均衡を解消、インフラコスト削減を実現した。
本記事はZalandoのPRAPIチームがクライアントサイド負荷分散(CSLB)を実装し、毎秒100万リクエスト以上を従来のロードバランサー(Skipper)からオフロードした事例である。大規模eコマースのバックエンドにおいて、内部トラフィックの負荷分散をクライアントサイドに移すことでレイテンシ改善とインフラコスト削減を両立した点は、同様のスケール課題を抱える多くのテック企業にとって参考になる。特に、占有率(occupancy)ベースの負荷制御やNリングフェードインといった独自の工夫が実運用に組み込まれている点に実用性が認められる。ただし、本件はZalandoの社内インフラ改善事例であり、新規技術の製品化や市場創出に直結するものではないため、短期的な投資インパクトは限定的と判断する。