피드로 돌아가기
Dev.toBackend
원문 읽기
Immutable ID 도입을 통한 사이트 리네임 시 데이터 유실 제로화 달성
Renaming a site without losing its data — separating display name from a stable identifier
AI 요약
Context
사이트 이름을 파일 시스템 경로의 Key로 사용하는 설계로 인한 데이터 매핑 오류 발생. 사이트 이름 변경 시 기존 디렉토리를 참조하지 못해 백업 및 스크린샷 데이터가 고립되는 데이터 오펀(Data Orphan) 현상 노출.
Technical Solution
- Display Name과 분리된 12자리 hex 기반의 Immutable site_id 도입을 통한 식별자 안정성 확보
- UUID 기반 site_id를 파일 경로의 Key로 사용하여 리네임 시에도 물리적 저장소 경로를 유지하는 구조 설계
- FileLock, tempfile, os.replace를 활용한 Atomic Write 기반의 Idempotent Migration 로직 구현
- 신규 로그(site_id 기반)와 기존 로그(site_name 기반)를 동시에 처리하는 Hybrid Matching 필터링 적용
- 앱 시작점 및 API 진입점에 Migration 함수를 배치하여 사용자 개입 없는 백그라운드 ID 할당 체계 구축
실천 포인트
- 사용자 변경 가능성이 있는 Display Name을 DB Key나 파일 경로로 사용하는 설계 지양 - 생성 시점에 변하지 않는 Immutable Identifier를 정의하여 리소스 간 관계 매핑 - 레거시 데이터 마이그레이션 시 원자성(Atomicity) 보장을 위한 FileLock 및 임시 파일 교체 전략 검토 - 정규표현식 기반의 Validation 도입 전 기존 데이터 포맷에 대한 전수 조사를 통한 회귀 버그 방지