본문 바로가기

개발/소프트웨어공학

소프트웨어 개발 환경 - local, dev, integration, qa, stage, production

일반적으로 사용되는 소프트웨어 개발 환경에 대해 작성한다.
프로젝트 진행에 있어 모든 환경을 갖출 필요는 없으며 프로젝트 환경에 따라서 각 환경을 합치거나 생략해도 된다.

로컬 (Local)

각 개발 PC 에 개발 및 테스트 환경 및 서버를 셋업한 환경을 말한다.
로컬 서버 환경에서의 개발에서 주의할 부분은 모든 개발자가 같은 개발 환경을 사용해야 한다는 것이다.
서로 다른 개발 환경에서 작업한 코드를 머지할 때 로컬 환경에서 잘 작동했던 코드가 작동하지 않는 경우가 많다.
전체 개발 환경을 zip 파일 형태로 묶어서 사용하거나 Docker 등의 컨테이너 기술을 사용한다.

개발 (Dev)

개발자들이 작업한 코드를 머지하여 테스트를 진행할 수 있는 환경이다.
소스코드를 형상관리 시스템에 커밋하면 코드는 개발 서버에 배포되고 이 환경에서 개발 테스트(단위 테스트 등)를 진행한다.

통합 개발 (Integration)

컴포넌트가 의존성을 가지고 있을 경우 컴포넌트를 통합 및 테스트 하는 환경으로 사용한다.
최소한으로 구성하고 개발 환경에서 릴리즈가 되면 주기적으로 통합 개발 환경에 배포한다.

테스트 (QA)

QA 엔지니어가 기능 및 비기능 테스트 등을 수행하는 환경이다.
테스트를 수행할 때 라이브 환경과 유사한 환경을 만들고 테스트를 수행한다.

스테이지 (Stage)

라이브 환경과 거의 동일한 환경을 만들고 라이브 릴리즈 전 최종적으로 비기능적인 부분들의 테스트를 수행하는 환경이다.

프로덕션/라이브 (Production/Live)

실제 서비스를 진행하는 환경이다.