Kundcase AI och SaaS

Vår SaaS för transkribering flyttade från Rails till Rust på sju dagar, utan att någon loggades ut

SoundScript.AI gör ljud till text på 99 språk. Dess Rails-app körde webbplatsen, bakgrundsjobben och Redis på en liten server och nådde sina gränser. Vi skrev om den i Rust, kontrollerade den sida för sida mot den gamla appen och bytte produktion i ett fönster på runt fyra minuter.

Kund
Envixo
Plattform
Webbapp och mobil-API
Bransch
AI och SaaS
Lanserad
2026

Utmaningen

Rails 8.1-appen fungerade, men Puma, Sidekiq, Redis och PostgreSQL delade en server med 1,9 GB minne. Under belastning tog sidorna sekunder att svara, och i juli 2026 frös bakgrundsjobben i fem dagar.

Före: Puma, Sidekiq, Redis och PostgreSQL på en server med 1,9 GB minne
Efter: Web- och workertjänster på Kubernetes med hanterad PostgreSQL 18, och ingen Redis: köer, liveuppdateringar och hastighetsgränser körs på PostgreSQL
Före: En median på 2,7 s på publika sidor vid 100 samtidiga anslutningar
Efter: En median på 11,7 ms i samma test
Före: PDF-exporter oläsliga i arabisk, hebreisk, persisk, urdu och devanagarisk skrift
Efter: PDF:er satta med Typst och Noto-fonter, med korrekt teckenformning och text från höger till vänster
Före: Webhookar för betalning och transkribering som tog emot osignerade händelser när en hemlighet saknades
Efter: Varje webhook-signatur verifierad, alltid
Före: 937 MB minne vid toppen
Efter: 102 MB minne vid toppen

Det här byggde vi

En fullständig omskrivning av produkten, inte en prototyp: webbplatsen på 99 språk, transkriberingskedjan, AI-sammanfattningar och chatt, exporter, fakturering, mobil-API:et och adminkonsolen.

Samma URL:er och kontrakt

Varje lokaliserad sida, webhook-väg, endpoint i mobil-API:et och lagringsutrymme förblev detsamma, så länkar, appar och integrationer fortsatte fungera.

Ingen loggades ut

Rust-appen läser Rails-sessionskakan och de befintliga lösenordshasharna, så användarna förblev inloggade genom bytet.

Data verifierad, inte förutsatt

Efter den sista kopieringen jämfördes antal rader och checksummor för konton, transkriptioner, användning och prenumerationer mellan den gamla och den nya databasen: identiska.

En testrigg för paritet

1 126 sidanrop över 11 typer av användare och fyra språk, 39 formulärinskick och 343 adminanrop spelades upp mot båda apparna och jämfördes.

Hela produkten

Transkribering med Whisper och Azure, livestatus, AI-sammanfattning och chatt, export till TXT, SRT, DOCX och PDF, fakturering via Stripe och Google Play, och en adminkonsol.

En säker väg tillbaka

Den gamla servern stod kvar orörd i två veckor efter bytet, så en rollback var en DNS-ändring.

Tekniska resultat

Mätt i ett belastningstest före lansering, på en delad maskin: de absoluta talen är vägledande, förhållandena håller.

230x
Snabbare median under belastning
9x
Mindre minne vid toppen
880
Automatiska tester vid varje ändring
7
Dagar från första commit till produktion
  • Produktionen byttes i ett fönster på runt fyra minuter
  • Registrering, uppladdning, livestatus, nedladdningar, AI, API och admin kontrollerade i produktion efter bytet
  • Belastningstestet hittade en bugg i anslutningspoolen, rättad före lansering
  • 99 språk, inklusive PDF:er från höger till vänster

Teknik

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

Behöver du mjukvara byggd kring din verksamhet?

Integrationer, interna verktyg, appar och plattformar, byggda på beställning av seniora ingenjörer som styr AI-agenter. Berätta vad du behöver så visar vi hur vi skulle bygga det.