소프트웨어는 일반적으로 여러 환경 — development, staging, production 같은 — 을 거쳐 deploy되며, 각각은 코드에서 라이브 사용자로 가는 경로에서 목적을 가집니다. 코드를 환경들을 통해 승격(promote)하는 것은 실제 사용자에게 도달하기 전에 문제를 발견합니다.
일반적인 환경
DEVELOPMENT(dev) → 개발자가 build하고 테스트하는 곳 (로컬 또는 공유 dev 환경);
불안정, 잦은 변경, 실험
STAGING(test/QA/pre-prod) → 최종 테스트를 위한 PRODUCTION 유사 환경:
→ production을 미러링 (가능한 한 가깝게 동일한 config/인프라)
→ 릴리스 전에 통합/E2E 테스트, QA, UAT 실행
→ 실제 사용자가 보기 전에 안전한 prod 유사 환경에서 문제 발견
PRODUCTION(prod) → 실제 사용자에게 서비스하는 LIVE 환경:
→ 안정성이 중요; 변경은 신중하고 모니터링됨
