공통 배포 계약
프로젝트별 서버/인프라가 달라도 동일한 배포 정책과 검증 흐름으로 운영할 수 있도록 공통 계약을 정의한다.
guide docs/guide/DEPLOYMENT_CONTRACT.md
목적: 프로젝트별 서버/인프라가 달라도 동일한 배포 정책과 검증 흐름으로 운영할 수 있도록 공통 계약을 정의한다. 관련 문서: AITEM_TO_COMMON_GOVERNANCE.md
왜 배포 계약이 필요한가
프로젝트마다 배포 방식은 다를 수 있다.
- Vercel
- Cloudflare Pages
- Docker + VM
- Kubernetes
- GitHub Actions 기반 수동/반자동 배포
하지만 배포 전후에 확인해야 할 운영 규칙은 상당 부분 공통이다.
즉, 배포 정책은 공통화하고 실제 실행은 adapter로 분리해야 한다.
공통 원칙
1. 정책과 실행을 분리한다
- 정책: 언제 배포 가능한가, 무엇을 검증해야 하는가
- 실행: 어떤 명령으로 어디에 배포하는가
2. 배포는 단계적 게이트를 통과해야 한다
- pre-merge
- pre-deploy
- deploy
- post-deploy verify
- rollback
3. 위험도에 따라 승인 기준을 다르게 둔다
- staging 배포: 자동 또는 1회 승인
- production 배포: 명시적 승인 필수
- DB 관련 변경 포함 배포: 추가 안전 검토 필요
4. 배포 결과는 공통 리포트 형식으로 남긴다
- 어떤 환경에 배포했는지
- 어떤 검증을 통과했는지
- 어떤 우회를 사용했는지
- rollback이 있었는지
공통 배포 계약
모든 프로젝트는 아래 인터페이스를 개념적으로 충족해야 한다.
1. pre_merge_checks
목적:
- PR 병합 전에 코드가 최소 품질 기준을 만족하는지 확인
기본 체크:
- lint
- typecheck
- unit test
- security scan
- API contract check
- migration safety check
출력:
passconditionalfail
2. pre_deploy_checks
목적:
- 특정 환경 배포 직전에 환경별 위험 요소를 다시 확인
기본 체크:
- 현재 브랜치/태그 확인
- 대상 환경 확인 (
staging/production) - 환경변수 누락 여부
- build artifact 생성 가능 여부
- DB migration 포함 여부
- bypass 사용 여부
출력:
deployableapproval_requiredblocked
3. deploy_staging
목적:
- staging 환경 배포
요구사항:
pre_deploy_checks통과- staging adapter 존재
- post-deploy verify 자동 실행
4. deploy_production
목적:
- production 환경 배포
요구사항:
- 명시적 승인 필수
- production adapter 존재
- rollback 또는 recovery 레일 존재
- post-deploy verify 자동 실행
5. rollback
목적:
- 배포 실패 또는 회귀 발생 시 안정 상태로 복귀
허용 방식 예시:
- revert 배포
- 이전 artifact 재배포
- rollback script
- revert PR 자동 생성
최소 요구사항:
- rollback 가능 여부 명시
- 자동/수동 여부 명시
- 실패 시 다음 대응 명시
6. post_deploy_verify
목적:
- 배포 후 실제 서비스 상태 확인
기본 체크:
- health endpoint
- smoke test
- 주요 사용자 흐름
- 에러율/로그 이상 여부
출력:
healthydegradedrollback_required
환경별 기본 정책
staging
- 자동 배포 가능
- 단,
pre_deploy_checks통과 필요 - smoke test 실패 시
degraded
production
- 사용자 또는 운영 승인 필수
- bypass 사용 시 별도 기록 필수
- rollback 경로 없는 production 배포는 원칙적으로 금지
배포 adapter 구조
배포 adapter는 공통 계약의 실제 구현체다.
예시:
adapter/verceladapter/cloudflare-pagesadapter/docker-vmadapter/k8sadapter/github-actions
각 adapter는 최소한 아래 정보를 제공해야 한다.
- 지원 환경 (
staging,production) - 배포 명령
- rollback 지원 여부
- health check 방법
- required secrets
- build artifact 방식
프로젝트별 override 허용 범위
다음은 프로젝트별 override 가능:
- deploy target
- build 명령
- required secrets
- smoke test 시나리오
- domain-specific verify 항목
다음은 공통 정책으로 유지:
- production 승인 필요
- bypass 기록 필수
- post-deploy verify 필요
- rollback 가능 여부 명시
AITEM 기준 매핑 예시
AITEM에서 공통으로 추출 가능한 것
- pre-merge validation
- branch protection
- post-merge recovery
- scheduled audit
AITEM 전용 override로 남길 것
- 결제/인증 강화 검증
- AITEM 특화 threshold
- AITEM 특화 배포 모드
배포 리포트 최소 형식
# Deployment Report
- project: aitem
- environment: staging
- adapter: docker-vm
- commit: abc1234
- pre_merge_checks: pass
- pre_deploy_checks: deployable
- bypass_used: none
- post_deploy_verify: healthy
- rollback: not_needed
이 형식은 Markdown이든 JSON이든 동일한 의미를 유지해야 한다.
Capability Matrix와의 연결
이 계약은 이후 PROJECT_CAPABILITY_MATRIX.md에서 아래 항목으로 관리한다.
- deploy adapter
- staging 지원 여부
- production 지원 여부
- rollback 지원 여부
- post-deploy verify 수준
- bypass 허용 여부
한 줄 결론
배포 환경은 달라도, 배포 정책과 검증 흐름은 공통 계약으로 만들 수 있다.
ai-rules는 이 계약을 기준으로 하고, 각 프로젝트는 adapter로 실제 배포를 구현한다.