콘텐츠로 이동

Environment Merge

Environment Merge 기능을 사용하면 한 환경(소스)에서 다른 환경(대상)으로 스키마 변경을 적용할 수 있습니다. 이는 새 테이블, 열, 뷰 및 열거형과 같은 구조적 변경을 개발 수명 주기 전체에 전파하는 핵심 작업입니다.


병합 프로세스는 안전하고 예측 가능하며 투명하도록 설계되었습니다:

  1. 선택: 소스 환경(변경이 발생한 곳)과 대상 환경(적용할 곳)을 선택합니다.
  2. 분석: 시스템은 대상 환경에서 누락된 모든 변경 사항을 식별하기 위해 diff를 수행합니다.
  3. 검토 및 Cherry-pick: 감지된 변경 사항을 검토하고 적용할 항목을 선택적으로 선택합니다.
  4. 자동 백업: 변경 사항을 적용하기 전에 Archie Core는 대상 환경의 데이터와 구조의 전체 백업을 만듭니다.
  5. 원자적 적용: 선택된 변경 사항이 단일 작업으로 적용됩니다. 병합의 어떤 부분이라도 실패하면 전체 작업이 자동으로 롤백됩니다.

Archie Core는 병합 중 프로덕션 및 스테이징 환경의 무결성을 보장합니다:

  • 트랜잭션 업데이트: 모든 스키마 변경은 단일 트랜잭션 내에서 적용됩니다. 즉, 선택된 모든 변경 사항이 성공적으로 적용되거나 아무것도 적용되지 않아 데이터베이스가 부분적으로 마이그레이션된 상태에 들어가는 것을 방지합니다.
  • 환경 잠금: 병합이 진행되는 동안 대상 환경은 동시 구성 변경을 방지하기 위해 잠깁니다.
  • 자동 병합 전 백업: 실행 직전에 항상 “안전망” 백업이 생성됩니다. 병합이 성공했지만 나중에 문제를 발견한 경우 Backups 페이지를 사용하여 병합 전의 정확한 상태로 복원할 수 있습니다.

병합 인터페이스는 무엇이 이동되는지에 대한 세밀한 제어를 제공합니다:

  • 개별 선택: 전체 브랜치를 병합하지 않고 특정 변경 사항(단일 열 추가 또는 새 인덱스 등)을 전환합니다.
  • 그룹 작업: 특정 테이블 또는 뷰와 관련된 모든 변경 사항을 빠르게 선택하거나 선택 해제합니다.
  • Breaking 변경 보호: 파괴적 작업(열 삭제 등)은 기본적으로 사전 선택되지 않습니다. 실수로 인한 데이터 손실을 방지하려면 이러한 변경 사항에 명시적으로 선택해야 합니다.

모든 병합 작업은 중앙 집중식 감사 추적에 기록됩니다. 환경의 기록 페이지에는 다음이 표시됩니다:

  • 감사 로그: 누가 병합을 시작했는지, 어떤 환경이 관련되었는지, 언제 발생했는지.
  • 변경 요약: 생성, 수정 또는 삭제된 내용에 대한 명확한 분석.
  • 추적성: 마이그레이션 중 실행된 특정 SQL 명령에 대한 문서.
  • 백업 링크: 해당 마이그레이션을 위해 특별히 생성된 자동 백업에 대한 직접 액세스.

병합을 되돌려야 하는 경우 Backups 페이지를 사용하여 환경을 “병합 전” 상태로 복원해야 합니다.

참고: 간단한 실행 취소와 달리 복원 작업은 전체 데이터베이스를 이전 시점으로 되돌립니다. 프로덕션에 병합하기 전에 스테이징 환경에서 변경 사항을 확인하는 것이 좋습니다.


mutation MergeEnvironments($input: MergeEnvironmentInput!) {
mergeEnvironments(input: $input) {
success
message
migrationId
changesApplied
backupId
}
}
query MigrationHistory($projectId: ID!, $environment: String) {
migrationHistory(projectId: $projectId, environment: $environment) {
id
sourceEnvironment
targetEnvironment
status
appliedBy
appliedAt
changes {
changeType
objectName
sql
isBreaking
}
backupId
}
}