변경 작업의 효율화
이 책을 쓰는 과정에서 배운 가장 중요한 교훈은 리빙 도큐멘테이션이 장기적으로 얼마나 큰 도움이 되는지 알게 됐다는 점이다. 이것이야말로 이 책에서 가장 중요한 메시지라 생각하며, 이 책에서도 이 주제에 관해 폭넓게 다룰 것이다. 리빙 도큐멘테이션은 시스템 기능에 관한 정보의 원천으로서 프로그래밍 언어로 작성한 코드만큼 믿을 수 있으면서 훨씬 더 접근하기 쉽고 이해하기 쉽다. 각 팀에서는 리빙 도큐멘테이션을 활용해 변경사항의 영향을 분석하고 잠재적인 해결책을 함께 논의할 수 있다. 또한 새로운 요구사항을 반영하기 위해 확장하는 식으로 기존 문서를 활용할 수도 있다. 이로써 시간이 지남에 따라 변경사항을 명세화하고 적용하는 일이 효율적으로 이뤄진다. 가장 성공적인 팀은 예제를 활용한 명세를 적용한 결과로서 리빙 도큐멘테이션의 장기적인 이점을 발견했다.
미국 아이오와주 서 디모인(West Des Moines, Iowa)에 위치한 아이오와 학자금 대출 유동성 주식회사(Iowa Student Loan Liquidity Corporation )에서는 2009년에 비즈니스 모델이 크게 바뀌었다. 2008년에 있었던 금융 시장 혼란으로 개인 학생 대출을 위한 자금 조달이 거의 불가능했다. 이 때문에 대부분의 대출 업체는 개인 학자금 대출 시장에서 철수하거나 비즈니스 모델을 변경할 수밖에 없었다. 하지만 아이오와 학자금 대출 유동성 주식회사에서는 그러한 상황에 적응할 수 있었다. 개인 학자금 융자 기금에 채권 수익금을 사용하는 대신 은행 및 기타 금융기관으로부터 대출 기금을 공동 출자했기 때문이다.
소프트웨어 분석가이자 개발자인 팀 앤더슨(Tim Andersen)에 따르면 아이오와 학자금 대출 유동성 주식회사에서는 이러한 변화에 효과적으로 대응하기 위해 “시스템의 핵심적인 부분에 대한 대대적인 정비 작업”을 감행했다. 팀에서는 소프트웨어를 개발할 때 리빙 도큐멘테이션을 비즈니스 요구사항을 문서화하는 주요 수단으로 사용했다. 리빙 도큐멘테이션 시스템을 통해 새로운 요구사항이 미칠 영향력을 분석할 수 있었고, 필요한 변경사항을 구체화할 수 있었으며, 나머지 시스템이 이전처럼 잘 작동하는지 검증할 수 있었다. 그들은 한 달 만에 시스템에 대한 필수 변경사항을 적용해 출시할 수 있었다. 리빙 도큐멘테이션 시스템은 이 같은 변경을 가능케 한 본질적인 요소였다. 앤더슨은 다음과 같이 이야기했다.
테스트(리빙 도큐멘테이션)를 갖추고 있지 않은 시스템이었다면 개발을 중단하고 다시 만들어야 했을 겁니다.
캐나다 퀘벡주 몬트리올에 소재한 픽시스 테크놀러지스(Pyxis Technologies )의 탈리아(Talia ) 프로젝트 팀에서도 이와 유사한 경험을 했다. 탈리아는 기업용 시스템을 위한 가상 에이전트로서 직원들 간의 의사소통을 위한 복잡한 규칙이 설정돼 있는 채팅 로봇이다. 개발 첫날부터 탈리아 팀은 리빙 도큐멘테이션 시스템을 구축하기 위해 예제를 활용한 명세를 이용했다. 1년 후 탈리아 팀은 가상 에이전트 엔진의 핵심부를 처음부터 다시 만들어야 했고, 그때 리빙 도큐멘테이션에 투자했던 노력을 보상받았다. 탈리아 제품 책임자인 앙드레 브리셋(André Brissette )은 다음과 같이 이야기했다.
리빙 도큐멘테이션이 없다면 규모가 큰 리팩터링은 모두 자살 행위나 다름없습니다.
탈리아 팀은 리빙 도큐멘테이션 시스템을 활용함으로써 변경을 완료했을 때 새로운 시스템이 이전과 동일하게 동작할 것이라고 확신할 수 있었다. 또한 브리셋은 리빙 도큐멘테이션 시스템을 통해 프로젝트 진행 상황을 관리하고 추적할 수도 있었다.
송킥(Songkick: 런던에 위치한 라이브 음악 서비스 사이트)의 팀에서는 활동 기록 피드 기능을 재개발할 때 손쉬운 변경을 위해 리빙 도큐멘테이션 시스템을 활용했다. 개발이 어느 정도 진행됐을 때 그들은 활동 기록이 확장성 있게 구현돼 있지 않다는 사실을 깨달았고, 리빙 도큐멘테이션이 활동 기록을 재구축하는 데 도움이 됐다. 송킥의 CTO인 필 코완스(Phil Cowans)는 리빙 도큐멘테이션이 있었기에 팀이 기능을 변경하는 데 필요한 시간을 최소 50%는 줄였을 것이라고 추정했다. 코완스는 이렇게 이야기했다.
커버리지가 적당하고 리빙 도큐멘테이션 시스템에 신뢰할 만한 테스트가 있었기에 인프라에 큰 규모의 변경사항을 빠르게 적용했음에도 불안하지 않았습니다. 저희는 기능이 그대로 유지되고 있는지 알 수 있었고, 기능이 바뀌었더라도 테스트로 검출할 수 있었을 겁니다.
미국 콜로라도주 덴버에 위치한 연금 서비스 제공업체인 이플랜 서비스(ePlan Services )의 개발팀은 2003년부터 예제를 활용한 명세를 이용해 왔다. 개발팀에서는 다양한 이해관계자와 복잡한 비즈니스 규칙, 그리고 복잡한 법적 요구사항이 포함된 금융 서비스 애플리케이션의 구축 및 유지보수를 담당하고 있다. 프로젝트가 시작된 지 3년이 지난 후 시스템의 레거시 부분을 다룬 경험이 있던 관리자가 인도로 가게 됐다. 이플랜 서비스의 테스터이자 『애자일 테스팅: 테스터와 팀을 위한 실무 가이드』 (정보문화사, 2012)의 저자인 리사 크리스핀(Lisa Crispin )에 따르면 팀에서는 관리자가 알고 있는 것들을 배우고 이를 리빙 도큐멘테이션에 반영하기 위해 부단히 노력했다. 리빙 도큐멘테이션 시스템 덕분에 비즈니스 프로세스에 대한 전문지식을 가져와 모든 팀 구성원이 즉시 활용할 수 있게 됐다. 이로써 지식 전달의 병목 지점이 제거되어 애플리케이션의 지원과 확장이 효율적으로 바뀌었다.
벨기에 오스트캄프에 있는 IHC 그룹의 중앙 환자 관리 프로젝트 팀에서도 유사한 결과를 보여준 리빙 도큐멘테이션 시스템을 구축했다. 기존의 레거시 메인 프레임 시스템을 재개발하는 이 프로젝트는 2000년에 시작됐다. 프로젝트 솔루션 아키텍트인 파스칼 메스트다크(Pascal Mestdach)는 팀이 얻은 큰 이점을 다음과 같이 설명한다.
레거시 시스템이 무슨 일을 하는지 아는 사람은 얼마 되지 않았습니다. 그렇지만 개발팀이 기능에 대한 테스트(리빙 도큐멘테이션)를 작성하면서 어떤 기능이 어떻게 동작하는지 명확해졌죠. 또한 전문가가 휴가 중일 때도 궁금한 부분을 해결할 수 있었습니다. 소프트웨어의 특정 부분이 무슨 일을 하는지 다른 개발자들도 명확하게 알 수 있었고, 테스트까지 되고 있습니다.
이러한 사례를 통해 개발팀이 지식을 공유하거나 구성원이 바뀌었을 때 리빙 도큐멘테이션 시스템이 어떤 도움을 줄 수 있는지 알 수 있다. 또한 비즈니스가 시장의 변화에 더 효율적으로 대응할 수 있게끔 만들어준다. 이와 관련된 자세한 내용은 3장에서 설명하겠다.