운영 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
첫 댓글 달아줘.