Recuerdo el día en que nuestro pipeline de análisis de sentimientos basado en un solo proceso colapsó debido a una oleada de solicitudes. Los registros eran preocupantes: los grupos de hilos se saturaron, los trabajos en lote se detuvieron y la memoria se disparó. Fue entonces cuando decidimos dejar atrás nuestro diseño monolítico y reconstruirlo todo desde cero. En esta publicación te mostraremos cómo en Q2BSTUDIO transformamos nuestra arquitectura utilizando microservicios, Kubernetes, escalado automático con GPU y un pipeline ETL en streaming para procesar grandes volúmenes de datos sociales en tiempo casi real.
Los monolitos funcionan bien, hasta que dejan de hacerlo
Inicialmente, nuestro sistema de análisis de sentimientos era un único código que gestionaba la ingesta de datos, la tokenización, la inferencia del modelo, el registro de datos y el almacenamiento. Funcionó bien hasta que el tráfico creció y nos obligó a sobredimensionar cada componente. Las actualizaciones eran aún más problemáticas, ya que teníamos que desplegar toda la aplicación solo para realizar ajustes en el modelo de inferencia.
Con la migración a microservicios en Q2BSTUDIO, desacoplamos cada función en servicios independientes:
- API Gateway: Maneja autenticación y enrutamiento de solicitudes.
- Procesamiento de texto: Optimización de limpieza de texto y tokenización.
- Servicio de inferencia con GPU: Donde ocurre el análisis de sentimientos.
- Almacenamiento de datos: Registro de resultados y logs.
- Monitoreo: Supervisión con el menor impacto posible.
Con esta estructura, ahora podemos escalar cada componente de manera independiente, aumentando el rendimiento justo donde es necesario.
Containerización para inferencia con GPU
Uno de los primeros pasos fue la containerización de nuestro servicio de inferencia con GPUs. Utilizamos una imagen base con controladores CUDA y bibliotecas necesarias para la aceleración, lo que nos permite desplegar nuestra solución en entornos de orquestación sin fricciones.
Kubernetes: Escalado automático con GPU
Gracias a Kubernetes, desplegamos y escalamos cada microservicio de forma eficiente. Nuestros pods de inferencia están vinculados a nodos con GPU y pueden aumentar automáticamente en función de la utilización de la tarjeta gráfica. Cuando el uso de la GPU alcanza un umbral del 70%, Kubernetes genera nuevos pods, asegurando un rendimiento óptimo sin costos innecesarios en períodos de baja demanda.
Logrando 50K RPS con inferencia en lotes y E/S asíncrona
Para maximizar el aprovechamiento de los recursos, agrupamos múltiples solicitudes en lotes antes de enviarlas para inferencia en la GPU. Esto reduce los tiempos de espera y mejora la eficiencia del sistema.
Nuestro servidor de inferencia basado en FastAPI y TensorRT realiza procesamiento en paralelo, manejando miles de solicitudes por segundo de manera fluida.
ETL en tiempo real con Kafka, Spark y almacenamiento en la nube
En Q2BSTUDIO también implementamos un pipeline de ingesta de datos basado en Kafka y Spark para manejar altos volúmenes de datos en tiempo real. Kafka actúa como nuestro broker de mensajes, Spark realiza transformaciones en el flujo de datos y almacenamos los resultados en sistemas escalables en la nube.
Con este enfoque, procesamos grandes volúmenes de información en cuestión de segundos, extrayendo valor de los datos en tiempo real.
Lecciones aprendidas y optimizaciones
Durante la implementación encontramos desafíos como la gestión de memoria en GPU y la configuración óptima de los tamaños de los lotes de inferencia. Ajustar estos parámetros fue clave para lograr un balance entre rendimiento y latencia en diferentes escenarios de uso.
Conclusión
En Q2BSTUDIO logramos transformar una arquitectura monolítica en un sistema altamente eficiente basado en microservicios y procesamiento en tiempo real. Gracias a la escalabilidad con Kubernetes, el procesamiento optimizado con GPUs y la arquitectura de streaming, ahora manejamos cargas extremas con facilidad.
Si tu empresa enfrenta problemas de escalabilidad similares, es el momento de considerar una evolución hacia microservicios y flujo de datos en tiempo real. En Q2BSTUDIO ofrecemos soluciones avanzadas de desarrollo y servicios tecnológicos para optimizar el rendimiento de las plataformas digitales más exigentes.