Migrating Millions of Concurrent Websockets to Envoy
Mar 15, 2021

Summary
This post details the migration of Slack's websocket load balancing tier from HAProxy to Envoy Proxy. It outlines the motivations for the migration, including Envoy's hot restart capabilities and advanced load balancing features (zone-aware routing, outlier detection, panic routing). The post describes the process of generating Envoy configurations using Chef libraries and custom resources, the testing and validation methods employed (curl, debug logging, admin interface, JSON logs), and the production rollout strategy using weighted DNS routing via NS1 and NLBs. The migration aimed to improve operability, standardize on a single proxy technology, and leverage Envoy's advanced features.