반응형
SW 개발환경
웹 개발을 진행하면서 서비스 품질을 위해 배포 환경이 중요하다는 것을 깨닫게 되었다.
각 환경을 분리해서 개발과 테스트를 진행해야 효율적이고 빠르게 릴리즈가 가능하고 팀원간 혼선도 줄어들게 된다.
분류를 어떻게 나누냐는 각 팀마다 다르겠지만 일반적으로는 아래와 같이 4단계로 나뉜다.
더 복잡하게는 Integration과 Testing(QC) 등으로도 분류할 수 있는 것 같다.
Environment | Description |
Local | 각 개발자가 작업하는 개발환경 |
Development | 각 개발자들의 커밋을 합쳐서 테스트해볼 수 있는 환경 |
Staging | Production 서버와 동일한 환경을 만들어서 비기능적인 부분에 집중하는 환경 |
Production | 실제 고객에게 서비스되는 환경 |
기존에 회사에서 프로토타입을 만들던 개발환경과 'A successful Git branching model'을 위와 대입해서 고민해봤을 때, 각 환경과 브랜치를 맵핑시켜서 아래와 같은 흐름으로 프로세스를 정리해보았다.
- 개발자는 feature/xx 브랜치를 따서 Local 환경에서 개발하고 자체 테스트를 진행한다.
- 개발과 자체 테스트가 완료되면 develop 브랜치로 pull request를 요청한다.
- develop 브랜치에서 CI와 연동해서 매일 unit test, integration test, system test를 진행한다.
- 릴리즈 시점때 release candidate 브랜치를 생성하여 staging 서버로 deploy 한다.
- 비기능 테스트를 포함하여 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 |