우리 전사 SaaS, 7일 만에 Rails에서 Rust로, 로그아웃된 사용자 없이
SoundScript.AI는 99개 언어로 오디오를 텍스트로 바꿉니다. Rails 앱이 작은 서버 한 대에서 웹사이트와 백그라운드 작업, Redis를 모두 돌리며 한계에 다다랐습니다. Rust로 재작성해 기존 앱과 페이지 단위로 대조한 뒤, 약 4분의 창에서 프로덕션을 전환했습니다.
- 고객
- Envixo
- 플랫폼
- 웹 앱과 모바일 API
- 산업
- AI 및 SaaS
- 출시
- 2026
과제
Rails 8.1 앱은 잘 작동했지만 Puma, Sidekiq, Redis, PostgreSQL이 메모리 1.9 GB 서버 한 대를 함께 썼습니다. 부하가 걸리면 페이지 응답이 몇 초씩 걸렸고, 2026년 7월에는 백그라운드 작업이 닷새간 멈췄습니다.
우리가 만든 것
프로토타입이 아니라 제품 전체의 재작성입니다. 99개 언어 웹사이트, 전사 파이프라인, AI 요약과 채팅, 내보내기, 결제, 모바일 API, 관리자 콘솔까지.
동일한 URL과 인터페이스
모든 현지화 페이지와 웹훅 경로, 모바일 API 엔드포인트, 스토리지 버킷이 그대로여서 링크와 앱, 연동이 계속 작동했습니다.
로그아웃된 사용자 없음
Rust 앱이 Rails 세션 쿠키와 기존 비밀번호 해시를 읽으므로 사용자는 전환 중에도 로그인 상태를 유지했습니다.
데이터는 추측이 아니라 검증
마지막 복사 후 계정, 전사 결과, 사용량, 구독의 행 수와 체크섬을 기존 데이터베이스와 새 데이터베이스에서 비교했고, 결과는 동일했습니다.
동등성 검증 테스트 장치
사용자 유형 11가지와 네 개 언어에 걸친 1,126건의 페이지 요청, 39건의 양식 전송, 343건의 관리자 요청을 두 앱에 재생해 비교했습니다.
제품 전체
Whisper와 Azure 전사, 실시간 상태, AI 요약과 채팅, TXT·SRT·DOCX·PDF 내보내기, Stripe와 Google Play 결제, 그리고 관리자 콘솔.
안전한 복귀 경로
전환 후 2주 동안 기존 서버를 그대로 두어 롤백은 DNS 변경으로 끝났습니다.
엔지니어링 성과
출시 전 공용 머신에서 부하 테스트로 측정했습니다. 절대 수치는 참고용이고, 비율은 그대로 유효합니다.
- 프로덕션은 약 4분의 창에서 전환
- 전환 후 프로덕션에서 가입, 업로드, 실시간 상태, 다운로드, AI, API, 관리자 기능 확인
- 부하 테스트에서 커넥션 풀 버그를 발견해 출시 전에 수정
- 오른쪽에서 왼쪽으로 쓰는 PDF를 포함한 99개 언어
기술
- Rust
- axum
- PostgreSQL
- Typst
- OpenAI Whisper
- Azure Speech
- Stripe
- Kubernetes