2009년 12월 7일 월요일

웹으로 제품 만들다 늙어 죽을수도 있어요.

주말 잘 보내셨나요?
저는 가족들과 김장했습니다. 집안에 냄새도 나고 몸은 힘들었지만 , 온 식구가 하나로 어울렸던 시간이었던 것 같습니다.잊지 못 할 추억이 될 듯합니다.
오늘은 웹개발에서의 소스관리의 어려움에 대하여 말씀드려 보도록 하겠습니다.

개발 프로젝트가 끝나면 산출물들을 정리하게 되는데 이 단계가 되면 다음 프로젝트가 정해지는 경우가 많습니다.
대개는 비슷한 업종의 비슷한 애플리케이션 개발인 경우가 많은데 , 회사의 사업전략은 기술전략과는 달리 대상 고객군과 분야를 정해서 짜여져서 진행되기 때문이지요.
이런 이유로 영업 , 기획하시는 분들이 개발관리자들에게 이런 질문들을 많이 하게 됩니다.

"이번 프로젝트 결과에서 조금만 바꿔서 다른데서 쓸려고 한답니다 , 어느 정도 개발이 필요합니까?"
"글쎄요 조금만 바꾼다는게..그냥 똑같이 한다고 해도 꽤 들어갈 텐데요"
"예? 어찌 그런일이...이해하기 힘든데요"

상황이 이렇게 되게 되면 이슈 회의가 소집되게 되고 원인파악부터 해서 어떻게 할 것인가에 대한 논의가 진행이 됩니다.
이런 회의의 결과는 대체로 "지난번 수행 경험을 살려 이 번 프로젝트는 낮춰서 진행하자" 가 될 것이고 결국 프로젝트를 좀 낮춰서 진행하게 됩니다. 그러고 나면 또 비슷한 개발 프로젝트를 계속하게 되는데 더 낮춰잡게 됩니다. 일정이나 금액 같은 것 말이지요. 결국 경영진이나 비개발 관리자들은 이런 생각을 하게 되는데 "우리회사의 제품은 완성이 되었고 개발 효율은 점점 좋아지고 있구나. 이일을 좀 더 확대 해봐야겠는데..."

계속 사업이 이렇게 진행이되어도 문제가 없다면 제가 오늘 이런 글을 쓰지는 않았을 것입니다.
위의 상황에서 제일 먼저 발생하는 문제는 담당 관리자 또는 개발자가 퇴사하고 나서 입니다. 기존 인력들에 비해서 교체된 인력들은 거의 절대 기존의 효율만큼 일하지 못합니다. 수행의 효율이 인력에 숙련도에 의해서 결정났기 때문입니다. 물론 이 것은 심각한 문제가 아닐 수 있습니다. 비용은 좀 들지만 다시 시작하면 되니깐요. 하지만 해결하기 힘든 큰 문제가 서서히 발생합니다. 바로 이리저리 변경 해준 기능들입니다.
솔루션이나 제품은 제작이 되고나서 부터는 유지보수의 단계로 들어갑니다. 유지보수에는 여러가지 일들이 포함되지만 크게 보면 두가지 인데 버그처리와 기능개선입니다. 이러한 수정들이 가해질 때마다 버전을 바꿔가며 관리를 하게 되는데 , 이 일이 만만치 않습니다. 예를들어 5.1 에서 발견된 버그는 그 대상이 되는 버전이 1.0 까지 수십개가 될 수 도 있습니다. 하나의 버그처리에 수십번의 코드수정과 테스팅이 필요하다고 생각해보면 정말 간단한 일이 아님을 알 것입니다. 그런데 위에서처럼 프로젝트를 할 때마다 기능을 수정해주게 되면 각각의 프로젝트의 소스 버전이 브랜치되는 상황이 발생했을 것입니다. 즉 예에서 말씀드린 수십개의 소스관리가 버전별로 뿐만 아니라 프로젝트별로도 관리를 해주어야 한다는 것입니다. 유지보수 비용이 기하급수적으로 늘어나게 될 수 밖에 없습니다.
물론 극단적인 방법으로 버그를 고쳐주지 않겠다면 위 문제는 발생하지 않습니다만 , 현실이 어디 그런가요.
깨끗하게 이 문제를 해결하기 위해서 큰맘먹고 업그레이드를 한다고 가정을 해보겠습니다. 가능 할까요 ? 어렵습니다.
이리저리 다르게 구현해준 기능들을 통합 할 수 있는 슈퍼셋이 존재하지 않습니다. 억지로 한대도 아마 늙어 죽을때까지 해야 할 수도 있습니다. 상황이 이런데 사업을 확대하면 어떻게 될까요. 결론은 뻔하겠지요.

이 문제 어떻게 해결해야 됩니까?

오늘은 시간이 안되서 문제만 띄워 놓고 다음에 해결 방안들에 대해서 말씀드려 보겠습니다.

댓글 없음:

댓글 쓰기