티스토리 뷰
1. local(로컬개발 환경)
개발자 PC에 개발 및 테스트 환경이 셋업 되어 있어야 한다. 각 개발자마다, 설치된 서버 환경을 local 환경이라고한다.
2. dev(서버 개발 환경)
개발 환경은 각 개별 개발자들이, 만든 코드를 합쳐서 서버 환경에서 테스트해볼 수 있는 환경이다.
소스코드를 형상관리 시스템에 commit하면, 코드는 이 dev 환경에 자동으로 배포되고, 이 환경에서 테스트가 된다.
기능 개발을 위주로 하기 때문에, 서버의 환경은 production 보다 훨씬 작다. 예를 들어 production이 클러스터링 환경으로 수개의 서버로
구성된다면, 개발 환경은 한 두 개의 서버로 기능 구현이 가능한 정도로 구축하는 것이 일반적이다.
3. Integration(통합 개발 환경)
통합 개발 환경은, 여러개의
컴포넌트를 동시 개발하는 프로젝트가 있고, 각 컴포넌트가 다른컴포넌트에 대해서 dependecy를 가지고 있을때, 컴포넌트를 통합 및 테스트
하는 환경으로 사용한다.
예를 들어 단말과 서버를 같이 개발하는 환경의 경우 이 integration 환경에서 통합을 한다.
dev 환경과 마찬가지고, 최소한의 set으로 구성하되, dev 환경에서 release가 되면 주기적으로 deploy 한다.
4. qa(테스팅 환경)
테스트 환경은 QA 엔지니어에
의해서 사용되는 환경으로, short release 주기에 따라서, 개발환경에서 QA 환경으로 배포 되고, 여기서
기능 및 비기능 (Load Test)등을 QA 엔지니어가 수행한다.
비 기능 테스트를 수행할 시에는, production과 거의 유사한 환경을 만들어 놓고, 테스트를 수행한다. (경우에 따라서는 비기능 테스트는 release전에, production 환경에서 직접 수행하는 경우도 있다. 이런 경우는 release cycle이 매우 긴 경우 주로 사용하는데,
기업의 내부 IT 시스템 만들어서 몇 년씩 사용 하는 경우와 같은 때 이런 방식을 이용한다5. staging(스테이징 환경)
운영 환경과 거의 동일한 환경을 만들어 놓고, 운영으로 이전하기 전에, 여러 가지 비 기능적인 부분 (Security, 성능, 장애등)을 검증하는 환경이다.
6. production(운영 환경)
실제 서비스를 위한 운영 환경