웹 개발
데이터베이스 스키마 변경할 때 먼저 봐야 할 것들
스키마 변경은 운영 중에 가장 신중하게 다뤄야 하는 작업이다. 로컬에서 완벽했어도 실제 데이터가 많은 환경에서는 예상 외의 문제가 생길 수 있다.
데이터베이스 스키마 변경은 한 번의 실수가 운영 중단으로 이어질 수 있으니 각별히 조심해야 한다. 검색해서 같은 문제를 마주쳤다면, 일단 현재 상황을 정확히 파악하는 것부터 시작하는 게 빠르다.
문제의 경계 정하기
스키마 변경의 어느 부분에서 문제가 생겼는가. 데이터를 추가하려던 단계인가, 기존 칼럼을 삭제하려던 단계인가, 아니면 칼럼 타입을 바꾸는 단계인가. 각 단계마다 위험도가 다르고, 대처 방법도 달라진다.
마이그레이션 검증
npx prisma validate
npx prisma migrate status
현재 마이그레이션 상태를 본다. 아직 적용되지 않은 마이그레이션이 있는가. 또는 이미 적용된 마이그레이션에 문제가 있는가. 마이그레이션 파일 자체의 문법도 확인한다.
로컬과 운영 비교
로컬 개발 환경의 데이터와 운영 데이터베이스의 데이터 크기, 타입, 분포를 비교한다. 로컬에서는 몇 백 개의 레코드로 테스트했을 수 있지만, 운영에는 몇 백만 개가 있을 수도 있다. 데이터가 많을수록 마이그레이션 시간도 오래 걸리고, 문제가 터질 확률도 높아진다.
백업 확인
마이그레이션을 진행하기 전에 현재 데이터베이스를 백업했는가. 마이그레이션 중에 문제가 생겼을 때 바로 롤백할 수 있는 상태인가를 확인한다.
한 번에 한 마이그레이션
여러 마이그레이션을 한 번에 적용하지 않는다. 칼럼 추가 마이그레이션 하나를 적용하고, 잘 작동하는지 확인한 후에 다음 마이그레이션으로 넘어간다. 이렇게 하면 뭐가 문제를 일으켰는지 명확히 알 수 있다.