-
무료 툴을 이용한 개발 자료 관리 - 설치과정IT정보공유 2019. 1. 20. 20:48
1. 개발 자료 관리의 필요성
벤처나 일인 기업을 창업하고 유지 하는 데에는 금전적으로 부담이 될 것 입니다. 그래서 보통은 회계 프로그램만을 도입하고 자료관리는 압축하거나 개별적으로 관리가되어 지는게 현재 많은 벤처나 일인 기업의 상황일 거라고 생각이 듭니다. 하지만 무료의 툴로 형상관리와 이력 관리를 손쉽게 할 수 있는 방법이 있습니다. 필요한 것은 환경에 적응해야 하는 대표와 개발자의 노력이구요.
금전적으로 여유가 있다면 이력과 형상 관리 방법를 제공하는 유료 툴을 사용하길 권장합니다. 하지만 그렇지 않다면 저는 최소한 무료 툴로 구성하여 회사에 적용하고 관리되어 지길 바랍니다.
개발 과정에서 자료 관리 지원 툴의 필요성을 아래와 같이 작성해봤습니다.
- 개발 과정에서 발생하는 이슈 관리의 필요성.
- 개발 단계에 따른 처리 방법과 충격에 따른 절차의 필요성
- 생산된 자료의 신뢰성 보장
- 개발 과정에서 습득한 자료의 활용성
- 외부에서 내부 자료 접근의 필요성
제가 생각하는 필요성은 위 와 같은데요. 그림까지 추가하여 설명하면 이해가 쉽겠지만 글로만 작성했습니다. (이미지는 한부로 사용하면 안된답니다.)
1.1. 개발 과정에서 발생하는 이슈 관리의 필요성
이슈 관리의 필요성은 회사 내에서 또는 프로젝트에서 이슈는 수시로 발생합니다. 발생한 이슈는 담당자가 할당되고 처리에 따라 보고가 되어 처리가 됩니다. 간단한 일의 경우 굳이 기록이 되지 않아도 문제가 없지만 기술적인 처리나 회의를 통하여 처리되는 일의 경우 기록과 처리 방법 등을 기록하고 같은 이슈가 발생할 경우 같은 대응을 할 수 있도록 기록 되고 관리될 수 있어야 합니다.
1.2. 개발 단계에 따른 처리 방법과 충격에 따른 절차의 필요성
개발 과정은 여러 단계로 이루워집니다. 협의, 설계, 구현, 검증, 납품 등으로 기본 5가지로 구분해 봤는데요. 회사나 개인적인 기준에 따라 더 세분화 될 수 있습니다. 각 단계마다 처리 방법과 그에 따른 충격에 의한 절차가 정립되어 있어야 합니다. 예를 들어 검증 과정에서 설계의 오류를 발견하였다면 설계 수정과 구현, 검증의 순를 다시 수행해야하고 당연히 일정 조정이 이루워져야하며 이에 따른 기록도 함께되어야 한다는 것을 절차를 만들어 회사의 기본 방침으로 되어야 동료들과의 논의가 잘 이뤄질 수 있다고 저는 생각합니다.1.3. 생산된 자료의 신뢰성 보장
개발 과정에서 생상된 자료는 신뢰성이 있어야 합니다. 이를 보장하기 위해서는 테그 번호가 부여되어야하며 개별적으로 이를 수행하는 것은 인력 낭비라고 생각합니다. 회사에 형상관리 서버 한대만 도입하여 운영관리만 되어지면 생상된 자료의 신뢰성은 보장 될 수 있습니다.1.4 개발 과정에서 습득한 자료의 활용성
개발 과정에서 습득한 자료의 활용은 기술의 재활용성을 고려하여 필요한 것입니다. 1인 기업의 경우는 위에서 언급한 절차와 형상관리만 되어져도 개인적으로 기억만 잘하시면 기술을 잃어버릴 염려는 없습니다. 하지만 2인 이상의 회사에서는 필요하다고 봅니다. 프로젝트가 끝나고 참여 개발자를 포함하여 논의하고 필요한 기술이 산출되고 공유할 수 있는 영역에 기록되어야 합니다. 당연히 공유될 수 있는 영역도 미리 만들어 있어야 합니다.1.5. 외부에서 내부 자료 접근의 필요성
외부에서 내부 자료 접근은 개인적으로 보안을 고려하면 답이 없습니다. 저는 ID/PW로 접근은 허용될 수 있다고 보며 접속 시에는 회사 노트북으로만 접근을 허용한다면 된다고 봅니다. 일하다보면 외부에서 일을 하는 경우가 종종 발생합니다. 이 또한 이슈의 발생 기록과 관리가 필요합니다.
2. 기본 개발 환경
위에서 언급한 관리를 하기 위해서는 환경이 제공되어야 합니다. 기본적으로 아래 그림과 같은 환경으로 구성된다면 무료로 사용 할 수 있습니다.2.1 설치 툴 정보
- 우분투: 16.04 이상 버전
*HDD 용량은 1TB 이상으로 2개의 HDD를 설치되면 백업이 용이합니다.
- Subversion: 최신버전
- Redmine: 3.4.3.1 (Bitnami Redmine Stack: 2019년 1월 현재 버전은 4.0.1로 확인된다.)
*Redmine 버전이 높아지면 plugin 설치에 문제가 발생할 수 있다.
- 공유폴더: 편한거 설치 (웹에서 우분투 samba 검색)
- FTP Server: 편한거 설치 (웹에서 우분투 FTP 검색)
2.2 툴 설치
툴 설치는 Subversion과 Redmine만을 설명합니다. 나머지는 검색해보시면 많은 곳에서 잘 설명이 되어 있습니다.
Redmine, Subversion도 설치과정은 설명이 잘되어 있지만 추가적인 설명이 있어서 설명합니다.
기본적이로 우분투(리눅스) 사용을 알아야 설치과정을 무난히 이해하고 실행 할 수 있습니다.2.2.1 Subversion 설치
# sudo apt-get update
# sudo apt-get install subversionsvn 서버를 설치합니다.
# sudo mkdir -p /home/svn_data
svn 저장소 디렉토리를 만들고 기본 저장소를 하나 추가합니다.
2.2.2 Subversion에 프로젝트 생성 및 사용자 추가
만들어진 svn_data 저장소에 프로젝트 별로 추가할 수 도 있고 하나의 폴더를 생성하여 관리 할 수도 있으며 후자의 경우 관리자가 편하지만 모든 데이터에 회사의 모든 사람의 접근을 허용하게 되는 문제가 있다. Subversion를 세심하게 제어하는 방법이 있을 텐데 저는 모르겠습니다.
# sudo svnadmin create /home/svn_data/test1
# cd /home/svn_data/test1/conf
# sudo vi ./svnserve.conf
아래 표와 같이 수정 합니다.
anon-access = none
익명 사용자 접근 불가
auth-access = write
허가된 사용자는 읽기/쓰기 가능
password-db = passwd
암호 저장 파일을 passwd로 설정
# sudo vi ./passwd
사용자 ID/PW를 아래와 같이 넣습니다. 추가 사용자가 있을 경우 더 작성하면 됩니다.
redmine = redmine_access
redmine과 Subversion과 연동하기 위해 만든 ID
2.2.3 Subversion 실행 확인
설치된 Subversion 실행이 되는지 확인은 아래와 같이 직접 실행 할 수 있다.
# sudo svnserve -d -r /home/svn_data
※ Subversion에 접근하기 위해서는 사용자 PC에 TortoiseSVN 툴이 설치되어 있고 사용법을 알고 있다고 생각하고 넘어가겠습니다.
2.2.4. Subversion 자동 실행
실행 확인이 되었다면 PC가 켜지면서 자동으로 Subversion을 실행하도록 하는 것이 사용자 정신건강에 좋을 겁니다.
# sudo vi /etc/init.d/subversion
#! /bin/sh
# svn
case "$1" in
start)
echo -n "Starting svnserve: "
svnserve -d -r /home/svn_data/
echo
;;
*)
echo "Usage : $0 {start}"
exit 1
esac
exit 0
# sudo chmod +x /etc/init.d/subversion
# cd /etc/rc3.d
# sudo ln -s ../init.d/svnserve S90subversion
2.2.5 Redmine 설치
Redmine는 bitnami redmine stack 설치 파일을 이용하여 간편하게 설치하도록 한다. 제가 사용하고 설치한 버전은 3.4.3.1 입니다. Redmine 버전이 다르면 뒤에 설치하는 plugin를 재확인해야 될 것입니다. 같은 버전을 다운로드하고 싶으시면 bitnami에 직접 요청해야 받을 수 있는 것으로 알고 있습니다.
파일 다운로드 경로: https://bitnami.com/stack/redmine/installer
다운 받은 실행 파일을 아래와 같이 설치를 진행합니다.
# sudo ./bitnami-redmine-3.4.3-1-linux-x64-installer.run
※ 설치를 진행하면 언어를 한국어로 선택하면 된다.
※ Subversion는 위에서 개별로 설치하였기 때문에 체크해제 해야 된다.
※ 설치 경로는 지정된 곳이 없다면 기본 경로로 설치를 진행한다.
※ 관리자 ID를 만드는 단계이다. 설치 후 처음 접속할 때 사용할 ID 이므로 잘 적어놀 필요가 있다.
※ Redmine의 변경되는 정보를 메일로 전달 받기 위해서는 위와 같이 등록해야 한다. 기본적으로 GMail을 사용하면 손쉽게 설정할 수 있다.
2.2.6 Redmine 자동 실행하기
Redmine도 Subversion과 같이 PC가 부팅되면서 실행을 해줘야 접속이 가능하다. 그러기 위해서 앞서 한것과 같이 스크립트 파일을 만들어 등록해줘야 한다.
# sudo vi /etc/init.d/redmine
#! /bin/sh
# redmine
case "$1" in
start)
echo -n "Starting redmine: "
/opt/redmine-3.4.3-1/ctlscript.sh start
echo
;;
stop)
echo -n "Shutting down redmine: "
/opt/redmine-3.4.3-1/ctlscript.sh stop
echo
;;
restart)
echo -n "Shutting down redmine: "
/opt/redmine-3.4.3-1/ctlscript.sh restart
echo
;;
*)
echo "Usage : $0 {start|stop|restart}"
exit 1
esac
exit 0
# sudo chmod +x redmine# cd /etc/rc0.d
# sudo ln -s /etc/init.d/redmine K14redmine
# cd /etc/rc3.d
# sudo ln -s /etc/int.d/redmine S90redmine
※ 위와 같이 모든 설정이 끝나면 PC를 재부팅하여 Redmine 접속을 확이해본다. 접속 IP는 Subversion과 같으며 추가적으로 redmine이 붙는다. ( http://192.168.0.12/redmine )
2.2.7 Redmine Plugin 설치Plugin은 Issure Templates과 checklists 두가지를 설치할 예정이다. 필요에 따라서 선택하여 더 설치하면 되지만 저는 두 가지만으로 충분하다고 판단 합니다.2.2.7.1 Issure Templates 설치Redmine에서 일감을 생성할 경우 백지 상태로 만들어 지는데 이 플러그인을 설치하고 사용하면 기본적인 형태를 제공할 수 있게 된다.제가 사용한 버전은 0.2.1 이다.Redmine 설치 폴더에서 use_redmine 스크립트를 적용한다. (아래 그림 참조)# sudo ./use_redmine# cd ./apps/redmine/htdocs/plugins
# cp ~/redmine_issue_templates-0.2.1.tar.gz ./
# tar xzvf redmine_issue_templates-0.2.1.tar.gz
# mv redmine_issue_templates-0.2.1 redmine_issue_templates
# cd ../
# bundle exec rake redmine:plugins:migrate RAILS_ENV=production
2.2.7.2 Checklists 설치
현재 플러그인을 설치하여 사용하면 Redmine에서 일감의 진행하면서 확인하고 진행해야하는 중요 맥락을 체크리스트로 만들 수 있게 된다. 일감이 완료가 되기 위해서는 체크리스트가 모드 완료되어야 가능하다. 기본 기능정도만 사용하면 무료로 사용할 수 있으며 히스토리 기능과 템플릿 기능을 사용하게 되면 구입하여 사용해야 되는 플러그인이다.
다운로드: https://www.redmineup.com/pages/plugins/checklists
설치방법: https://www.redmineup.com/cms/pages/help_checklists_installation_bitnami
설치할 때 Redmine이 동작하고 있는 상태에서 진행되어야 한다.
# cd /opt/redmine-3.4.3-1/apps/redmine/htdocs/plugins
# cp ~/redmine_checklists-3.4.3-1-light.zip ./
# unzip redmine_checklists-3.4.3-1-light.zip
# bundle install --without development test --no-deployment
# bundle exec rake redmine:plugins NAME=redmine_checklists RAILS_ENV=production
※ use_redmine 스크립트가 적용되어 있어야 설치가 가능하다.2.2.8 Redmine 확인설치된 plugins을 확인하고 설치되어 있다면 아래 그림과 같이 Redmine에 접속하여 확인 할 수 있다.
2.2.9 공유폴더
공유폴더가 필요한 이유는 회사 내에 여러대의 PC에서 한시적으로 자료를 공유할 때나 용량이 큰 설치 툴를 공유할 때 필요합니다. 저는 프로젝트를 진행하면서 발생하는 설치관련 툴을 공유 폴더에 저장하여 공유하였습니다.
samba 설치 참조: https://techlog.gurucat.net/290
위 사진 처럼 우분투의 디렉토리 정보와 윈도우의 창에 떠 있는 폴더 정보가 같음을 확인할 수 있다.
2.2.10 FTP server
FTP 서버의 필요성은 외부에서 접근을 허용할 때 필요하다. 제가 일하는 경우 외부에서 설치 툴과 같은 큰 용량의 데이터 옮기는 경우에 필요했습니다. 레드마인과 SVN을 외부에서 접근를 허용할 경우 FTP 서버는 거의 필요가 없었습니다.
2.3 외부 접속 허용
저는 iPtime을 사용하였기에 다른 제픔을 사용하신다면 그에 맞는 설정 방법을 직접 찾으시면 됩니다.
2.3.1 DDNS 설정
출장이나 외근이 발생할 경우 레드마인과 SVN을 접속할려면 외부에서 접근할 수 있도록 통신망을 설정해야 합니다. 저는 iPtime의 공유기에서 DDNS를 설정하여 외부에서 접근 할 수 있도록 하였습니다.
위 사진과 같이 DDNS를 만들면 공유기까지 접속을 허용한다고 보면 됩니다. 이 다음에 redmine과 svn이 설치되어 있는 PC로 접속하기 위해서는 포트포워드를 설정해야 합니다.
2.3.2 포트포워드 설정
DDNS로 들어와서 세부 접근을 설정한다고 생각하면 됩니다. Redmine과 SVN의 내부 포트가 달라서 외부 포트로 구분한 것입니다. 외부 포트는 임으로 설정한 것으로 수정 하셔도 되며 내부 포트와 같은 값을 사용하셔도 됩니다.
2.3.3 Redmine 외부 접속 확인
아래 그림과 같이 DDNS 주소와 포트포워드에서 설정한 포트를 결합하여 회사 내의 Redmine PC에 접속할 수 있다.
2.3.4 Subversion 외부 접속 확인
subversion 또한 Redmine과 같이 접속이 되는 것을 아래 그림에서 확인 할 수 있씁니다.
2.4 Redmine에 Subversion 연결
Redmine에 Subversion을 연결하면 이력관리와 형상관리가 함께 이뤄진다고 보면 됩니다. 개발자는 보통 Subversion(SVN)을 이용하여 개발 과정에서 코드의 변경 시점을 저장하는 것을 할거라고 봅니다. Redmine는 과정의 변경점이 아닌 외부 또는 내부의 회의를 통한 결정되는 이력을 작성한다고 보면 됩니다. (그림으로 추가 예정)
2.4.1 Redmine 기본 설정
SVN를 연결하기 전에 현재 설치된 Redmine에서 몇가지 설정을 해줘야 합니다. Redmine에 접속하여 관리 -> 설정으로 갑니다.
설정 메뉴에서 여러개의 탭들이 존재하는데 기본 설정된 부분을 수정해야 됩니다. 제가 한 설정을 기준으로 설명하겠습니다.
일반 탭의 기본 설정
표시방식 탭의 설정
사용자 표시 형식은 한국식으로 성이름 으로 표시하도록 했습니다. 처음 접속 시에는 영문만으로 되어 있습니다. 왼쪽의 사용자 를 눌러서 이름과 성을 작성하시면 한글로 볼 수 있습니다.
프로젝트 메뉴의 새로 만들기 탭은 Redmine의 프로젝트의 표시 방식을 바꾼 것으로 새 일감을 메뉴에 추가한 것입니다.
인증 탭의 설정
인증이 필요함은 Redmine 접속해야 사용이 가능한 것으로 개인 자료를 보관하기 위해서는 기본으로 해줘야 할 것입니다.
사용자들이 자신의 계정을 삭제토록 허용은 체크 해제한 이유는 관리자가 직접 정리하기 위함입니다.
메일 주소 숨기기는 다른 사람의 메일을 보고 싶은 경우 숨겨 있기에 답답할 때가 있더라구요.
프로젝트 탭 설정
프로젝트 탭 설정은 프로젝트를 만들 때 가장 영향을 많이 주는 탭 입니다.
새 프로젝트를 만들 때 기본적으로 추가할 일감 유형에 "결함", "새기능", "지원"을 기본으로 추가하도록 설정한 것입니다.
다음에는 일감 유형을 추가하는 방법을 설명하도록 하겠습니다.
일감 추적 탭 설정
아래 그림과 같이 설정하였고 휴일을 선택한 이유는 주말에 메일 등을 멤버들에게 보내지 않도록 한 것입니다. 휴일에는 쉬셔야죠.
파일 탭 설정
최대 첨부파일 크기는 기본적으로 5MB 정도로 되어 있다 요즘 50MB는 되던가 더 키워야 사용하는데 편할 것입니다.
메일 알림 탭 설정
발신 메일 주소는 Redmine을 설치할 때 입력한 메일을 넣으면 됩니다.
프로젝트의 일감 변경이 될 경우 모든 메일 받는 것이 관리자가 관리하는데는 편합니다.
알림메일의 조건을 더 추가 하셔도 됩니다.
저장소 탭 설정
Subversion는 체크가 되어 있어야 합니다.
커밋을 자동으로 가져오기는 체크해제합니다. 체크되어 있을 경우 저장소에 접속 시에 읽어오는 데이터량이 많을 경우 지연이 발생합니다.
저장소 관리를 WS를 사용 체크하여 API 키를 생성합니다. (SVN과 연동에 사용 할 것 입니다.)
일감 참조에 사용할 기워드들는 더 필요한 경우 더 추가하시면 됩니다. 아래 그림에는 "refs", IssueID" 두개를 이용하여 "진행", "의견"으로 상태를 SVN 업데이트 과정에서 일감 상태가 변경되는 것을 확인 할 수 있도록 하겠습니다.
2.4.2 Redmine 프로젝트 생성
기본 설정이 다 하였다면 프로젝트를 하나 만들어 봅시다.
일감 유형은 설정에서 체크 했기에 기본으로 삽입됩니다. 저장소가 체크되어 있어야 SVN과 연결을 확인 할 수 있습니다.
위에서 만든 test_redmine 프로젝트의 개요 탭에서는 일감 유형의 상태를 한눈에 볼 수 있도록 되어 있습니다. 저장소 등록을 설명하기 위해서는 설정으로 가서 저장소를 등록해야 합니다.
식별자는 프로젝트 약어나 의미 있는 단어로 선별하여 하시면 됩니다. 차후 일감에서 세부적으로 접근에 사용될 수 있습니다.
URL는 위에서 외부에서 접근하는 방법를 설명하는 주소를 등록한 것을 예로 보여준 것입니다. 외부 접근을 허용하지 않을 경우 내부 IP로 변경하시면 됩니다.
로그인과 비밀번호는 Subversion에서 프로젝트 만들 때 passwd 파일에 기업한 ID/PW를 넣으면 됩니다.
정상 등록이 된 경우에는 아래와 같이 저장소 탭이 보이며 SVN에 들어있는 파일을 볼 수 있습니다.
2.4.3 Subversion 설정
Redmine에 프로젝트를 생성하고 저장소를 정상 등록하였다면 Subversion에서도 Redmine와 연결하기 위해서 해야 할 것이 있습니다.
설정-> 저장소에서 만든 API 키를 이용하여 스크립트를 만듭니다.
# cd /home/svn_data/test1/hooks
# sudo vi ./post-commit
#!/bin/sh
REDMINE_ADDR=wonjunwoo.iptime.org:3000/redmine
SVN_API_KEY=4Q2TtYydnhdgXhkYcWBP
wget "http://${REDMINE_ADDR}/sys/fetch_changesets?key=${SVN_API_KEY}"
2.4.4 Redmine 일감 생성 후 SVN를 이용한 상태 변경
위 에서 프로젝트 생성과 저장소를 정상 등록 하였다면 프로젝트 내에 일감을 하나를 만들고 SVN를 이용하여 일감 상태 변경과 등록되는 것을 해봅시다.
일감을 만들면 위와 같이 깨끗하게 만들어진 것을 볼 수 있습니다. 이 일감에 SVN에서 등록하여 자동 변경되는 것을 해보겠습니다.
SVN에서 변경된 파일을 업데이트 할 때 설정에서 설명한 refs 에 일감 번호를 작성하고 커밋합니다.
위 그림과 같이 일감 상태가 신규에서 진행으로 변경되고 SVN에서 커밋한 내용이 오른쪽 하단에 자동으로 붙었으며 일감 상태가 변경된 시점이 왼쪽에 이력으로 작성된 것을 확인 할 수 있습니다.
IssueID는 연습 삼아 직접 해보시고, 일감 상태가 다양하게 만들 경우에는 사용할 키워드를 추가하여 사용하시면 됩니다. 추가는 설정의 저장소에 가셔서 하시면 됩니다.
다음 편에는 설치된 Redmine과 Subversion를 활용하는 방법을 설명하겠습니다.
'IT정보공유' 카테고리의 다른 글
설치한 관리 툴 백업 방법 (0) 2019.01.27