스키마 변경도 버전 기록이야
마이그레이션은 개발·스테이징·운영 환경에 같은 순서로 적용되는 재현 가능한 변경이야. 운영 데이터베이스에서 직접 ALTER하고 기록을 남기지 않으면 환경의 역사가 갈라져.
적용된 파일은 고치지 말고 앞으로 수정해
이미 배포한 마이그레이션이 틀렸다면 새 마이그레이션으로 바로잡아. 열 이름 변경이나 삭제는 새 열 추가, 데이터 채우기, 양쪽 쓰기, 읽기 전환, 옛 열 제거를 여러 배포에 나눠.
도구는 하나로 통일해
Alembic(Python·SQLAlchemy), Flyway, goose, Prisma Migrate, Supabase migration, graphile-migrate 가운데 저장소에 맞는 하나를 고르고 적용과 복구를 시험해.
파일과 되돌리기까지 시험해
20260503_add_user_avatar.sql처럼 시각과 목적이 드러나는 이름을 써. 개발 환경에서는 down()도 시험하되, 운영에서는 되돌리기보다 새 마이그레이션으로 바로잡아. 파괴적 변경은 1) 새 열 추가, 2) 데이터 채우기, 3) 양쪽 쓰기, 4) 읽기 전환, 5) 옛 열 제거로 나눠.