콘텐츠로 이동

환경

환경 기능은 전체 백엔드에 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 컨텍스트는 모든 요청이 올바른 데이터베이스 및 구성에 대해 해결되도록 플랫폼 전체의 백엔드 서비스에 전파됩니다.


환경 시스템은 개발 단계 간에 엔터프라이즈급 격리를 제공하도록 설계되었습니다:

  1. 스토리지 격리: 각 환경은 전용 데이터베이스로 지원됩니다. 이를 통해 개발 환경의 버그나 데이터 작업이 프로덕션 데이터에 영향을 줄 수 없습니다.
  2. 구성 범위: API 키에서 보안 정책까지 모든 설정은 환경별로 독립적으로 관리됩니다. “Staging”에서 CORS 정책을 변경해도 “Production”에 영향을 주지 않습니다.
  3. 플랫폼 전체 컨텍스트: 현재 환경은 자동으로 전체 플랫폼에 전파됩니다. 파일을 탐색하거나, SQL 쿼리를 실행하거나, API 호출을 하든 Archie Core는 올바른 환경의 리소스와 상호 작용하고 있는지 확인합니다.