Netflixの信頼性を高めるためのサービスレベル優先の負荷分散
Netflixは、ユーザー体験とシステムの耐久性を向上させるために、サービスレベルの負荷シェディング技術を導入しました。この技術は、同じサービスの非クリティカルなプリフェッチリクエストよりもクリティカルなユーザーが開始したリクエストを優先します。PlayAPIというクリティカルなバックエンドサービスのConcurrency Limiterでパーティション分割を実装することで、100%のスループットをクリティカルなリクエストに割り当て、余剰の容量を非クリティカルなリクエストに使用します。この優先付けにより、トラフィックのピークや高レイテンシーの状況下でもユーザーが開始したリクエストが高可用性を維持できます。このアプローチの成功が、サービスの優先順位を定義するための汎用的なライブラリの開発につながりました。このライブラリは、CPUの使用率をシステムの負荷の尺度として使用し、ユーザー体験を維持し、自動スケーリングの時間を提供するために、低優先度のトラフィックを段階的にシェディングします。実験結果によると、このアプローチは、過剰な負荷条件下で非クリティカルかつクリティカルなトラフィックを効果的にシェディングし、合理的なレイテンシと安定したスループットを維持します。Netflixは、ユーザー体験を悪化させたり、システムの不安定さを招く「no shedding」や「congestive fail」などのアンチパターンを避けることが重要であると強調しています。