Caso studio AI e SaaS

Il nostro SaaS di trascrizione è passato da Rails a Rust in sette giorni, senza disconnettere nessuno

SoundScript.AI trasforma l'audio in testo in 99 lingue. La sua applicazione Rails faceva girare il sito, i lavori in background e Redis su un solo piccolo server ed era arrivata al limite. L'abbiamo riscritta in Rust, verificata pagina per pagina contro la vecchia applicazione e abbiamo spostato la produzione in una finestra di circa quattro minuti.

Cliente
Envixo
Piattaforma
App web e API mobile
Settore
AI e SaaS
Lancio
2026

La sfida

L'applicazione Rails 8.1 funzionava, ma Puma, Sidekiq, Redis e PostgreSQL condividevano un server con 1,9 GB di memoria. Sotto carico le pagine rispondevano in diversi secondi e a luglio 2026 i lavori in background sono rimasti bloccati per cinque giorni.

Prima: Puma, Sidekiq, Redis e PostgreSQL su un solo server con 1,9 GB di memoria
Dopo: Servizi web e worker su Kubernetes con PostgreSQL 18 gestito, e senza Redis: code, aggiornamenti in tempo reale e limiti di richieste girano su PostgreSQL
Prima: Una mediana di 2,7 s sulle pagine pubbliche con 100 connessioni simultanee
Dopo: Una mediana di 11,7 ms nello stesso test
Prima: Esportazioni PDF illeggibili in arabo, ebraico, persiano, urdu e nelle scritture devanagari
Dopo: PDF composti con Typst e i font Noto, con il disegno corretto dei caratteri e il testo da destra a sinistra
Prima: Webhook di pagamento e trascrizione che accettavano eventi non firmati quando mancava un segreto
Dopo: Ogni firma dei webhook verificata, sempre
Prima: 937 MB di memoria al picco
Dopo: 102 MB di memoria al picco

Cosa abbiamo realizzato

Una riscrittura completa del prodotto, non un prototipo: il sito in 99 lingue, la pipeline di trascrizione, i riassunti e la chat AI, le esportazioni, la fatturazione, l'API mobile e la console di amministrazione.

Stessi URL e stessi contratti

Ogni pagina localizzata, percorso dei webhook, endpoint dell'API mobile e bucket di archiviazione è rimasto lo stesso, così link, app e integrazioni hanno continuato a funzionare.

Nessuno disconnesso

L'applicazione Rust legge il cookie di sessione di Rails e gli hash delle password esistenti, così gli utenti sono rimasti connessi durante il passaggio.

Dati verificati, non dati per scontati

Dopo la copia finale, il numero di righe e i checksum di account, trascrizioni, consumi e abbonamenti sono stati confrontati tra il vecchio e il nuovo database: identici.

Un banco di prova per la parità

1.126 richieste di pagina per 11 tipi di utente e quattro lingue, 39 invii di form e 343 richieste di amministrazione sono stati ripetuti sulle due applicazioni e confrontati.

Tutto il prodotto

Trascrizione con Whisper e Azure, stato in tempo reale, riassunto e chat AI, esportazioni TXT, SRT, DOCX e PDF, fatturazione con Stripe e Google Play, e una console di amministrazione.

Una via di ritorno sicura

Il vecchio server è rimasto intatto per due settimane dopo il passaggio, così il rollback era un cambio DNS.

Risultati tecnici

Misurato in un test di carico prima del lancio, su una macchina condivisa: i numeri assoluti sono indicativi, i rapporti restano validi.

230x
Mediana di risposta più rapida sotto carico
9x
Meno memoria al picco
880
Test automatici eseguiti a ogni modifica
7
Giorni dal primo commit alla produzione
  • Produzione spostata in una finestra di circa quattro minuti
  • Registrazione, caricamento, stato in tempo reale, download, AI, API e amministrazione verificati in produzione dopo il passaggio
  • Il test di carico ha trovato un bug nel pool di connessioni, risolto prima del lancio
  • 99 lingue, compresi i PDF da destra a sinistra

Tecnologia

  • Rust
  • axum
  • PostgreSQL
  • Typst
  • OpenAI Whisper
  • Azure Speech
  • Stripe
  • Kubernetes

Ti serve un software costruito intorno alla tua attività?

Integrazioni, strumenti interni, app e piattaforme, realizzati su commessa da ingegneri senior che guidano agenti AI. Dicci di cosa hai bisogno e ti mostreremo come lo realizzeremmo.