Recordo el dia en què el nostre pipeline d'anàlisi de sentiments basat en un sol procés va col·lapsar a causa d'una onada de sol·licituds. Els registres eren preocupants: els grups de fils es van saturar, els treballs per lots es van aturar i la memòria es va disparar. Va ser llavors quan vam decidir deixar enrere el nostre disseny monolític i reconstruir-ho tot des de zero. En aquesta publicació et mostrarem com a Q2BSTUDIO vam transformar la nostra arquitectura utilitzant microserveis, Kubernetes, escalat automàtic amb GPU i un pipeline ETL en streaming per processar grans volums de dades socials en temps gairebé real.
Els monòlits funcionen bé, fins que deixen de fer-ho
Inicialment, el nostre sistema d'anàlisi de sentiments era un únic codi que gestionava la ingesta de dades, la tokenització, la inferència del model, el registre de dades i l'emmagatzematge. Va funcionar bé fins que el trànsit va créixer i ens va obligar a sobredimensionar cada component. Les actualitzacions eren encara més problemàtiques, ja que havíem de desplegar tota l'aplicació només per fer ajustos al model d'inferència.
Amb la migració a microserveis a Q2BSTUDIO, vam desacoblar cada funció en serveis independents:
- API Gateway: Gestiona autenticació i encaminament de sol·licituds.
- Processament de text: Optimització de neteja de text i tokenització.
- Servei d'inferència amb GPU: On ocorre l'anàlisi de sentiments.
- Emmagatzematge de dades: Registre de resultats i logs.
- Monitoratge: Supervisió amb el menor impacte possible.
Amb aquesta estructura, ara podem escalar cada component de manera independent, augmentant el rendiment just on és necessari.
Contenidorització per a inferència amb GPU
Un dels primers passos va ser la contenidorització del nostre servei d'inferència amb GPUs. Utilitzem una imatge base amb controladors CUDA i biblioteques necessàries per a l'acceleració, cosa que ens permet desplegar la nostra solució en entorns d'orquestració sense friccions.
Kubernetes: Escalat automàtic amb GPU
Gràcies a Kubernetes, despleguem i escalem cada microservei de forma eficient. Els nostres pods d'inferència estan vinculats a nodes amb GPU i poden augmentar automàticament en funció de la utilització de la targeta gràfica. Quan l'ús de la GPU arriba a un llindar del 70%, Kubernetes genera nous pods, assegurant un rendiment òptim sense costos innecessaris en períodes de baixa demanda.
Aconseguint 50K RPS amb inferència per lots i E/S asíncrona
Per maximitzar l'aprofitament dels recursos, agrupem múltiples sol·licituds en lots abans d'enviar-les per a inferència a la GPU. Això redueix els temps d'espera i millora l'eficiència del sistema.
El nostre servidor d'inferència basat en FastAPI i TensorRT realitza processament en paral·lel, gestionant milers de sol·licituds per segon de manera fluida.
ETL en temps real amb Kafka, Spark i emmagatzematge al núvol
A Q2BSTUDIO també vam implementar un pipeline d'ingesta de dades basat en Kafka i Spark per gestionar alts volums de dades en temps real. Kafka actua com el nostre broker de missatges, Spark realitza transformacions en el flux de dades i emmagatzemem els resultats en sistemes escalables al núvol.
Amb aquest enfocament, processem grans volums d'informació en qüestió de segons, extraient valor de les dades en temps real.
Lliçons apreses i optimitzacions
Durant la implementació vam trobar desafiaments com la gestió de memòria a la GPU i la configuració òptima de les mides dels lots d'inferència. Ajustar aquests paràmetres va ser clau per aconseguir un equilibri entre rendiment i latència en diferents escenaris d'ús.
Conclusió
A Q2BSTUDIO vam aconseguir transformar una arquitectura monolítica en un sistema altament eficient basat en microserveis i processament en temps real. Gràcies a l'escalabilitat amb Kubernetes, el processament optimitzat amb GPUs i l'arquitectura de streaming, ara gestionem càrregues extremes amb facilitat.
Si la teva empresa s'enfronta a problemes d'escalabilitat similars, és el moment de considerar una evolució cap a microserveis i flux de dades en temps real. A Q2BSTUDIO oferim solucions avançades de desenvolupament i serveis tecnològics per optimitzar el rendiment de les plataformes digitals més exigents.




