이전페이지 다음페이지 차례

7. 대규모 프로젝트와 RCS

7.1 대규모 프로젝트란

제가 대규모 프로젝트라고 했습니다. 대규모 프로젝트라니... 프로젝트란 회사에서 많이 쓰던 용어 같은데... 라고 묻는 분이 계실 겁니다. 그럼 저는 먼저 여러분이 지금까지 짜 보신 프로그램 중에 가장 긴 것이 얼마나 되느냐고 묻고 싶네요.

일반적으로 어떤 목적을 달성하기 위해서 꽤 수고를 기울여서 프로그램을 짜야 할 경우 우린 이것을 프로젝트라고 합니다. 학교에서 나온 프로그램 숙제를 프로젝트라고 할 수도 있겠군요. 그럼 대규모 프로젝트라면... 프로그램의 크기가 엄청나서 장난이 아닌 것이라고 정의하면 될까요.

보통 GCC 가 10만 라인이 넘어섭니다. 모티프 라이브러리가 약 15만 라인 인걸로 알고 있구요. 하지만 보통 수천 라인 정도의 프로그램이라면 어느 정도 대규모라고 말할 수가 있습니다. 대규모 프로젝트의 몇 가지 특징을 간단하게 열거해 보겠습니다.

  1. 우선 라인 수가 엄청나다.
  2. 혼자 짜기엔 너무 힘들다. 따라서, 2명 이상의 팀의 단위로 작성된다.
  3. 기간이 오래 걸린다. 며칠? 몇 주일? 몇 달? 몇 년? (프로그램 개발에서 기간은 곧 '돈'을 의미합니다. )

혼자 프로그램 짜는데 익숙하신 분들이 힘드신 점이 바로 다른 사람과 같이 프로그램을 짜야 한다는 것입니다. 그리고 프로그램 개발의 효율성에 따라서 기간에 엄청난 차이를 줄 수가 있습니다. 이런 의미에서 RCS는 개발 주기를 앞당길 수 있다는 의미에서 꽤 중요한 것 같습니다.

7.2 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가 동일 인물이 되어도 됩니다. 왜냐하면 같은 사람이 여러 군데에서 일을 할 수도 있으니까요. 위와 같은 룰만 제대로 지킨다면 프로그램 개발 중에 서로 안 싸워서 좋고, 서로 자신의 프로그램을 시험해 볼 수 있어서 좋고.. 아무튼 다 좋아요.


이전페이지 다음페이지 차례