웹 개발
배포 전에 unique 제약 확인하기
데이터베이스의 unique 제약 위반으로 배포 후 오류가 생길 때 확인하는 방법.
데이터베이스 스키마를 변경해서 배포하면, unique 제약이 새로 추가되었을 때 기존 데이터와 충돌할 수 있다. 배포 후 갑자기 데이터 삽입 오류가 나면, 대부분 이런 제약 때문이다. 배포 전에 미리 확인하는 방법을 정리했다.
변경사항 파악하기
마이그레이션이나 스키마 변경 코드를 먼저 읽어본다. 어느 테이블의 어느 컬럼에 unique 제약이 추가됐는지, 그리고 그 컬럼에 기존 데이터 중 중복값이 있을 수 있는지 확인한다.
운영 데이터 검증
npm run build
실제 운영 데이터베이스에서 중복값을 검사하는 쿼리를 실행한다. 예를 들어 email 컬럼에 unique 제약을 추가한다면:
SELECT email, COUNT(*) FROM users GROUP BY email HAVING COUNT(*) > 1;
이렇게 중복이 발견되면, 배포 전에 데이터를 정리하거나 마이그레이션 전략을 수정해야 한다.
마이그레이션 실행 계획
- 운영 데이터에서 위반할 데이터 미리 찾기
- 중복 데이터를 어떻게 처리할지 결정 (삭제, 병합, 보관)
- 롤백 계획 준비
- 테스트 환경에서 미리 실행해보기
배포 후 확인
- 새로운 데이터 입력이 정상적으로 작동하는지 테스트
- 응답 코드가 올바른지 확인
- 데이터베이스 로그에서 제약 위반 오류 모니터링
한 번에 여러 제약을 추가하면 추적이 어려워지니, 가능하면 한 번에 하나씩 진행한다.