ALM

개발환경 자동화 환경에 대한 추천 조합

Terry Cho 2008. 3. 13. 11:04

몇가지 개발환경 자동화에 대한 테스트 조합을 해본결과에 대해서 추천을 드리겠습니다.

1. 이슈 관리 시스템
Mantis,Trac,Bugzilla,JIRA를 운용해봤습니다
결과는 JIRA가 가장 좋다는 것이 결론이고 구입 비용은 대충 120만원이면 일반 기업에서 무리 없이 사용이 가능합니다.
나머지는 오픈 소스 인데, Trac의 경우 기능은 막강하지만 인스톨과 운용이 어렵기 때문에 작은 단위나 기술력이 부족한경우에는 그다지 추천하고 싶지 않습니다.
Bugzilla의 경우 제 경우 매우 편리하게 사용을 했습니다만, 인스톨이 제법 까다롭습니다.
Matins의 경우 Instant Mantis라는 것으로 매우 쉽게 설치 및 운용이 가능합니다. 한글 지원도 잘되구요. 그러나.. 프로세스에 대한 흐름이나 UI가 좀 딸리는 느낌이 듭니다.

2. 소스 관리 도구
SVN이 널리 사용되기 때문에 다른 언급은 하지 않겠습니다.
단 SVN의 내용을 (소스나 변화 내용, 브렌치 추적) 웹에서 보여주는 도구로는 Fisheye가 제일 좋더군요. (유료입니다.) JIRA하고 연동도 쉽구요.
 무료로는 sventon이 비교적 사용도 쉽고 연동도 쉽습니다. 둘중 하나를 사용해보시는것이 좋겠습니다.

3. 빌드 스크립트
대표적으로 ANT와 MAVEN이 있습니다만, MAVEN의 경우 의존성 관리등이나 여러 기능적인 장점은 가지고 있습니다.
그러나.. 저의 경우 대부분의 작업이 엔터프라이즈 솔루션을 기반으로 하고 있는데, 이런 엔터프라이즈 개발 도구들은 MAVEN을 아직까지 지원하지 않는 경우가 많기 때문에 ANT를 사용합니다.

4. CI도구
Cruise Control, Team City, Anthill Pro, Hudson등이 있습니다.
Cruise Control은 오래된 솔루션 같구요.. 자바진영에서는 이미 좋은 솔루션들이 많아서 다른 솔루션을 사용하시는것이 좋겠습니다. Anthill pro가 많이 언급되는데 유료이고 아직 사용해본 경험은 없습니다만 널리 사용되는 만큼 추천할만 합니다.

무료로 사용될 수 있는 솔루션이 Team City Pro, Hudson이 있는데,
Hudson이 직관적이고 사용법도 매우매우 쉽습니다.
그러나 아직 개발 중인 관계로 버그가 종종 있고 자료가 적어서 다소 삽질이 많이 필요합니다. Team City는 완성도가 높지만 직관도는 Hudson에 비해서 떨어지는 것 같습니다.

5. 테스팅 도구
단위 테스트는 말할것 없이 JUnit이 추천할만합니다.
단!! JUnit은 3.X와 4.X가 코딩 스타일이 다르고 (물론 기능은 4.X가 더 좋습니다.) 특히 JUnit과 조합되는 프레임웍에서 4.X를 지원하지 않는 경우가 많기 때문에 3.X를 추천합니다.

In Container Test로는 JUnitEE와 Cactus가 있는데, 개인적으로는 Cactus를 추천합니다.
Cactus의 경우 Test Wrapper를 JUnit을 상속 받아 만들 수 있기 때문에, JUnit을 지원하는 모든 도구들과 잘 어울립니다. 특히 단위 부하 테스트를 해야하는 경우 Japex와 잘 조합이 되기 때문에 JUnitEE보다 약간 불편하긴 하지만 Cactus를 사용하는 것이 좋겠습니다.

다음으로 엔터프라이즈 시스템의 경우 DB에 대한 테스트 전후에 데이타 초기화와 개발자간의 테스트 데이타 동기, 그리고 테스트 결과 비교에 매우 유용합니다.

다음은 단위 성능 테스트인데,
JPerfUnit은 성능지표를 측정만 하는 것이기 (테스트가 어느 성능에 도달했는지 못햇는지) 때문에 단독으로는 큰효과를 얻을지는 미지수 입니다.
Japex의 경우 Junit과 조합되어 기존 JUnit에 대한 부하 테스트가 가능하고 Hudson과 통합이 매우 잘됩니다. (사용법도 간단하구요..) 이건 꼭 추천합니다. 그래프 기능도 좋구요..

6. 테스트 커버러지
다음으로는 테스트 결과에 대한 분석을 위한 커버러지 도구인데, 크게 Cobertura와 EMMA가 있습니다. EMMA는 이클립스 연동은 잘되지만 EAR이나 WAR에 대한 Instrument를 지원하지 않기 때문에, EJB등의 패키징이 많은 (JAR,WAR,EAR) JEE 시스템에는 그리 적절하지 않습니다. Cobertura의 경우 기존 패키징된 아카이브에 instrument를 할 수 있기 때문에 편리하게 사용할 수 있습니다. EMMA의 경우 runtime instrumentation을 지원하기 때문에 대안은 될 수 있겠지요. 이건 사용자의 몫에 맏깁니다.

7. Code Inspection
코딩에서 에러 발생 가능성이 있는 부분이나 코딩 스타일의 문제를 지적하는 것인데, FindBug나 PMD같은 도구들이 있고 상용으로는 Klockworks등이 있습니다만 이건 팀의 기술과 프로세스 운용 수준이 높지 않은 이상 도입에 무리가 있다고 봅니다.

그래서 제가 추천하는 조합은

SVN+JIRA+FISHEYE+HUDSON+JUnit 3.8x+DBUnit+Cactus+Cobertura+Japex

입니다. 여기에 확장으로 Confluence Wiki를 통한 팀내의 지식 공유 기반을 마련하는 것이 좋을것으로 생각됩니다.

요즘 Goverance 이야기 많이 하는데.. 뜬 구름 잡는 Governance보다는 이런 환경들이 진정한 Goverance로 가는 지름길이 아닌가 싶네요.

참고하세요

'ALM' 카테고리의 다른 글

About CodeBeamer  (5) 2008.06.17
ALM 솔루션  (0) 2008.03.13
개발 환경 자동화에 관심이 많은 분들께 알립니다.  (0) 2008.03.13
빌드 자동화 연동에 대한 고민  (0) 2008.02.29
개발환경 자동화 환경  (5) 2008.02.28