버전관리도구란?

살면서 한 번쯤은 모두 컴퓨터를 사용하여 글을 작성 해 보았을 것이다. 간단한 독후감 작성정도라면 특별히 폴더를 관리 할 필요 없이 글을 작성하고 저장하는 정도로 끝날 것이다. 하지만 논문을 작성한다거나, 디자인시안을 만든다거나, 수 많은 파일들을 날짜별 카테고리 별로 저장해야 할 때 파일이 100개 이상 넘어 갈 때에는 어떻게 될까?
논문짤.png

  • 눈물의 논문수정

이러한 방법으로 파일을 저장하는 하게 되면 내가 원하는 파일을 제때에 찾기 어려울 것이고 어떤 파일이 최신파일인지 구분하기가 쉽지 않다. 이러한 문제점을 쉽게 해결 하기 위해 사용하는 것이 버전관리도구이다. 간단히 말하면 내 파일들을 쉽고 편하게 관리 할 수 있게 도와주는 도구라고 생각하면 되겠다.

프로그래밍과 생산성

과거엔 이와 같이 로컬(자신의 컴퓨터 하드드라이브)에 자료를 저장하고 파일을 분류 및 관리를 해왔다. 처음에 파일이 많지 않을 때는 괜찮지만 어느 정도 시간이 지나고 파일이 많아지고 잦은 수정이 필요해질 때가 오면 내가 어느 파일을 언제 어떻게 수정했는지 추적하기란 매우 어려운 일이다.
이 문제를 프로그래밍에 가져오면 어떻게 될까? 혼자서 프로그래밍을 한다면 문제가 발생해도 자신의 기억을 더듬어가며 해결 해 볼 수 있을 것이다. 하지만 2명 이상이 될 경우 더 이상 로컬에 파일을 저장하는 것으로는 같이 업무를 진행 할 수 없다. 항상 두 사람이 같은 수정본과 최신 파일을 공유하고 있어야 하기 때문에 서로 자주 연락해야 하고 혹시나 실수로 덮어쓰거나 최신 파일이 아닌 다른 곳에 작업을 하고 있지는 않은지 하나 하나 확인해야 한다. 이러한 문제는 생산성에 직결 된다. 프로그래밍에서는 생산성은 곧 돈이다. 시간은 금이다 라는 말처럼 작업을 하는데에 있어 시간이 오래걸리면 그만큼 인건비와 기타 비용이 발생하게 된다. 똑같은 프로그래밍을 하는데 한 팀은 10시간이 걸리고 다른 팀은 1시간만에 완성한다면 당연히 프로젝트를 맡기는 고객의 입장에서는 1시간에 완성하는 팀에게 일을 의뢰하게 된다. 이처럼 프로그래밍에서 생산성은 매우 중요한 덕목이다.

다양한 버전관리도구 그 중에서 GitHub

사실 버전관리도구는 GitHub외에도 다양한 도구들이 있으나 내가 GitHub을 선택하게 된 이유는 다음과 같은 이유다.

  1. 나의 파일을 쉽고 간편하게 서버에 저장 할 수 있다.
  2. 프로그래머들 간에 보편적으로 사용되는 버전관리도구이다.
  3. 회원가입과 사용하는 비용은 일체 무료이며 가입절차도 간편하다.
  4. Microsoft사가 Github을 2018년 인수하면서 백그라운드가 강해졌다.
  5. 많은 사람들이 Github을 사용하고 있기 때문에 문제가 발생하면 쉽게 해결 할 수 있다.

    이외에도 다양한 이유가 있지만 그중에서도 가장 큰 이유는 무료라는 점과, 보편성이다. 아무리 좋은 툴이라고 해도 많은 사람들이 사용하지 않고 있다면 큰 문제이다. 대부분의 큰 프로젝트는 혼자서 하기에는 어렵기 때문에 협업을 하기 마련이다. 그 때 모두가 사용 할 수 있는 툴을 사용하지 않으면 그 툴은 프로젝트에서 채택되기 어렵다. 프로그래밍을 하는 사람이라면 Github은 선택이 아닌 필수가 되어버린 지금 Github을 쓰지 않을 이유는 없다.