마이크로소프트웨어 5월호를 이제야 읽어봤다. 보통은 마소에서 한 권씩 보내주는데, 이번 달에는 일이 꼬여서 받지 못했다. 이번 달은 정기 컬럼인 프로그래밍 노트 외에도 Step By Step 코너에 두 장짜리 글을 썼다. 지속적인 통합(Continuous Integration)라는 글이다. 그런데 나의 초고와 잡지에 실린 글 사이에 차이가 있었다. 마감일 바로 전에 부탁 받아서 쓴 글이라 제대로 검토하지 못한 채 글이 실린 것 같다. 하여 문제가 된 부분만 정리해본다.
-
유독 윈도우 XP 진영이 지속적인 통합을 가장 강조해 왔다.
라는 문장은 내가 쓴 것이 아니다. 편집하시는 분께서 본문 내용을 보고 정리하신 것 같은데, Extreme Programming의 XP를 윈도우 XP로 착각하신 것 같다. -
<그림 1> RFID 시스템의 구성 —– <그림 1> 지속적인 통합
-
소 제목 지속적인 통합의 앞뒤 문단은 원래 소 제목으로 나뉘어 있지 않았다. 이어지는 글인데 소 제목으로 쪼개지고 말았다. 원래 두 문단 사이에 <그림 1>이 있었기 때문에 편집하시는 분께서 별개의 내용인 줄 아셨나 보다.
다행스럽게도 일련의 복잡한 과정을 자동화하기 위한 소프트웨어가 많이 나와 있다. 더욱이 무료로 사용할 수 있는 소프트웨어도 많다. 자바의 경우에는 Ant라는 빌드 스크립트 언어와 CruiseControl이라는 Continuous Integration System 조합을 많이 사용한다. ‘정말귀찮아’씨는 이클립스를 사용한다. 소스 코드를 수정하고 나면 컴파일해 본다. 빌드가 성공하면 JUnit 단위 테스트 버튼을 또 클릭한다. 단위 테스트도 통과하면 변경된 내용으로 Jar 파일을 생성한다. 한번의 수정작업을 위해 여러 번의 확인 과정을 거쳐야 한다. 이제 이클립스라는 IDE에서 벗어나 빌드 프로세스를 Ant 빌드 스크립트로 빼낸다. 이제 한번 빌드 스크립트를 클릭(이클립스에서 바로 빌드 스크립트를 실행시킬 수도 있다.)하면 빌드, 단위 테스트, 그리고 Jar 생성까지의 과정이 한번에 이뤄진다.
CruiseControl은 매우 간단한 기능을 수행한다. 주기적으로, 또는 정해진 시각에 소스버전 시스템을 확인해서 변경사항이 있는지 검토한다. 변경사항이 있으면 새 버전을 내려 받아서 빌드, 단위 테스트 등을 한다. 만약 오류가 발생하면 사용자에게 이메일 등으로 보고한다. 이제 ‘정말귀찮아’씨의 경우와 같이 누군가가 잘못된 소스 코드를 커밋하더라도 CI System에 조기에 경고를 보내줄 것이다. 문제가 곯아서 터지기 전에 문제를 발견할 수 있게 됐다.