작업관리와 버그리포팅의 필요성
ActionScript 에서는 아직까지 엔터프라이즈급 시스템이나 무작위의 다수가 참여하는 오픈소스 프로젝트 같은것이 흔하지 않습니다. 왠만한 상황에서 말로 해결하다, 좀 안되겠다 싶으면 주먹을 쓰기도 하죠… (아닌가? 욕을 하나?)
그렇게 작업계획의 공유와 버그가 발생했을시 리포팅을 받는 대화의 과정이 나름 상당히 많은 시간을 잡아먹고, 우리들이 야근을 하게 하는 주요한 원인이 되곤 합니다. 이런 일련의 커뮤니케이션 과정을 프로그램화 시킨것이 Trac 입니다.
뭐 굉장히 좋은 프로그램이긴 한데… 아직까지는 버전이 0.10 정도에 머무는지라 사용하기는 꽤 까다로운 편입니다. 비슷한 프로그램들로 JIRA 나 firefox 를 사용하는 분들은 낯이 익을 BugZilla 등이 있지만, 오늘은 Trac 을 중심으로 이야기를 해보도록 하겠습니다.
프로그램 좀 한다 싶으면 왠만큼은 낯이 익을 이 화면이 바로 Trac
Eclipse 는 3.3 을 사용합니다
아… 중요한 부분… TOW 에서 이야기가 멈춘다면 상관없겠지만, Mylyn 연동까지 내용이 진행되어야 한다면 Eclipse 는 3.3 버전을 사용해야 합니다. 최신 버전인 3.4 는 아직 플러그인 호환성이 낮고, 3.3 이전버전들은 Mylyn 최신판을 사용할 수가 없습니다.
TOW (Trac on Windows) 설치하기
Trac 은 설치하기가 무진장 까다로운 프로그램 중 하나입니다. 뭐 버전이 아직 낮다는것도 이유이긴 하지만, Apache 와 SQL, SVN 등과 호환을 시켜야 하기 때문에 셋팅하기가 드럽게 피곤한 프로그램이었죠. (뭐 APM 패키지가 나오기 이전의 PHP 환경 만들기랑 비슷하다고 보면 됩니다) 하여튼 이 드럽게 귀찮은 일을 한큐에 해결해주는 킹왕짱 스러운 패키지가 있었으니…
그것이 바로 TOW (Trac on Windows) 입니다.
TOW Download : http://sourceforge.net/projects/traconwindows/
보면 알겠다시피 한글판이 존재합니다. 한국분이 만드신다고 들었는데 아마 맞을겁니다.
다운로드는 standard 로 받습니다.
다운로드를 받으면 그냥 압축파일 인데요. 압축을 풀면 TOW 라는 폴더가 하나 나옵니다.
그 TOW 폴더를 C 드라이브에 옮겨놓습니다.
요렇게요.
TOW 폴더안에 들어있는 start-tow.bat 파일을 더블클릭하면 DOS 창이 하나 뜨면서 실행이 됩니다.
되었으면 http://localhost:8080/projects/HelloTOW 로 접속해 봅니다.
이렇게 Trac 의 첫화면이 나온다면 설치에 성공이 된 것입니다.
Trac : Admin 들어가기
Admin 의 로그인은 admin/towadmin 으로 되어있습니다. 어쨌든 로그인 합니다.
그러면 메뉴에 이렇게 Admin 메뉴가 추가로 생기게 됩니다.
Admin 에서 일단 봐둬야 할 것 들은…
프로젝트의 기본적인 내용을 수정할 수 있습니다.
새로운 사용자를 만들거나 할 수 있습니다.
사용자나 그룹에 권한을 부여할 수 있습니다. 기본설정에서는 로그인을 하지 않은 사용자도 Ticket (앞으로 나옴) 을 발행하거나 할 수 있는데요. 여기에서 anonymous 의 TICKET_CREATE 를 삭제해주면 로그인하지 않은 사용자는 Ticket 을 사용할 수 없게됩니다. 만일 admin 이 아닌 root 라는 아이디에 관리자권한을 부여하고 싶다면 오른쪽에 보이는 Grant Permission 에 Subject:아이디, Action:TRAC_ADMIN 을 써서 추가해줍니다.
컴포넌트 관리입니다. 일종의 작업파트라고 할 수 있으려나요… 뭐 core, tweener, xmlLoader 이런식으로 기능단위를 써놓으면 됩니다.
마일스톤 이라는 것은 프로그램의 중요한 시점을 이야기 합니다. 뭐 흔히들 이야기하는 코드네임 있죠? 예를 들어 비스타의 베타 마일스톤은 롱혼 이라고 적을수 있을것 같습니다. 작업의 목표가 되는 중요한 시점을 적어넣으면 됩니다. 사용하다 보면 이해가 되실거에요.
이건 건드리지 않아도 되는 부분이지만, 일단 소개를 합니다. 예를 들어 버그리포팅 시에 "매우 심각한" 이라고 설정을 하게되면 작업 우선순위가 최상위에 올라가게 됩니다. 작업 순위를 설정하게 됩니다.
이것 역시 딱히 손댈 필요는 없지만 소개를 합니다. 티켓을 만들때 그 티켓이 "버그리포팅" 이라면 문제점으로 선택하면 되겠고, 불편한 점에 대한 개선사항, 혹은 아직 작업되지 않은 신기능을 위한 해야할 일 등이 있을수 있겠죠. 그렇게 작업의 종류를 설정하게 됩니다.
프로그램 버전입니다. 마일스톤이 특정 시점 (alpha, beta, rc, release) 등을 구분한다면, 이것을 프로그램의 순수한 버전단계를 표시합니다. 뭐 버전이야 다들 아는 내용이니깐 딱히 이야기할 필요는 없겠네요.
이런 설정들을 통해서 trac 을 운영하게 됩니다. 마일스톤이나 티켓 같은 낯선 개념들은 아랫쪽에서 추가적으로 설명을 하겠습니다.
Trac : 티켓
티켓이란 표를 이야기 하죠? 뭐… trac 에서의 티켓 역시 비슷한 역할을 합니다. 다른 프로그램들에서는 task 라는 표현을 쓰기도 하는데, 티켓 이란 표현이 더 재밌는 것 같네요.
새로운 티켓을 만드는 예제입니다. 티켓에 대한 설명을 쓰고, 티켓의 타입은 버그 이므로, 문제점으로 설정했습니다. 내용을 쓴 이후에 여러가지 정보들을 써줍니다. 뭐 설명을 해보자면 이 버그는 "버전 1.0, 마일스톤2의, 컴포넌트2 쪽 부분에서 일어나는 매우심각한 버그이고, 이 버그는 이서연님이 해결하도록 합니다. 이 티켓은 고팀장에게 참조발송 됩니다." 라는 이야기 입니다. 어느 버전에서 일어나는지, 상황이 얼마나 심각한지, 어느 파트에서 일어나는지, 작업자는 누가 되어야 하는지를 써주는 것이죠.
이렇게 만들어진 티켓은
이렇게 시간이력(timeline) 에서 이력이 남게 됩니다. 이 타임라인은 뭐 관리자 계층이 작업이 어떻게 돌아가는가를 확인할때 보게되겠죠. 의외로 개인 파트 작업자는 볼일이 없습니다.
그리고, 이렇게 로드맵 상에서 마일스톤2의 티켓으로 포함이 됩니다. 마일스톤2에 해당하는 티켓들을 마구 발행해 놓으면 그 티켓들이 쌓여서 저기 보이는 작업 완료도에 대한 그래프를 생성하게 되는것이죠.
그리고, 이렇게 티켓들 보기 화면으로 들어가면, 티켓들을 여러가지 설정에 따라 볼 수 있게 됩니다. 개인 파트 작업자라면 7번의 나에게 할당된 티켓들을 통해서 확인이 가능하겠죠?
이렇게 활성화된 상태의 티켓들을 중심으로 작업을 진행하게 됩니다.
티켓을 클릭하면 이렇게 상세한 화면이 나오게 되는데요. 티켓에 대한 내용을 파악한 이후에는
여기에 보이는 화면대로 티켓을 수락하거나 (자신이 작업함을 알려두거나) 해결됨을 알리거나 (문제를 해결하거나, 이미 다른 티켓을 통해서 진행되고 있는 문제다라고 알리거나) 자신 대신 다른 작업자에게 재할당 하거나 (팀장이라면 하위 팀원들에게 재배포 하던지, 자신의 파트가 아니기 때문에 해당 파트원에게 돌리던지) 함으로서 티켓에 대한 응답을 해줍니다.
티켓이 완료되면 이렇게 시간이력에서 다시 확인이 가능하고,
로드맵 상의 작업완료도가 증가하게 됩니다.
음… 티켓을 만들고, 티켓을 통해서 작업하고, 티켓을 해결하고 하는 이 일련의 과정들을 보자면, 우리들이 흔히 원숭이처럼 꽥꽥 소리질러대면서 일하는 과정들과 크게 차이가 나지 않는다는 것을 알수 있습니다. 물론 Trac 이라는 프로그램만으로 자연스러운 커뮤니케이션을 진행한다는 것은 어려울수 있는 일이지만, 쓰잘데기 없이 낭비되는 여러가지 시간들을 아낄수 있고, 그 관리가 뚜렷해지는 장점을 얻을수 있습니다.
Trac : WIKI 사용하기
Trac 은 위와 같이 Ticket 을 발행하고, 처리하는 일련의 ToDoList 나 Bug report 역할을 하기도 하지만, 문서관리의 역할도 어느정도 하게 됩니다. Trac 안에 위키위키가 들어있기 때문입니다.
위키위키는 딱히 설명하기가 애매하네요. 위키피디아 등을 통해서 위키위키가 무엇인지 알고 계시는 분이라면 손쉽게 문서를 작성할 수 있을겁니다.
개인적으로 이렇게 Trac 을 통해서 작업에 필요한 문서들을 관리하고 있습니다. 자세한 사용법은 상단의 메뉴에 보이는 도움말/가이드에 있습니다. 몇 번 깔짝거려보면 쉽게 이해를 할 수 있을겁니다.
Subclipse : 설치하기
Trac 은 SVN 이라는 버전관리툴과 호환이 됩니다. 그리고, TOW 는 trac 과 동시에 svn 서버 역시 셋팅을 해주게 되죠. trac 의 주소가 http://localhost:8080/projects/HelloTOW 라면 SVN 의 주소는 http://localhost:8080/svn/HelloTOW 가 됩니다.
일단은 Eclipse 가 설치되어 있어야 하구요. Eclipse 가 설치되어 있다면
Subclipse : http://subclipse.tigris.org/install.html
이곳을 참고해서 설치를 하도록 합니다. (그림을 따라서 설치를 진행하면 됩니다.)
설치를 하고나면 이클립스를 ReStart 하라는 메시지가 나올텐데, 껐다 다시 켠 이후에
상단 Perspective 관리자에서 Other 를 선택해서
SVN Repository Exploring Perspective 를 선택한 뒤에 OK 를 누르면
이렇게 SVN 관리자가 나오게 됩니다.
오른클릭을 해서 새로운 저장소를 추가해봅시다.
TOW 를 설치한 여러분의 저장소는 http://localhost:8080/svn/HelloTOW 가 됩니다. (저는 개인적으로 서버를 하나 만들었기 때문에 도메인으로 사용을 하고 있는거구요)
완료를 하면 이렇게 새로운 저장소가 추가가 됩니다.
Subclipse : 체크아웃 받기
체크아웃이라는 말은 SVN 의 작업을 내려받는다는 의미가 됩니다. 끙… 설명하기가 어려우니 그냥 따라해보세요.
저장소의 trunk 를 선택한 뒤에 오른클릭을 해서 Checkout… 을 선택합니다. (trunk 는 작업공간, tag 는 특정 마일스톤의 보관, branches 는 trunk 의 정규작업이 아닌, 별외로 분리되어서 진행되는 작업을 진행하는 곳이 됩니다. 여기서는 작업공간을 내려받을 것이므로 trunk 를 체크아웃 받습니다.)
이런 화면이 뜨게 되는데 걍 놔두고, Finish 를 누릅니다.
그러면 이 trunk 가 어떤 형식의 프로젝트냐를 정하게 되는데요. 개인적으로 FDT 를 사용하므로 New Flash Project 를 선택합니다. 그리고, 이 이후에는 그냥 보통 프로젝트를 생성하듯이 진행되게 됩니다.
그러면 이렇게 trunk 와 연결이 된 프로젝트가 만들어지게 됩니다.
Subclipse : 필터링 룰 만들기
Subclipse 의 파일이나 폴더를 보면 SVN 상태를 알수가 있는데요.
요 lib 처럼 노란 표시는 이 폴더나 파일이 저장소의 내용과 같다 라는 표시이구요.
여기 보이는 * 표시는 저장소와 같지 않다 라는 표시입니다. subclipse 를 통해서 작업을 할때 새로 만든 프로젝트가 * 표시가 되어 있어서 당황하게 되는 경우가 많은데, 이럴땐
필터를 눌러서
모든 필터를 해제해 줍니다.
그러면 이렇게 필터링 되어서 안보이던 파일이 보여지게 됩니다. 이 ? 표는 저장소에는 없는 새로운 파일이다. 라는 뜻입니다. 이렇게 실제 작업파일이 아닌, Eclipse 셋팅파일들이 * 표시가 되는 경우가 있는데 이럴땐
파일에서 오른클릭 >> Team >> Add to svn:ignore 를 선택합니다.
그리고, 제외패턴으로 .* 을 만들어줍니다. 대부분의 설정파일들이 .xxx 의 형식을 띄고 있기 때문에 왠만해서 거의 필터링이 되게 됩니다.
Subclipse : 커밋 (commit)
이렇게 작업을 진행한 이후에 작업을 저장소에 올릴때는
프로젝트 >> 오른클릭 >> Team >> Commit… 을 눌러줍니다.
그리고 올릴 것들을 체크해주고 (아래 리스트에 체크박스 들을 체크합니다), 간단한 메모를 적어서 OK 를 누르면
이렇게 커밋이 진행되게 되고, 완료가 되면
이렇게 * 표가 사라지고, 저장소와 같다는 표시가 나오게 됩니다.
보통 SVN 의 사용시나리오에서는 여기까지가 끝인데, 우리가 사용하는 것은 Trac 과 연동된 SVN 이죠? trac 에 접속해 봅니다.
Trac 의 시간이력을 보면 이렇게 commit 된 내용이 시간이력으로 나오게 됩니다. 클릭해보면
이렇게 소스 브라우저를 통해서 올린 소스파일이나, 변경된 내역을 확인할수도 있습니다. 예를 들어 소스를 수정해서 올리면
이렇게 수정된 내역이 표시가 되게 됩니다. 위에 보면 알다시피 추가됨, 제거됨, 수정됨, 복사됨 등의 변경내역 확인이 가능하죠.
이런 수정내역 확인은 예를들어 A 라는 클래스의 method b 를 만들어서 다른 작업자가 사용하게 제공해야 하는 상황에서 소스를 만든뒤 업데이트 하고, 해당 작업자를 불러서 "이 소스는 이래요~" 하면서 설명할 필요없이 메일이나 메신저를 통해서 간단하게 소스브라우저의 내용을 링크로 보내주기만 해도 되게 됩니다. 혹은 Ticket 을 해당 작업자 앞으로 끊어서 이렇게 작업을 하세요… 라고 안내해도 되겠죠.
trac 은 이렇게 말로 설명하는 것과 실제 작업의 여러가지 데이터들을 따로 받고, 살펴야 하는 분리된 과정들을 하나로 합쳐서 진행할 수 있게 해줍니다.
Subclipse : 업데이트 (update)
SVN 으로 작업을 할때에 혼자 작업을 하고 있다면 상관없지만, 다수의 작업자가 작업을 진행하는 경우가 많기 때문에 작업에 들어가기에 앞서서 update 를 꼭 해주고 시작하는 것이 좋습니다.
프로젝트 >> 오른클릭 >> Team >> update 를 누르면 다른 작업자들에 의해서 수정이 된 여러가지 파일들이 업데이트 되게 됩니다. 뭐… SVN 을 놓고 여러 작업자들이 작업하다 보면 이런 상황이 자주 생깁니다.
"그거 수정됐어요?"
"예~"
"SVN 에 커밋 좀 시켜주세요~"
"예, 업데이트 해서 사용하세요"
뭐 이렇게 저장소를 중심으로 소스가 중앙관리 되기 때문에 여러작업자가 달라붙어서 작업을 하더라도, 메신저로 변경된 내용들을 주고 받고 하다가 소스가 엉킨다든지 하는 원시적인 에러 상황은 발생하지 않게 됩니다.
Subclipse : 태그 만들기 (Tag)
뭐 커밋과 업데이트를 반복하면서 작업을 진행하다가 마일스톤이 일정하게 완료가 된다면, 해당 마일스톤의 trunk 를 따로 빼놓을 필요가 생깁니다. 그런 것을 Tag 라고 부르게 됩니다.
SVN Repository Exploring perspective 를 다시 열고
trunk 에서 오른클릭을 해서 Branch/Tag 를 선택합니다.
그리고, 카피할 경로를 tags 폴더의 1.0 으로 지정합니다. (마일스톤1 이든, 1.0 이든 맘대로…)
뭐 이렇게 적어서 Tag 를 달면
이렇게 현재까지 완료된 작업이 1.0 이라는 버전의 tag 로 저장되게 됩니다. 1.0 버전을 사용하길 원하는 사용자들은 이 1.0 tag 를 다운로드 받아서 사용하게 되겠고, 현재 작업물을 따로 백업 받을 필요없이 간편하게 저장할 수 있습니다.
Mylyn : 설치하기
Eclipse 의 Task 를 사용하신다면 Eclipse 가 자체적으로 일정관리를 지원한다는 것을 아실겁니다. Mylyn 은 그런 Task 기능을 좀 더 강화해서, Trac 이나 Bugzilla, JIRA 같은 Task tool 들의 데이터를 Eclipse 의 Task 로 통합시켜 줍니다. 그리고, Local 의 Task 도 좀 더 강력하게 지원하지요.
Mylyn 다운로드 : http://www.eclipse.org/mylyn/downloads/
이 사이트에 가면 다운로드를 받을수 있는데,
Mylyn Eclipse3.3 용 : http://download.eclipse.org/tools/mylyn/update/e3.3
Mylyn Trac connector plugin : http://download.eclipse.org/tools/mylyn/update/extras
이 주소들이 eclipse 3.3 용의 다운로드 주소들입니다. 아까의 Subclipse 와 같이 업데이트 설치를 하도록 합니다.
설치가 완료되면 다시 ReStrart 하라는 메시지가 나오게 됩니다.
설치를 하고 나면 perspective 에 Planning 이라는 perspective 가 추가되어있는 것을 확인할 수 있는데요. Planning 을 선택하면
이런 화면을 볼 수 있습니다. 오른쪽에 이미 제가 사용중인 trac 의 task 가 나오네요.
Mylyn : Trac 연결하기
Mylyn 에다가 아까전 만들어놓은 Trac 을 연결시켜보도록 하겠습니다.
오른클릭을 한 뒤에 Add Task Repository 를 선택합니다.
우리가 추가하려는 것은 Trac 이므로 Trac 을 선택하고, Next 를 누릅니다.
서버는 여러분의 경우엔 http://localhost:8080/projects/HelloTOW 이겠죠? 라벨은 그냥 아무런 이름이나 편한대로 적어넣습니다. 그리고, 자신의 trac 아이디와 비밀번호를 넣고, Validate Settings 을 한 번 눌러주면 설정이 정확한지 확인해줍니다. 어쨌든 확인까지 끝냈다면 Finish 를 누릅니다.
그러면 보는것과 같이 TOW 라는 저장소가 추가됨과 동시에, 위와 같은 메시지가 뜨는데요. 이 메시지는 해당 trac 저장소에서 ticket 들을 가져올 쿼리(요청문)을 만들것이냐? 라는 의미입니다. yes 를 눌러보죠.
그러면 위와 같은 화면이 뜨게 됩니다. 뭐 아까의 Trac 내용과 연결시켜 보면 이해가 되시려나요?
위에서는 모든 컴포넌트, 모든 버전, 모든 마일스톤, 모든 상태의 Ticket 들을 가져오게 됩니다. 여기에서 좀 더 상세하게 들어가면 Owner 에 자신의 Trac 아이디를 넣음으로서 자신에게 할당된 Ticket 만을 가져오거나 특정 마일스톤의 Ticket 만을 가져오거나 할 수 있겠죠? 뭐… 자기 편한대로 쿼리를 설정하도록 합니다.
그러면 이렇게 Trac 에 존재하는 Ticket 들을 보여주게 됩니다. 만들어놓은 Ticket 이 closed 상태의 것 하나뿐이라서 좀 썰렁하네요. Eclipse 에서 Ticket 을 새로 만드는 것도 가능하니 한 번 만들어보도록 하겠습니다.
TOW 에서 오른클릭을 해서 New Task 를 누릅니다. (보통 Task 라는 개념을 쓰고, Trac 이 Ticket 이라는 이름을 씁니다.)
그러면 이렇게 Ticket 을 등록하는 화면이 나오게 됩니다. 뭐 내용들은 아까전의 Trac 화면과 비슷한 구성을 가지므로 쉽게 알수 있겠죠? 적절히 써준 다음에 Submit 을 누르면
이렇게 Task List 에 나오게 됩니다.
그리고, 해당 Task 를 작업완료 했을 경우엔 이렇게 Resolve as <"결과"> 를 선택해서 다시 Submit 해줍니다.
Mylyn 의 경우엔 이렇게 Trac 이나 Bugzilla, JIRA 같은 외부 데이터의 연동기능과 동시에 Local 의 Task 관리에도 꽤 뛰어난 편이니, 딱히 Trac 을 안쓴다고 해도 작업관리를 위해서 사용해보시길 추천해드립니다.
끝내며…
와 존내 기네요… 일하다가 짜증나서 아 힘들어… 글이나 쓸까… 하면서 쓰기 시작했는데, 더 피곤해졌어… 하긴, SVN 만 해도 한 일주일은 사용해봐야 감이 잡히고, Trac 도 나름 골치아프고, Mylyn 의 경우에도 상당히 전문적인 툴에 속하는 편인데, 이걸 한 편에 다 쑤셔박을라니 정신이 없을수도 있겠습니다.
뭐… 쵸큼 어려울수도 있겠지만, 한 번 쓰기 시작하면 많이 편해요.
여기 나온 내용들 만으로는 원활하게 사용하기 어려울수도 있을것 같네요. 저마다 다 한덩치씩을 하는 프로그램들인지라, 이렇게 짧은 내용으로 다 알수는 없을겁니다. 단지, 이런게 있고나… 정도가 되겠지요.
뭐 열심히 해보세요… ㅡ ㄴ ㅡ 저도 이거 공부하면서 뇌출혈 일으키는줄 알았었는데, 그 과정을 겪을 당신을 위해 묵념… 세상에 쉬운게 어디있겠습니까...
인생 날로 먹을수 있을것 같아???!!!



