이 마이그레이션은 19년 된 Rails 시스템을 SvelteKit으로 전환하는 과정에서 여러 주요 아키텍처적 도전을 마주했으며, 각 문제에 대한 체계적인 전략을 통해 해결했습니다.
1. 레거시 로직 현대화
-
도메인 모델: ActiveRecord 비즈니스 로직을 TypeScript 서비스로 분리하여 모듈성을 높였습니다.
-
권한 시스템: 분산된 역할 기반 권한을
AuthorizationService로 통합, 서버 측에서 처리했습니다.
2. 데이터 및 인프라 유지보수
-
스키마: 데이터 변환 없이 기존 데이터베이스 스키마를 유지하여 데이터 손상 위험을 제거했습니다.
-
멀티테넌시: SvelteKit에서 서브도메인 기반 마켓 격리를 서버 훅으로 수동 구현했습니다.
-
자산: 수천 개의 이미지를 클라우드로 이전하고 다양한 크기 및 WebP 버전을 사전 생성하며 URL 호환성을 유지했습니다.
3. 보안 및 사용자 경험
- 커스터마이제이션: 위험한 주입 방식 대신 보안 테마 시스템을 도입하여 안전한 커스터마이징을 제공했습니다.
4. 고위험 전환 관리
-
올-또는-무 마이그레이션: 공유 데이터베이스와 버전 비호환성으로 인해 단일 시점 전환을 강행, 완벽한 준비를 요구했습니다.
-
베타 테스트: 두 달간 프로덕션 미러링 미리보기 환경을 운영하여 사용자 피드백을 수렴하고 시스템을 개선했습니다.