자동차 딜러 플랫폼을 URL, 차량, 로그인 하나 잃지 않고 Rust로 재구축
포르투갈의 자동차 딜러 G8 Motor는 재고 웹사이트와 백오피스를 2018년에 만든 Rails 6.1 앱으로 운영했습니다. 같은 데이터베이스와 사진 위에서 Rust로 재작성해 직원들은 로그인을 그대로 유지했고, 이후 공개 사이트에 새 디자인과 3D 쇼룸, 검색 엔진과 AI 어시스턴트를 위한 SEO를 더했습니다.
- 고객
- G8 Motor
- 플랫폼
- 웹사이트와 백오피스
- 산업
- 자동차
- 출시
- 2026
과제
기존 앱은 여전히 작동했지만 낡은 Rails 6.1에서 돌아갔고, 데이터베이스와 서버 한 대를 함께 썼으며, 딜러가 문의를 잃게 만드는 버그가 있었습니다. 공개 검색 필터는 한 번도 작동하지 않았고, 휴대폰 사진은 회전된 상태로 보일 수 있었습니다.
우리가 만든 것
비즈니스가 의존하던 모든 것을 지킨 전면 재작성, 그리고 새 공개 사이트. Rust와 axum, PostgreSQL로 만들고 Kubernetes에 배포했습니다.
동일한 URL, 데이터, 로그인
새 앱은 같은 데이터베이스, 같은 사진 스토리지, 같은 비밀번호 해시를 읽으므로 링크와 재고, 직원 계정이 그대로 이어졌습니다.
현대적인 공개 사이트
WhatsApp 버튼이 있는 빠른 모바일 우선 재고 웹사이트로, 재작성이 라이브된 뒤 새로 디자인했습니다.
3D 가상 쇼룸
방문자가 차량과 브랜드, 연락처를 둘러보는 three.js 전시장으로, 방문자가 열 때만 내려받습니다.
검색과 AI 노출
실시간 재고에서 생성되는 메타 태그, JSON-LD, 사이트맵, FAQ, llms.txt로 검색 엔진과 AI 어시스턴트가 딜러와 차량을 설명할 수 있습니다.
휴대폰으로 바로 찍은 사진
백오피스가 방향을 바로잡고 1920 px로 줄이고 GPS 등 메타데이터를 제거하며 사진을 하나씩 처리하므로, 직원에게는 휴대폰 카메라만 있으면 됩니다.
개인정보 보호와 보안
회사 법적 정보를 담은 개인정보·약관 페이지, 쿠키 동의 후에만 작동하는 분석, 공개 양식과 로그인에 Turnstile, DKIM·SPF·DMARC로 서명한 메일.
엔지니어링 성과
2026년 9월 코드에서 집계했고, 메모리는 2026년 10월 프로덕션에서 측정했습니다.
- 롤백은 DNS 변경이었고 기존 서버는 계속 가동
- 전환 전에 기존 데이터베이스와 새 데이터베이스의 레코드 수를 비교
- 사진은 복사하지 않음: 새 앱이 같은 스토리지 버킷을 사용
- 공개 페이지는 읽기 복제본이 담당하고, 문제가 생기면 기본 DB로 자동 전환
기술
- Rust
- axum
- PostgreSQL
- three.js
- Amazon SES
- Cloudflare Turnstile
- Kubernetes
- Honeybadger