환경
환경 기능은 전체 백엔드에 Git과 유사한 브랜칭을 제공합니다. 각 환경은 애플리케이션의 완전히 격리된 복사본으로, 자체 데이터베이스, API 스키마, 역할, 파일 공급자, 게이트웨이 라우트 및 보안 구성을 포함하여 프로덕션 데이터에 영향을 주지 않고 개발, 테스트 및 변경 사항 스테이징을 할 수 있습니다.
모든 프로젝트는 단일 master 환경으로 시작합니다. 여기서 기존 환경에서 데이터베이스 스키마(및 선택적으로 데이터)를 상속하는 새 환경을 브랜치할 수 있습니다. 각 브랜치는 독립적으로 작동하며, 한 환경에서 수행한 변경 사항은 명시적으로 병합할 때까지 다른 환경으로 전파되지 않습니다.
핵심 개념
섹션 제목: “핵심 개념”- 환경 격리: 각 환경에는 자체 PostgreSQL 데이터베이스가 있어 브랜치 간 완전한 데이터 분리를 보장합니다.
- 브랜치 모드: 새 환경을 만들 때 Full(스키마 + 데이터) 또는 System(스키마만) 클로닝 전략 중에서 선택합니다.
- 구성 복사: 파일 스토리지 공급자, 게이트웨이 라우트, 보안 설정 및 환경 변수는 브랜칭 중 선택적으로 소스 환경에서 복사할 수 있습니다.
- 상태 수명 주기: 환경은 충돌하는 작업을 방지하기 위해 정의된 상태를 전환합니다 —
active,branching,merging,error,archived. - 부모-자식 관계: 환경은 diff 및 merge 작업을 위한 계보를 추적하는 트리 구조를 유지합니다.
- Schema Diff: 전방 전용 diff 의미론을 사용하여 두 환경의 데이터베이스 스키마를 비교합니다. Environment Diff 참조.
- Merge: 자동 백업, 선택적 변경 적용(cherry-pick) 및 트랜잭션 DDL로 한 환경에서 다른 환경으로 스키마 변경을 적용합니다. Environment Merge 참조.
- 백업: S3에 저장된 자동 병합 전 백업 및 수동 백업으로, 삭제된 환경을 포함한 모든 대상 환경으로 복원 가능. Backups 참조.
- 마이그레이션 기록: 각 마이그레이션을 적용한 사용자, 타임스탬프 및 적용된 특정 변경 사항을 포함한 모든 merge 작업의 전체 감사 추적.
환경 범위
섹션 제목: “환경 범위”모든 백엔드 리소스는 현재 선택된 환경에 범위가 지정됩니다. 상단 탐색 모음의 환경 선택기를 사용하여 환경을 전환하면 다음 리소스가 해당 환경의 상태를 반영합니다:
| 리소스 | 환경별 범위 |
|---|---|
| 데이터베이스 테이블 및 스키마 | 예 |
| API Explorer (GraphQL) | 예 |
| SQL Playground | 예 |
| 역할 기반 액세스 | 예 |
| 파일 스토리지 공급자 | 예 |
| 인증 공급자 | 예 |
| API Keys | 예 |
| 사용자 지정 API Gateway 라우트 | 예 |
| 보안 구성 (CORS, Rate Limits) | 예 |
| 환경 변수 | 예 |
| 통합 | 예 |
참고: 환경 전환은 전체 컨텍스트 다시 로드를 트리거합니다. environment 컨텍스트는 모든 요청이 올바른 데이터베이스 및 구성에 대해 해결되도록 플랫폼 전체의 백엔드 서비스에 전파됩니다.
보안 및 격리
섹션 제목: “보안 및 격리”환경 시스템은 개발 단계 간에 엔터프라이즈급 격리를 제공하도록 설계되었습니다:
- 스토리지 격리: 각 환경은 전용 데이터베이스로 지원됩니다. 이를 통해 개발 환경의 버그나 데이터 작업이 프로덕션 데이터에 영향을 줄 수 없습니다.
- 구성 범위: API 키에서 보안 정책까지 모든 설정은 환경별로 독립적으로 관리됩니다. “Staging”에서 CORS 정책을 변경해도 “Production”에 영향을 주지 않습니다.
- 플랫폼 전체 컨텍스트: 현재 환경은 자동으로 전체 플랫폼에 전파됩니다. 파일을 탐색하거나, SQL 쿼리를 실행하거나, API 호출을 하든 Archie Core는 올바른 환경의 리소스와 상호 작용하고 있는지 확인합니다.