客户案例 AI 与 SaaS

我们的转写 SaaS 七天内从 Rails 迁到 Rust,没有人被强制退出登录

SoundScript.AI 能把音频转成 99 种语言的文字。它的 Rails 应用把网站、后台任务和 Redis 都挤在一台小服务器上,已经触到上限。我们用 Rust 重写了它,逐页与旧应用比对,并在大约四分钟的窗口内完成了生产环境切换。

客户
Envixo
平台
Web 应用与移动端 API
行业
AI 与 SaaS
上线
2026

挑战

这个 Rails 8.1 应用能用,但 Puma、Sidekiq、Redis 和 PostgreSQL 共用一台只有 1.9 GB 内存的服务器。负载一高,页面要好几秒才响应;2026 年 7 月,后台任务更是卡死了五天。

之前: Puma、Sidekiq、Redis 和 PostgreSQL 挤在一台 1.9 GB 内存的服务器上
之后: Web 与 worker 服务运行在 Kubernetes 上,配托管的 PostgreSQL 18,并且不再使用 Redis:队列、实时更新和限流都跑在 PostgreSQL 上
之前: 100 个并发连接下,公开页面的中位数为 2.7 s
之后: 同一测试下中位数 11.7 ms
之前: 导出的 PDF 在阿拉伯文、希伯来文、波斯文、乌尔都文和天城文中无法阅读
之后: 用 Typst 和 Noto 字体排版的 PDF,字形正确,从右到左的文本也正常
之前: 缺少密钥时,支付和转写的 webhook 会接受未签名的事件
之后: 每个 webhook 签名都会校验,始终如此
之前: 峰值内存 937 MB
之后: 峰值内存 102 MB

我们构建了什么

这是产品的彻底重写,不是原型:99 种语言的网站、转写流水线、AI 摘要与对话、各类导出、计费、移动端 API 和管理控制台。

相同的 URL 与接口约定

每个本地化页面、webhook 路径、移动端 API 接口和存储桶都保持原样,因此链接、应用和集成照常工作。

没有人被退出登录

Rust 应用会读取 Rails 的会话 cookie 和原有的密码哈希,所以用户在切换过程中始终保持登录。

数据经过核验,而非想当然

最后一次复制完成后,我们比对了新旧数据库中账号、转写稿、用量和订阅的记录条数与校验和:完全一致。

一套对等性测试装置

涵盖 11 类用户、四种语言的 1,126 次页面请求,39 次表单提交和 343 次管理后台请求,在两个应用上重放并逐一比对。

整个产品

用 Whisper 和 Azure 转写,实时状态,AI 摘要与对话,TXT、SRT、DOCX 和 PDF 导出,Stripe 与 Google Play 计费,以及一个管理控制台。

一条安全的退路

切换后旧服务器原封不动保留了两周,因此回滚只需改一次 DNS。

工程成果

上线前在一台共享机器上做压力测试测得:绝对数值仅供参考,比例关系成立。

230x
负载下响应中位数提速
9x
峰值内存降幅
880
每次改动都运行的自动化测试
7
从第一次提交到上线生产的天数
  • 生产环境在大约四分钟的窗口内完成切换
  • 切换后在生产环境逐一验证了注册、上传、实时状态、下载、AI、API 和管理后台
  • 压力测试发现了一个连接池缺陷,上线前已修复
  • 99 种语言,含从右到左的 PDF

技术

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

需要围绕您的业务打造的软件吗?

集成、内部工具、应用和平台,由指挥 AI 智能体的资深工程师按需定制开发。告诉我们您的需求,我们会向您展示我们将如何构建它。