예전에 제가 국내 거대 SI 업체와 같이 일할때 생각이 납니다. 그 시절믜
팀구성은 나름(!) 잘 짜여졌다고 업체가 자랑하는 팀 구조로 되어
있었습니다. PM - Project Manager - 와 6명의 개발팀으로 이루어져
있고, 소스 레파지토리로 VSS (Visual Source Safer) 를 사용했고,
6명의 개발팀은 1명의 PL (Program or Project Leader) 과 5명의 개발자들이
포진해 있는 구조였습니다.

 한명의 PL은 각 개발자가 개발한 소스를 취합해서 하나의 단위 기간당
릴리즈 하는 임무를 맡고 있으며 PM 과 개발자의 중간 위치에
해당했습니다. 상당히 중요한 업무였지요, 실제로 바쁘기도 하고요.
보통 5명의 개발자들의 개인 컴퓨터가 개발 머신에 해당하고 PL 의 컴퓨터가 요즘
말하는 Stage Server 의 기능을 대신 했던 구조였습니다. 즉 각각의
개발자가 레파지토리에 소스를 올리면 PL 이 전부 소스를 내려 받아서 컴파일
합니다. 에러가 발생하면 책임자에게 수정하라고 요청을 해서 다 될때까지
PL 이 빌드 진행을 맡지요. 그래서 중간 릴리즈가 되면 VSS 에서 레파지토리
백업을 받고 그것을 날짜 태그를 붙여서 저장합니다.

 처음에는 팀이 잘 돌아갑니다. 이때 저는 혼자만 개발을 주로 하다가 팀단위로
개발은 처음 하게 된데다가, 또 팀이 완벽(?)하게 돌아가는 모습을 보고 큰 감동을
받았습니다. 그런데 지금 생각해보면 처음에는 잘 돌아갈 수밖에
없었습니다. PM 이 고객과 협의 사항이 거의 없었고 , 개발자들도 슬슬
개발하는 단계니 적당히 적당히 릴리즈 전날만 가볍게 새주면 슬슬 잘
돌아갔습니다. 소스데이타가 릴리즈 할때마다 백업데이타로 몇백메가씩
늘어나는 것만 제외하면 ( 이당시 VSS 는 태그 기능이 없었습니다)
이상적인 팀이라고 생각할만큼 좋았습니다. 사실 고통에 익숙해져 있었던 시절이라
날을 안새는게 이상하게 여겼지요.

 결국 개발 중간부터 슬슬 일이 발생하기 시작합니다. PM 은 고객한테
깨졌다면서 고객 요구 사항을 가져오면서 PL 을 들볶기 시작합니다. PL 은
대응 문서 만드느라고 정신이 없어서 중간 중간 체크아웃 해서 릴리즈 본을
만드는 것을 한두번씩 거르기 시작합니다. 5명이 개발한 프로그램은 그
자신의 로컬 컴퓨터에서만 잘 돌아갑니다. 하지만 합칠려고만 하면 왜 그리
에러가 튀어나오는지 개발 시간보다 그거 잡는 시간이 더 길어집니다.릴리즈
시간이 다가오면 정형성 맞추느라 이제 날을 새도 데모 일정을 연기할
수밖에 없습니다.

 그리고, 납기일이 다가오는 막판 온갖 도핑약으로 도배를 해 가면서
죽음의 3개월을 보내고 딜레이 되서 PM 이 온갖 양주로 고객을 잠수시켜서
얻어낸 시간만큼의 2개월쯤을 또한 죽음의 세월로 보냅니다.

결국 큰 프로젝트에서 문제가 되는 것은 여러 개발자들이 만든 모듈을
합치는 부분입니다. 이 부분의 부하가 커지기 시작하면 프로젝트는 대책
없이 흘러가기 시작합니다. 저의 단한번의 큰 프로젝트는 그렇게 완전히
실패하고 말았습니다. 인간적으로 PL 이 할 일이 너무 많았지요.

CI 는 이 PL 이 하게되는 가장 중요한 업무인 모듈통합, 빌드 진행을 맡아서
하는 시스템 프로세스 입니다. 실수하기 쉽고 지겨워지기 마련인 단순한
작업을 기계가 대신 해주는 시스템이지요.

개발자가 소스 레파지토리로 업데이트를 하는 순간 모듈 통합 빌드가
시작되는 구조라고 생각하시면 제일 간단합니다. 그리고 그 결과를 웹이나
트레이를 통해서 쉽게 알 수 있는 정말 효율적인 시스템입니다.

역사에 가정이 없다고들 하는데 , 만약 제가 그 시절로 돌아갈 수 있다면
당연하게 이 시스템 도입을 강력히 주장하겠습니다. 제 일정에 맞게 프로젝트를
완수하면서도 성공시킬 자신이 있습니다.

+ Recent posts