피드로 돌아가기
We found a data-loss bug that alembic downgrade ran clean
Dev.toDev.to
Database

Schema 복구 성공에도 데이터가 소실되는 Migration 버그 해결

We found a data-loss bug that alembic downgrade ran clean

croc1002026년 6월 5일1intermediate

Context

표준 CI 파이프라인의 alembic upgrade/downgrade 검증 방식이 Exit Code 0 여부만 확인하는 구조적 한계 존재. Schema 변경은 성공했으나 실제 데이터가 소실되는 런타임 버그를 감지하지 못하는 설계 결함 발생.

Technical Solution

  • Static Analysis 도입을 통한 Migration 파일 내 op.drop_column() 등 위험 패턴 사전 식별
  • Dynamic Verification 구조 설계를 통한 Seed Data 생성 및 Round-trip 검증 프로세스 구축
  • Schema 복구 여부와 별개로 데이터 보존 상태를 Assert 하는 데이터 무결성 검사 로직 구현
  • commit 단위의 빠른 정적 분석과 PR merge 단계의 정밀 동적 분석을 결합한 계층적 검증 전략 채택
  • PostgreSQL ENUM 및 NOT NULL 제약 조건 등 롤백 불가 패턴을 정적 분석 룰셋으로 정의

1. Migration 검증 시 단순 Exit Code 확인을 넘어 Seed Data 기반의 Round-trip 테스트를 적용했는지 검토

2. op.drop_column()과 같은 파괴적 변경 사항에 대한 정적 분석 룰셋 적용 여부 확인

3. 정적 분석(속도)과 동적 분석(정밀도)을 파이프라인 단계별로 분리하여 검증 효율 최적화

원문 읽기