운영 DB 컬럼 삭제하면 큰일 — CAP Migration 안전 전략 #shorts #SAP #CAP
Moderator
· 조회 1
이 글이 답하는 질문
- CAP 운영 환경에서 DB 컬럼을 삭제하면 어떤 일이 벌어지나?
- 안전한 마이그레이션 순서는 무엇인가?
- 컬럼 삭제 없이 스키마를 정리하는 방법은?
왜 위험한가
CAP 프로젝트에서 CDS 엔티티의 컬럼을 삭제하고 배포하면 HDI 마이그레이션이 해당 컬럼을 DB에서 즉시 DROP한다. 운영 데이터가 영구적으로 삭제된다. 롤백도 불가능하다.
직접 해보기
1. 절대 하면 안 되는 패턴
// ❌ 운영에서 컬럼 삭제 → 즉시 DROP TABLE COLUMN
entity Orders {
key ID : UUID;
// amount : Decimal; ← 이 줄을 지우면 운영 DB에서 데이터 삭제
status : String;
}
2. 안전한 삭제 순서 (3단계)
- STEP 1 — 코드에서 해당 컬럼 참조 제거 (배포). DB에는 컬럼이 그대로 존재
- STEP 2 — 충분한 관찰 기간 후 데이터 백업
- STEP 3 — CDS에서 컬럼 삭제 후 배포 (이때 HDI가 DROP 실행)
// 안전한 임시 방법: @cds.persistence.skip
entity Orders {
key ID : UUID;
@cds.persistence.skip // DB 컬럼 유지, CDS 무시
amount : Decimal; // 참조만 제거된 상태
status : String;
}
3. @cds.persistence.exists 활용
// 레거시 컬럼 존재 인정 — 마이그레이션 없이 유지
entity LegacyOrders {
key ID : UUID;
@cds.persistence.exists
oldColumn : String; // DB에 있지만 CDS 모델 밖으로 유지
}
삽질 노트
- HANA Cloud HDI는 배포 시점에 CDS 모델과 DB를 동기화한다. 컬럼이 CDS에 없으면 DB에서도 사라진다
undeploy.json에 테이블을 등록하지 않으면 테이블 자체가 DROP되지는 않지만, 컬럼 단위는 HDI가 자동으로 처리한다- 스테이징 환경 테스트만으로는 부족 — 운영과 스테이징의 데이터 볼륨 차이로 마이그레이션 시간이 크게 달라질 수 있다
핵심 한 줄
운영 DB 컬럼 삭제는 3단계 절차로 — 코드 참조 제거 → 백업 → CDS 삭제. 한 번에 지우면 데이터도 같이 사라진다.
더 파볼 주제
- HDI 컨테이너 마이그레이션 로그 확인 방법
- CAP undeploy.json으로 테이블 보존 설정
- HANA Cloud 백업/복구 전략