현재 내가 맡고있는 프로젝트는 CI/CD 구축이 되어있지 않고 번거로운 방법으로 배포를 진행중이다. 서비스 특성상 로컬 환경에서는 확인할 수 없는 기능들이 있어 CI/CD 구축의 필요성을 느꼈고 팀에 말씀드렸더니 그러려면 스테이징 서버도 필요하겠다고 하셨다. 스테이징 서버가 정확히 어떤 것이고 왜 필요한지 몰라서 정리해두기로 했다.

서버 분류의 필요성

실제 서비스 운영 환경에서는 개발 단계에 따라 서버를 구분해서 운영한다.

로컬 (local) - 개발 (dev) - 스테이징 (stg) - 운영 (prod)

프로젝트의 규모와 성격에 따라 모든 환경을 구축하지는 않는다. 현재 우리 서비스의 경우 스테이징 서버 없이 세 단계로 이루어져있다.

서버 분류

local

개발 및 테스트 환경에 셋업 된 개발자 PC의 서버 환경이다.

dev

테스트용 서버로 개발자가 접근하여 기능을 테스트 할 수 있는 서버이다. 반영하기 이른 태스크들이나 로컬 서버에서 확인하기 어려운 이슈등을 확인하기 위해 사용한다.

staging

운영 서버로 배포하기 직전 형상관리로 커밋된 파일들이 어떤건지 확실히 정리하여 마지막 점검을 하는 서버이다. 운영서버의 클론 서버처럼 운영되는 서버로써 스테이징에서 문제가 없으면 운영 서버에 그대로 배포하기 위한 일련의 최종 검수 환경이라고 볼 수 있다. Test 서버, QA 서버 등 다른 용어로 불릴때도 있다.

production

실제 서비스가 운영되는 서버 환경이다.