제가 대규모 프로젝트라고 했습니다. 대규모 프로젝트라니... 프로젝트란 회사에서 많이 쓰던 용어 같은데... 라고 묻는 분이 계실 겁니다. 그럼 저는 먼저 여러분이 지금까지 짜 보신 프로그램 중에 가장 긴 것이 얼마나 되느냐고 묻고 싶네요.
일반적으로 어떤 목적을 달성하기 위해서 꽤 수고를 기울여서 프로그램을 짜야 할 경우 우린 이것을 프로젝트라고 합니다. 학교에서 나온 프로그램 숙제를 프로젝트라고 할 수도 있겠군요. 그럼 대규모 프로젝트라면... 프로그램의 크기가 엄청나서 장난이 아닌 것이라고 정의하면 될까요.
보통 GCC 가 10만 라인이 넘어섭니다. 모티프 라이브러리가 약 15만 라인 인걸로 알고 있구요. 하지만 보통 수천 라인 정도의 프로그램이라면 어느 정도 대규모라고 말할 수가 있습니다. 대규모 프로젝트의 몇 가지 특징을 간단하게 열거해 보겠습니다.
혼자 프로그램 짜는데 익숙하신 분들이 힘드신 점이 바로 다른 사람과 같이 프로그램을 짜야 한다는 것입니다. 그리고 프로그램 개발의 효율성에 따라서 기간에 엄청난 차이를 줄 수가 있습니다. 이런 의미에서 RCS는 개발 주기를 앞당길 수 있다는 의미에서 꽤 중요한 것 같습니다.
가령 두사람이 같이 프로그램을 짠다고 가정합시다. 프로그램을 칼로 무우 자르듯 잘라서 A가 어느 부분을 짜고, B가 다른 부분을 짜는 일의 분담이 이루어 졌습니다. 당연히 그리고 서로가 다른 사람이 짠 함수나 데이터를 써야 하는 것은 당연한 일이지요. 여기서 문제가 발생합니다. 만약 한 디렉토리에서 파일을 공유한다고 가정한다면 A가 바꾼 파일을 또 B가 필요에 의해 고치고, 또 A가 고치고.. 이런 과정을 반복하다 보면 서로 헷갈리게 되죠.
이때는 RCS 디렉토리만 공유하게 되면 모든 문제는 해결됩니다. 한 사람의 디렉토리에 RCS를 만들어 놓고 다른 사람은 그곳을 링크 시킵니다. 그러면 두사람은 하나의 RCS 디렉토리를 공유하게 되는 것이죠. 당연히 쓰기가 가능하도록 permission을 열어야 겠죠. 두 사람은 미리 합의된 대로 자신의 모듈을 작성한 다음 어느 정도 기능의 수행이 가능하게 되면 RCS 디렉토리에 올리게 됩니다. 그리고 다른 사람이 필요에 의해 RCS 에 있는 파일을 co를 써서 풀게 되구요.
+--------------+
| R C S |
+--+--------+--+
| |
+------+-+ +-+------+
| A | | B |
+--------+ +--------+
그림으로 설명하면 위와 같습니다. 이렇게 되면 서로 파일을 공유함으로써 생기는 문제는 사라지게 되고, 파일을 만든 사람만이 lock 을 걸 수가 있기 때문에 RCS 디렉토리에 있는 원본은 아주 안전하게 보호되죠. 그리고 푸는 사람도 자신이 필요한 버전만 풀 수가 있으므로 매번 다른 사람한테 이것좀 고쳐 달라, 이건 왜 안되느냐 하면서 서로 싸울 필요가 없겠죠. 이것은 RCS 디렉토리에 각 버전별로 제대로 동작하는 프로그램이 올라와 있다고 가정할 때 가능합니다. 또 두 사람 사이의 개발 속도가 달라도 되겠죠. A가 아주 실력이 좋아서 빨리 짜더라도... B는 우선 자신의 프로그램과 궁합이 맞는 A의 옛날 버전을 갖다가 쓰면 되거든요.
흠. 어떠세요. 그럴듯하지 않아요? 여기서 A 와 B가 동일 인물이 되어도 됩니다. 왜냐하면 같은 사람이 여러 군데에서 일을 할 수도 있으니까요. 위와 같은 룰만 제대로 지킨다면 프로그램 개발 중에 서로 안 싸워서 좋고, 서로 자신의 프로그램을 시험해 볼 수 있어서 좋고.. 아무튼 다 좋아요.