Environment Merge
Environment Merge 기능을 사용하면 한 환경(소스)에서 다른 환경(대상)으로 스키마 변경을 적용할 수 있습니다. 이는 새 테이블, 열, 뷰 및 열거형과 같은 구조적 변경을 개발 수명 주기 전체에 전파하는 핵심 작업입니다.
Merge 작동 방식
섹션 제목: “Merge 작동 방식”병합 프로세스는 안전하고 예측 가능하며 투명하도록 설계되었습니다:
- 선택: 소스 환경(변경이 발생한 곳)과 대상 환경(적용할 곳)을 선택합니다.
- 분석: 시스템은 대상 환경에서 누락된 모든 변경 사항을 식별하기 위해 diff를 수행합니다.
- 검토 및 Cherry-pick: 감지된 변경 사항을 검토하고 적용할 항목을 선택적으로 선택합니다.
- 자동 백업: 변경 사항을 적용하기 전에 Archie Core는 대상 환경의 데이터와 구조의 전체 백업을 만듭니다.
- 원자적 적용: 선택된 변경 사항이 단일 작업으로 적용됩니다. 병합의 어떤 부분이라도 실패하면 전체 작업이 자동으로 롤백됩니다.
보안 및 안정성
섹션 제목: “보안 및 안정성”Archie Core는 병합 중 프로덕션 및 스테이징 환경의 무결성을 보장합니다:
- 트랜잭션 업데이트: 모든 스키마 변경은 단일 트랜잭션 내에서 적용됩니다. 즉, 선택된 모든 변경 사항이 성공적으로 적용되거나 아무것도 적용되지 않아 데이터베이스가 부분적으로 마이그레이션된 상태에 들어가는 것을 방지합니다.
- 환경 잠금: 병합이 진행되는 동안 대상 환경은 동시 구성 변경을 방지하기 위해 잠깁니다.
- 자동 병합 전 백업: 실행 직전에 항상 “안전망” 백업이 생성됩니다. 병합이 성공했지만 나중에 문제를 발견한 경우 Backups 페이지를 사용하여 병합 전의 정확한 상태로 복원할 수 있습니다.
Cherry-Pick 선택
섹션 제목: “Cherry-Pick 선택”병합 인터페이스는 무엇이 이동되는지에 대한 세밀한 제어를 제공합니다:
- 개별 선택: 전체 브랜치를 병합하지 않고 특정 변경 사항(단일 열 추가 또는 새 인덱스 등)을 전환합니다.
- 그룹 작업: 특정 테이블 또는 뷰와 관련된 모든 변경 사항을 빠르게 선택하거나 선택 해제합니다.
- Breaking 변경 보호: 파괴적 작업(열 삭제 등)은 기본적으로 사전 선택되지 않습니다. 실수로 인한 데이터 손실을 방지하려면 이러한 변경 사항에 명시적으로 선택해야 합니다.
마이그레이션 기록
섹션 제목: “마이그레이션 기록”모든 병합 작업은 중앙 집중식 감사 추적에 기록됩니다. 환경의 기록 페이지에는 다음이 표시됩니다:
- 감사 로그: 누가 병합을 시작했는지, 어떤 환경이 관련되었는지, 언제 발생했는지.
- 변경 요약: 생성, 수정 또는 삭제된 내용에 대한 명확한 분석.
- 추적성: 마이그레이션 중 실행된 특정 SQL 명령에 대한 문서.
- 백업 링크: 해당 마이그레이션을 위해 특별히 생성된 자동 백업에 대한 직접 액세스.
롤백 정책
섹션 제목: “롤백 정책”병합을 되돌려야 하는 경우 Backups 페이지를 사용하여 환경을 “병합 전” 상태로 복원해야 합니다.
참고: 간단한 실행 취소와 달리 복원 작업은 전체 데이터베이스를 이전 시점으로 되돌립니다. 프로덕션에 병합하기 전에 스테이징 환경에서 변경 사항을 확인하는 것이 좋습니다.
개발자 API (GraphQL)
섹션 제목: “개발자 API (GraphQL)”Mutation: mergeEnvironments
섹션 제목: “Mutation: mergeEnvironments”mutation MergeEnvironments($input: MergeEnvironmentInput!) { mergeEnvironments(input: $input) { success message migrationId changesApplied backupId }}Query: migrationHistory
섹션 제목: “Query: migrationHistory”query MigrationHistory($projectId: ID!, $environment: String) { migrationHistory(projectId: $projectId, environment: $environment) { id sourceEnvironment targetEnvironment status appliedBy appliedAt changes { changeType objectName sql isBreaking } backupId }}