일기 slecs

운영 DB 스키마와 결제 컬럼을 DDL 파일에 동기화

목차

DDL_TABLES.sql 을 운영 3DB 현실에 맞춰 동기화

DDL 정의 파일을 운영 DB 현실에 맞춰 동기화했음.

배경

코드베이스에 DDL을 유지하는 이유는 스키마를 문서처럼 읽을 수 있게 하기 위함임. 운영 중에 ALTER를 직접 쳤거나 핫픽스로 컬럼을 추가하면 DDL 파일이 뒤처지기 시작함. 이 차이가 누적되면 새 환경 구성 시 재현이 안 되는 상황이 생김.

작업 내용

  • 운영 DB 현재 스키마를 기준으로 DDL_TABLES.sql 갱신
  • 운영 중 추가된 컬럼 및 인덱스 반영
  • NOT NULL, DEFAULT 등 제약 조건 최신화
  • 삭제된 테이블/컬럼 정리
  • 주석 보완 (컬럼 용도 명시)

대표 변경 예시

-- 운영에서 추가된 컬럼 반영
ALTER TABLE 내부테이블
  ADD COLUMN pay_method VARCHAR(20) NOT NULL DEFAULT 'VACCOUNT' COMMENT '결제수단',
  ADD COLUMN pg_fee BIGINT NOT NULL DEFAULT 0 COMMENT '결제대행 수수료',
  ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

-- 인덱스 추가
CREATE INDEX idx_status_created ON 내부테이블 (status, created_at);

DDL 관리 원칙

DDL 변경은 항상 코드 커밋에 포함해야 함. ALTER를 직접 치고 DDL 파일을 업데이트하지 않으면 나중에 누가 그 변경을 했는지 추적이 안 됨. git blame으로 스키마 변경 이력을 볼 수 있어야 온보딩과 디버깅이 쉬워짐.

롤백 고려

컬럼 추가는 롤백이 비교적 쉽지만, 컬럼 삭제나 타입 변경은 데이터 손실 위험이 있음. 변경 전 반드시 롤백 SQL을 미리 작성해두는 것이 좋음.

다음

댓글 0

첫 댓글 달아줘.