Software Engineering

SW 개발환경 (dev, staging, production)

알로그 2020. 2. 10. 08:30
반응형

SW 개발환경

 

웹 개발을 진행하면서 서비스 품질을 위해 배포 환경이 중요하다는 것을 깨닫게 되었다.

각 환경을 분리해서 개발과 테스트를 진행해야 효율적이고 빠르게 릴리즈가 가능하고 팀원간 혼선도 줄어들게 된다.

 

 

분류를 어떻게 나누냐는 각 팀마다 다르겠지만 일반적으로는 아래와 같이 4단계로 나뉜다.

더 복잡하게는 Integration과 Testing(QC) 등으로도 분류할 수 있는 것 같다.

Environment Description
Local 각 개발자가 작업하는 개발환경
Development 각 개발자들의 커밋을 합쳐서 테스트해볼 수 있는 환경
Staging Production 서버와 동일한 환경을 만들어서 비기능적인 부분에 집중하는 환경
Production 실제 고객에게 서비스되는 환경

 

 

기존에 회사에서 프로토타입을 만들던 개발환경과 'A successful Git branching model'을 위와 대입해서 고민해봤을 때, 각 환경과 브랜치를 맵핑시켜서 아래와 같은 흐름으로 프로세스를 정리해보았다.

 

  1. 개발자는 feature/xx 브랜치를 따서 Local 환경에서 개발하고 자체 테스트를 진행한다.
  2. 개발과 자체 테스트가 완료되면 develop 브랜치로 pull request를 요청한다.
  3. develop 브랜치에서 CI와 연동해서 매일 unit test, integration test, system test를 진행한다.
  4. 릴리즈 시점때 release candidate 브랜치를 생성하여 staging 서버로 deploy 한다.
  5. 비기능 테스트를 포함하여 exit criteria를 만족하면 production 서버로 deploy한다. 

 

대부분 웹 개발에서 위와 같은 프로세스대로 진행하는 것 같다.

물론 각 팀마다 리소스, 프로세스, 환경을 고려해서 최적화해서 하는 것이 가장 중요하다.

 

 

반응형

'Software Engineering' 카테고리의 다른 글

Agile (애자일) 개발방법론  (0) 2020.04.04
Code Review (코드 리뷰)  (0) 2020.04.04
DevOps (데브옵스)  (0) 2020.03.01
정적분석 툴 선별시 고려할 사항  (0) 2020.02.29
스크럼 (Scrum)  (0) 2019.12.22