Error rendering WebPanel: No renderer found for resource type: velocity Template contents: <meta name="ajs-keyboardshortcut-hash" content="$keyboardShortcutManager.shortcutsHash">
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

프로젝트를 시작한지 벌써 10일이 넘어가고 있다. 테스트 주도 개발에 대한 학습도 조금씩 하면서 업무에 대한 분석 작업도 진행하고 있다. 오늘부터 조금씩 개발 환경도 세팅해야겠다.

지금까지의 경험으로 판단했을 때 소프트웨어 프로젝트 진행 과정을 살펴보면 다음과 같이 두 가지 업무 영역으로 나눌 수 있다.

먼저 프로젝트를 진행할 때 발생하는 업무를 위와 같이 단순화 해보자. 프로젝트의 한 축은 핵심 비지니스 로직을 구현해야하는 업무이고, 다른 한 축은 개발 환경 세팅, 빌드, 배포, 모니터링, 테스트와 같이 단순 반복적인 업무이다. 이와 같이 구분할 경우 모호한 점이 있다면 다음과 같이 구분해 보자.

비지니스 로직과 관련한 업무는 사람이 할 수 밖에 없는 업무이며, 단순 반복 업무는 최초 기반 작업만 해 놓으면 이후부터는 "컴퓨터가 할 일"이라고 볼 수 있다. 하지만 "컴퓨터가 할 일"은 반드시 컴퓨터만 할 수 있는 것이 아니라 사람도 할 수 일이다.

 "컴퓨터가 할 일"이 "사람도 할 수 있는 일"로 간주되면서 사람들이 자꾸 반복작업을 진행하는 경우가 발생한다. 이 같은 현상이 아무 일도 아닌 듯하다. 하지만 시간이 지나면서 프로젝트의 많은 시간이 핵심 비지니스 로직을 구현하는데 할당되는 것이 아니라 컴퓨터가 할 일에 많은 시간을 할애하게 된다. 이 같은 상황이 발생할 수 밖에 없는 현상을 살펴보면 다음과 같다.

프로젝트를 시작하면 개발 환경도 세팅하고, 빌드 환경도 구축하면서 단순 반복 업무를 자동화하는데 일정 시간을 할애한다. 위 그림에서는 상당 부분 투자하는 것으로 나타냈지만 생각보다 많은 시간을 투자하지 않는다. 문제는 여기서 발생하지 않는다. 프로젝트 중반으로 넘어가면서 그 이슈는 더 커진다.

프로젝트 중반으로 가면 갈수록 단순 반복 업무를 어떻게 해결해 나갈 것인지에 대한 고민은 없고 기능을 추가하는데만 급급해 한다. 자동화에 대한 고민이 부족하다보니 왠만한 작업은 그냥 사람을 통해 단순 반복적으로 문제를 해결해 나간다.

이 같은 상황으로 프로젝트를 진행하면서 프로젝트 후반부에 가면 갈수록 다시 단순 반복 업무에 대한 관심도 가지면서 실 서비스에 배포하기 위한 준비를 한다. 하지만 많은 부분이 수동으로 진행되어왔기 때문에 실서비스 배포를 위한 준비 작업에 일부 시간을 할애할 뿐이다. 이 같은 상황으로 서비스를 1~2년 정도 운영하면 어떻게 될까?

자동화에 대한 지속적인 투자 없이 프로젝트를 운영할 경우 1,2년 정도 지나면 핵심 비지니스 로직에 투입하는 시간보다 단순 반복 업무에 투자하는 시간이 더 많아진다. 분명히 컴퓨터를 통해 자동화할 수 있는 업무들이 많음에도 불구하고 많은 작업들이 사람을 통해 수동으로 진행된다. 이 같이 수동 작업에 많은 시간을 할애하지 못하다 보니 핵심 비지니스 로직에 투입할 시간이 부족한 상황을 만든다.

이 번 프로젝트에서는 이 같은 상황을 개선해 가능한 자동화할 수 있는 모든 영역에 대해서는 자동화할 수 있도록 해야겠다.