[참고하기 좋은 내용] 개발 환경 분리

2021. 5. 11. 00:48참고하기 좋은 내용

1. 개발 환경 분리

1) Local

말 그대로 개발할 때의 각자 개발자 PC 환경을 뜻한다. 이 때 중요한 점은 코드를 합칠 때의 문제가 발생하지 않도록 모든 개발자가 동일한 개발 환경을 사용해야한 다는 것이다.

2) Dev

개발 환경은 각 개별 개발자들이 만든 코드를 합쳐 서버 환경에서 테스트해볼 수 있는 환경이다. 소스 코드를 형상관리 시스템에 Commit하면 코드는 이 Dev 환경에 자동으로 배포되고, 이 환경에서 테스트가 된다. 기능 개발을 위주로 하기 때문에 서버의 환경은 Production 보다 훨씬 작다. Production 환경이 클러스터링 환경으로 수개의 서버로 구성될 때, 개발 환경은 한 두 개의 서버로 기능 구현이 가능한 정도로 구축하는 것이 일반적이다.

3) Integration

통합 개발 환경은 여러 개의 컴포넌트를 동시 갭라하는 프로젝트가 있고, 각 컴포넌트가 다른 컴포넌트에 대해서 의존성을 가지고 있을 때 컴포넌트를 통합 및 테스트 하는 환경으로 사용한다. 단말과 서버를 같이 개발하는 환경의 경우 사용한다. Dev 환경과 동일하게 최소한으로 Set으로 구성되며 Dev 환경에서 Release 되면 주기적으로 Deploy한다.

4) QA

테스트 환경은 QA 엔지니어에 의해서 사용되는 환경으로, Short Release 주기에 따라 개발환경에서 QA 환경으로 배포 되고, 여기서 기능 및 비기능 등을 QA 엔지니어가 수행한다. 비 기능 테스트를 수행할 시에는 Production과 거의 유사한 환경에서 테스트를 수행한다.

5) Staging

운영 환경과 거의 동일한 환경을 만들어 놓고, 운영환경으로 이전하기 전에 여러 가지 비 기능적인 부분(Security, 성능, 장애 등)을 검증하는 환경이다. 쉽게 생각한다면 기획팀, 클라이언트 업체, 개발 팀 등에게 공유되는 일련의 최종 검수 환경이라고 생각하면 된다.

6) Prod

실제 서비스를 위한 운영 환경이다.

 

 

 

2. 요약

상황에 따라서는 Integration, QA, Staging 환경은 요구 사항에 따라 합치거나 별도로 운영한다. 환경이 많아지면 유지하는데 필요한 서버들과 운영 인력이 많이 소요되기 때문에 가상화 환경에서 이미지를 만들어 놓았다가 실제 테스트를 할 때 Deploy하여 사용하고 사용이 끝나면 다시 이미지를 스토리지에 저장해 놓는 전략을 많이 사용한다.

 

성능 테스트는 두 가지 경우로 나뉠 수 있다.

  • 서비스가 오픈되기 전 성능 테스트
  • 운영중인 서비스의 성능 테스트가 필요할 때

 

전자의 경우, 사용자가 없기 때문에 문제가 발생하지 않는다. 하지만 후자의 경우 운영중인 서비스를 중단시킬 수 없기 때문에 Staging 서버를 구성한다. Staging 환경은 Prod와 동일한 인프라 구성을 가지고 있는 별도의 서버군이다. 성능 테스트가 자주 필요하다면 Stage 환경을 유지할 필요가 있지만, 자주 테스트를 하지 않는다면 유지하지 않는 것이 좋다. (성능 테스트를 할 때마다 새로 서버군을 구성하는 것은 매우 비효율적)

 

회사마다 개발 환경은 모두 다르지만, 어느정도 규모가 있는 경우 Local / Dev / Staging / Prod 로 나눈다. 규모가 작다면 Local / Staging / Prod 로 나누는 경우도 있다고 한다.


[참고] bcho.tistory.com/759

728x90