NestJS 배포와 관측성

CI/CD 파이프라인 구축: 테스트 기준와 롤백 절차

CI/CD는 명령을 자동 실행하는 장치가 아니라 위험을 단계별로 줄이는 흐름입니다. 어떤 검사가 배포를 막고 어떤 증거가 승인으로 남는지 확인합니다.

PR gate lint/test/scan artifact sha + digest staging smoke approve production 승인 후 배포 healthcheck 실패 -> rollback
01

CI 기준 순서 정하기

lint, unit/e2e test, build, migration dry-run, security scan 중 어떤 실패가 merge나 deploy를 막는지 workflow에 명확히 둡니다.

품질 통과 기준
02

artifact와 환경 승인 분리

빌드 산출물 해시, Docker image digest, staging approval, production approval을 분리해 같은 artifact가 승격되도록 합니다.

산출물
03

배포 실패와 rollback 재현

migration 실패, healthcheck 실패, canary error spike를 만들어 자동 중단, 수동 승인, rollback 명령이 실제로 동작하는지 확인합니다.

rollback
04

파이프라인 감사 흔적 남기기

workflow run id, commit sha, test report, 승인자, 배포 시간, rollback 리허설 결과를 릴리스 노트와 연결합니다.

release log
CI 기준
CI 기준은 NestJS 빌드가 아니라 릴리스 차단 조건이다 lint/test/build가 통과해도 migration dry-run이나 security scan이 실패하면 배포로 넘어가지 않게 둡니다.
blocker
CD 승인
CI 통합 루프는 PR 피드백과 artifact 생성을 분리 PR에서는 빠른 테스트와 타입 검사를 돌리고 main merge 후에는 재사용 가능한 image digest를 생성합니다.
산출물
롤백
지속적 제공은 승인과 되돌림까지 검증 staging smoke test, production approval, rollback command, DB migration 복구 절차를 같은 runbook에서 확인합니다.
릴리스 통과 기준

CI/CD 차단·롤백 신호

merge 차단 테스트, 타입 검사, 보안 스캔이 실패한 PR은 main으로 들어가지 않고 실패 리포트를 남깁니다.
승격 가능한 산출물 스테이징에서 검증한 이미지 다이제스트와 빌드 산출물이 프로덕션 승인 단계까지 바뀌지 않습니다.
되돌림 절차 배포 후 healthcheck나 error rate가 실패하면 rollback 명령, 담당자, 결과 로그가 같은 run에 남습니다.

CI/CD 테스트 기준과 롤백 점검

질문: 실패한 test, scan, migration, healthcheck가 배포를 막고 rollback 증거를 남기는가
순서: PR CI gate -> image artifact 생성 -> staging 승인과 production rollback 리허설
위험: main에 붙은 자동 배포가 테스트 실패나 migration 실패를 무시하면 빠른 배포가 빠른 장애 전파가 됩니다.