개발환경 서버를 구축해야하는 이유

개발서버가 아닌 개발환경 서버를 구축해야하는 이유

간단히 핵심만 적어보라고 한다면 '배포, 통제'로 요약되지 않을까싶다.

서버 인프라를 관리하는 인력이 별도로 존재할 정도의 큰 프로젝트라면 몰라도 적어도 내가 아는한 많은 수의 프로젝트는 개발자 기준으로 10~20인내외의 소규모이고 이런 프로젝트에서의 개발서버는 단지 실제 운영서버에 올라가기 전 고객이 살짝 테스트해보거나 프로젝트 문서를 공유하는 파일서버정도로만 활용되는 정도이다. 뭐 어쨌든 프로젝트는 잘 끝난다. 하지만 개발자들은 프로젝트기간이 지나면 뿔뿔히 흩어지고 유지보수 인력은 처음부터 다시 시스템을 파악해야하는 상황에 이르르게 된다.

이런 악순환이 반복되는 이유가 무엇일까라는 생각을 하다보니 배포, 통제라는 두 단어가 떠올랐다.

시스템을 건네받은 인력이 가장 곤란한 경우가 코드 수정을 마친 후 운영서버에 반영할 때이다. 막상 배포하고 보니 개발환경과 운영환경을 다르게 설정해야하는 부분이 있는데 이를 모르고 배포하여 장애를 발생하는 경우가 많다. 다음으로 svn같은 소스리파지토리에서 소스를 내려받아 코드를 수정했는데 운영서버에 배포되어있는 코드가 소스리파지토리에 커밋되어있지 않은 것임을 알아차린 순간 다시 소스를 처음부터 끝까지 검토해봐야하는 경우가 발생한다.

이 두가지 외에 유지보수시에 크게 문제가 되는 상황이 있을까. 이 두 가지만 해결하면 시스템 오픈 후 시스템유지보수에 많은 시간을 절약할 수 있을 것이다.

개발환경에서 운영환경으로 이관, 즉 배포하는 과정은 충분히 자동화할 수 있는부분이다. 그리고 이렇게 자동화된 배포환경에서라야만 소스변경이 일어날 시 관리자에 의해 모니터링하는 것이 가능하다.

개발환경 서버의 구성

배포, 통제라는 키워드를 중심으로 개발환경 서버를 구성해보았다. 세부툴의 선정은 PM이나 PL이 선정할 내용이지만 아래 네 개의 영역을 포괄할 수 있도록 구성해야 될 것이다.
  • 프로젝트 관리
  • 테스팅 관리
  • CI
  • 소스 형상관리
개발환경 서버는 창고에 굴러다니는 데스크탑 pc에 우분투를 설치해 운영해도 충분하다. 아니면  윈도우 설치한 다음 virtualbox 에 가상으로 올려 운영해도 된다. 다음은 이것저것 궁합을 따져보고 결정한 세부 툴 선정결과이다. 

  • 프로젝트관리 : redmine
  • 테스팅관리 : testlink
  • CI : jenkins
  • 소스형상관리 : git
오픈소스툴로 구성하다보니 추적성이라는 측면에서 부족한 부분이 많을 듯 하다. 이에대한 이야기는 다음에...

댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

VSCode에서의 VIM 단축키와 키보드 구매 가이드

우분투에서 테스트링크(testlink)와 맨티스(mantis)로 테스팅 서버 구성하기