운영 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 백업/복구 전략