Construyendo un Gateway de LLM en Go: Lo que aprendimos

Descubre las lecciones clave para construir un Gateway de LLM en Go y potencia tus conocimientos en programación. ¡Aprende de forma práctica y efectiva!

martes, 9 de diciembre de 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Construyendo un Gateway de LLM en Go: Lecciones clave

Por que reconstruimos nuestro gateway y nacio Bifrost: hace un a;o enrutábamos peticiones a LLM a traves de LiteLLM como la mayoria. Funcionaba bien a baja escala, pero al llegar al trafico de produccion, con 500 RPS, nuestro gateway se convirtio en cuello de botella. Las latencias p99 se dispararon por encima de 20 segundos y el uso de memoria crecia sin control. La sobrecarga del async en Python nos estaba costando rendimiento. Intentamos optimizar y aumentar hardware sin exito, asi que decidimos reescribir completamente el gateway en Go. El resultado es Bifrost, un proyecto de codigo abierto que prioriza latencia minima y uso eficiente de memoria.

Objetivo de diseno: añadir menos de 50 microsengundos de overhead a cada peticion LLM. Decisiones clave: modelo de goroutine por peticion para evitar la complejidad de async await y el coste de bucles de evento; reenrutado sin copias innecesarias para evitar serializaciones intermedias; y ejecucion asincrona de todo lo que no este en la ruta critica, como logs, metricas y plugins. Estas elecciones mantienen la ruta caliente lo mas ligera posible.

Patrones de rendimiento que aplicamos: reutilizacion de objetos para reducir presion del garbage collector mediante sync.Pool; canales con buffer para gestionar la retropresion y evitar explosion de goroutines en picos de carga; y propagacion de contexto en cada peticion para cancelacion y timeouts, garantizando que no queden procesos colgados. Estas practicas son criticas cuando se busca escalabilidad y estabilidad a alto RPS.

Dise;o del sistema de plugins: necesitamos extensibilidad sin penalizar el rendimiento. Los plugins siguen una interfaz sencilla con hooks antes y despues de procesar la peticion. Por defecto corren en la misma goroutine de la peticion para evitar overhead, y solo lanzan tareas asincronas propias cuando no deben bloquear la respuesta. Esto permite integrar logging avanzado, auditoria o transformaciones sin sacrificar latencia.

Balanceo de carga adaptativo: ajustar pesos dinamicamente segun metricas por clave fue la parte mas desafiante. Monitorizamos latencia y tasa de error por clave y recalculamos pesos de enrutamiento para favorecer proveedores con menor latencia y menor error. Las claves degradadas reciben menos trafico automaticamente, lo que mejora la resiliencia global del sistema.

Observabilidad sin coste: el reto fue capturar cada peticion y respuesta sin añadir latencia. La solucion fue logging asincrono con buffer y escrituras por lotes. Los logs se acumulan en memoria y se escriben periodicamente en bloque, minimizando impacto en la ruta critica y manteniendo trazabilidad completa para debugging y analitica.

Gestion de memoria y optimizaciones: aunque el GC de Go es eficiente, optimizamos asignaciones preasignando slices con capacidad conocida, reutilizando buffers mediante pools y limitando la duracion de goroutines usando contexto para cancelacion. Estas medidas reducen picos de uso de memoria y mantienen latencias estables.

Resultados: tras todas las optimizaciones alcanzamos una sobrecarga en el gateway de 11 microsengundos frente a 600 microsengundos con LiteLLM, redujimos el uso de memoria en alrededor de 68 por ciento, sostenemos 5000 RPS en una sola instancia y mantuvimos latencias p99 por debajo de 1 segundo a 5k RPS. Bifrost se publico desde el primer dia con licencia MIT y el repositorio incluye codigo fuente completo, suite de benchmark, configuracion Docker, guias de produccion y documentacion de arquitectura.

Que hubieramos hecho distinto: empezar con Go desde el principio en lugar de intentar escalar Python, integrar observabilidad desde el diseno y usar intensamente dogfooding para encontrar problemas antes en entornos reales. Estos aprendizajes aplican a cualquier proyecto de infraestructura de alto rendimiento.

Sobre Q2BSTUDIO: somos Q2BSTUDIO, una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Diseñamos soluciones personalizadas, desde aplicaciones a medida hasta plataformas con agentes IA y proyectos de inteligencia de negocio con Power BI. Si buscas servicios de desarrollo de aplicaciones a medida puedes conocer nuestras capacidades en servicios de desarrollo de aplicaciones a medida y si te interesan soluciones de inteligencia artificial para empresas visita nuestras soluciones de inteligencia artificial. Ofrecemos tambien ciberseguridad, pentesting, servicios de automatizacion de procesos y consultoria para desplegar en AWS y Azure.

Contribuir: damos la bienvenida a contribuciones en rendimiento, nuevos proveedores LLM, plugins personalizados y documentacion. Usar y mejorar proyectos open source como Bifrost es una excelente forma de impulsar la innovacion en infrastructures para IA. Keywords: 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.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.