Cuando el gráfico se puso vertical no empezó con explosiones sino con líneas ascendentes en un tablero que primero celebra y luego aterroriza. CPU al 98% y memoria evaporándose. Conexiones que no dejaban de subir hasta que nos dimos cuenta de que teníamos 100000 WebSockets vivos, no peticiones por segundo sino conexiones persistentes que se negaban a colgar. Crees que entiendes escalado hasta que te enfrentas a WebSockets: no es tanto rendimiento como resistencia emocional. Balancearlos no es dividir y conquistar sino suplicar que no se caiga la conexión de ese único usuario mientras 99999 más arden.

Los WebSockets son esa visita que nunca se va. HTTP aparece pide algo y se va; WebSockets se mudan, mantienen estado, envían heartbeats y esperan que estés disponible. Con HTTP puedes escalar horizontalmente con relativa facilidad; con WebSockets escalas relaciones. Una conexión necesita ser sticky o muere al saltar de nodo. Las sesiones sticky suenan fáciles; en producción son trampas adhesivas: un nodo puede terminar con 20000 usuarios conversadores mientras otros duermen. Round robin provoca saltos y pérdidas. Least connections falla cuando algunas conexiones viven para siempre. IP hashing se rompe con CDNs y proxies. Escalar WebSockets te enseña que cada conexión persistente es una promesa y los servidores son pésimos cumpliéndolas.

HAProxy fue nuestro veterano que resolvió el problema. No es brillante ni tiene marketing pomposo pero hace lo que debe: manejar decenas de miles de conexiones persistentes con estabilidad. Con HAProxy bajó la carga de CPU, la latencia se estabilizó y por primera vez en días la sala respiró. Pero para sacarle jugo hay que ganárselo: ajustar bufsize, maxconn, pinning de hilos, nbproc, ulimit -n te lleva por un camino de negociación que exige paciencia y conocimiento profundo del sistema. No es plug-and-play es plug-and-pray, pero una vez afinado respeta las conexiones y no deja a los usuarios colgando. Si Nginx es el popular del grupo, HAProxy es el que ya optimizó el sonido y sostiene la red con calma.

Nginx era la apuesta obvia: rápido, elegante, el cuchillo suizo de los servidores web. En tráfico corto y estático brilla. Para WebSockets largos y charlatanes, empezó bien: dashboards verdes, métricas calmadas. Luego las conexiones comenzaron a caer en silencio; clientes que se reconectaban sin razón; sockets que vivían pero no transmitían nada. Ajustes en proxy_pass upgrade timeouts buffering y el módulo stream arreglaron cosas temporalmente pero no la raíz. Nginx es excelente sirviendo tráfico efímero y estático pero cuando las conexiones son largas y volátiles se resiente y termina padeciendo por intentar complacer a todos.

La idea de construir nuestro proxy en Go fue tentadora y peligrosa. Al principio funcionó: logs limpios y estabilidad aparente. En una hora aparecieron timeouts misteriosos, goroutines bloqueadas y fugas de memoria. Añadimos métricas y más logs hasta que el proxy pasaba más tiempo documentando su sufrimiento que enroutando paquetes. Encontramos fugas, parcheamos y surgieron nuevas en forma de deadlocks y contención. Al final alguien dijo que habíamos reimplementado HAProxy peor y la realidad golpeó: construir un balanceador fiable no es mover bytes, es manejar timeouts, buffers del kernel, concurrencia y todos los rincones raros del TCP. Nuestro proxy terminó en el cementerio de experimentos porque técnicamente funcionaba pero emocionalmente nos agotó.

La lección que dolió aprender fue que no se trataba del proxy sino de la arquitectura. No estábamos balanceando tráfico sino estado, adhesión y confianza. Cuando rediseñamos pensando en conexiones persistentes todo cambió. Dejar de forzar todo a través de un solo equilibrador, distribuir conexiones en shards, mover estado de sesión a un almacén compartido y diseñar lifecycles de conexión robustos fue crucial. Redis, colas de mensajes y registros de conexiones dejaron de ser extras y pasaron a ser la base. Empezamos a pensar de forma asíncrona, implementamos backpressure y health checks y el sistema dejó de temblar.

Al final nos quedamos con HAProxy porque ofrecía predictibilidad y esa predictibilidad vale oro tras una crisis. Nginx volvió a lo suyo: servir archivos estáticos y enrutar HTTP. El proxy casero quedó archivado como monumento a la confianza excesiva. Lo valioso fue que ese fracaso nos obligó a entender por qué HAProxy funcionaba y a identificar cuellos de botella y suposiciones ocultas. Aprendimos respeto por las capas desde hilos del kernel hasta buffers de socket y por el ingeniero de redes que nos avisó de no tocar tráfico stateful sin estar listos.

En Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida, convertimos esas lecciones en prácticas concretas. Ofrecemos soluciones de software a medida y aplicaciones a medida pensadas desde la arquitectura para soportar tráfico persistente y requisitos de alta disponibilidad. Integramos servicios cloud aws y azure para escalar infraestructuras, diseñamos estrategias de ciberseguridad y pentesting que protegen conexiones críticas y aplicamos inteligencia artificial y agentes IA para mejorar la resiliencia de sistemas en tiempo real. Si buscas desarrollar soluciones robustas visita nuestra página de desarrollo de aplicaciones multiplataforma y para optimizar despliegues en la nube consulta nuestros servicios cloud aws y azure.

Finalmente, escalar WebSockets es más rito de paso que técnica específica. Aprendes paciencia, humildad y el arte de respetar las persistencias. Para proyectos que requieren alta disponibilidad, servicios inteligencia de negocio, integración de power bi, ia para empresas o estrategias de inteligencia artificial aplicada, en Q2BSTUDIO ofrecemos consultoría y desarrollo práctico que une software a medida, ciberseguridad y despliegue en la nube. Si tu reto es mantener 100000 WebSockets o simplemente construir una arquitectura que no te deje despierto, la respuesta no está en un solo proxy sino en un diseño que entienda cómo viven y respiran las conexiones.

Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.