아이디 범위를 띄워 DB 마이그레이션 롤백을 안전하게 만들기
레거시와 신규 아이디 범위를 분리해 롤백 충돌을 막고, 역마이그레이션과 운영 트래픽 추적을 단순하게 만듭니다.
출처 및 AI 안내: 이 글은 제미니의 개발실무 유튜브를 기반으로 작성되었습니다.
gpt-5.6-sol모델을 사용해 생성·편집했습니다.
데이터베이스를 이관할 때 신규 쓰기는 레거시와 분명히 떨어진 아이디 범위에서 시작한다. 신규 DB의 행을 다시 옮겨야 할 때 간격이 있으면 계속 증가한 레거시 아이디와 겹치지 않는다. API 응답과 로그에서도 신규 시스템의 아이디를 알아볼 수 있다.
같은 시퀀스에서 시작하면 롤백이 막힌다
레거시 DB의 아이디가 특정 지점까지 왔고 신규 DB도 바로 그 다음 번호에서 시작한다고 하자. 전환 중 두 시스템의 시퀀스가 계속 증가할 수 있다. 신규 시스템이 쓰기를 받은 뒤 장애가 발견되면 그 행을 레거시로 되돌리는 순간 같은 아이디가 충돌한다.
그 아이디는 관련 테이블이나 다른 시스템에도 들어갈 수 있다. 서로 다른 레코드가 같은 번호를 차지하면 데이터를 다시 옮길 때 더 큰 문제가 생긴다.
신규 시퀀스를 떨어진 범위로 옮긴다
신규 쓰기를 열기 전에 시퀀스를 분명히 떨어진 범위로 올린다. 예를 들어 레거시 게시물과 신규 게시물을 서로 다른 번호대에 쌓는다.
범위가 분리돼 있으면 레거시 쪽 데이터가 계속 늘었더라도 신규 행을 다시 부을 때 아이디가 겹치지 않는다.
아이디 범위는 운영 표식도 된다
범위가 다르면 API 응답과 수집된 서버 로그에서 신규 시스템의 레코드를 알아볼 수 있다. 운영자는 개편 시스템으로 들어간 트래픽과 새로 등록된 게시물 수를 볼 수 있다.
분리한 번호대는 데이터를 되돌릴 때와 개편 흐름을 관찰할 때 모두 도움이 된다.