Étude de cas IA et SaaS

Notre SaaS de transcription passé de Rails à Rust en sept jours, sans déconnecter personne

SoundScript.AI transforme l'audio en texte dans 99 langues. Son application Rails faisait tourner le site, les tâches de fond et Redis sur un seul petit serveur et atteignait ses limites. Nous l'avons réécrite en Rust, vérifiée page par page face à l'ancienne application et basculé la production dans une fenêtre d'environ quatre minutes.

Client
Envixo
Plateforme
Application web et API mobile
Secteur
IA et SaaS
Lancement
2026

Le défi

L'application Rails 8.1 fonctionnait, mais Puma, Sidekiq, Redis et PostgreSQL partageaient un serveur de 1.9 GB de mémoire. En charge, les pages mettaient des secondes à répondre, et en juillet 2026 les tâches de fond sont restées bloquées cinq jours.

Avant: Puma, Sidekiq, Redis et PostgreSQL sur un seul serveur de 1.9 GB de mémoire
Après: Services web et worker sur Kubernetes avec PostgreSQL 18 managé, et sans Redis : files d'attente, mises à jour en direct et limites de débit tournent sur PostgreSQL
Avant: Une médiane de 2.7 s sur les pages publiques à 100 connexions simultanées
Après: Une médiane de 11.7 ms sur le même test
Avant: Des exports PDF illisibles en arabe, hébreu, persan, ourdou et en écriture devanagari
Après: Des PDF composés avec Typst et les polices Noto, avec un rendu correct des écritures et du texte de droite à gauche
Avant: Des webhooks de paiement et de transcription qui acceptaient des événements non signés quand un secret manquait
Après: Chaque signature de webhook vérifiée, toujours
Avant: 937 MB de mémoire au pic
Après: 102 MB de mémoire au pic

Ce que nous avons créé

Une réécriture complète du produit, pas un prototype : le site en 99 langues, le pipeline de transcription, les résumés et le chat IA, les exports, la facturation, l'API mobile et la console d'administration.

Mêmes URL et mêmes contrats

Chaque page localisée, chemin de webhook, point d'entrée de l'API mobile et bucket de stockage est resté identique : liens, applications et intégrations ont continué de fonctionner.

Personne n'a été déconnecté

L'application Rust lit le cookie de session de Rails et les empreintes de mots de passe existantes : les utilisateurs sont restés connectés pendant la bascule.

Données vérifiées, pas supposées

Après la copie finale, les nombres de lignes et les sommes de contrôle des comptes, transcriptions, usages et abonnements ont été comparés entre l'ancienne et la nouvelle base : identiques.

Un banc de test de parité

1,126 requêtes de pages sur 11 types d'utilisateur et quatre langues, 39 envois de formulaires et 343 requêtes d'administration ont été rejoués sur les deux applications et comparés.

Tout le produit

Transcription avec Whisper et Azure, statut en direct, résumé et chat IA, exports TXT, SRT, DOCX et PDF, facturation Stripe et Google Play, et une console d'administration.

Un retour arrière sûr

L'ancien serveur est resté intact deux semaines après la bascule : un retour arrière n'était qu'un changement de DNS.

Résultats techniques

Mesuré lors d'un test de charge avant le lancement, sur une machine partagée : les valeurs absolues sont indicatives, les rapports tiennent.

230x
Médiane plus rapide en charge
9x
Mémoire en moins au pic
880
Tests automatisés exécutés à chaque modification
7
Jours du premier commit à la production
  • Production basculée dans une fenêtre d'environ quatre minutes
  • Inscription, envoi, statut en direct, téléchargements, IA, API et administration vérifiés en production après la bascule
  • Le test de charge a révélé un bug du pool de connexions, corrigé avant le lancement
  • 99 langues, y compris des PDF de droite à gauche

Technologie

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

Besoin d'un logiciel conçu autour de votre activité ?

Intégrations, outils internes, applications et plateformes, créés sur commande par des ingénieurs seniors qui pilotent des agents IA. Dites-nous ce dont vous avez besoin et nous vous montrerons comment nous le construirions.