Git

Git의 필요성

부끄러운 이야기이지만, 컴퓨터 공학을 전공한 나는 학부시절에 제대로 Git과 GitHub를 사용해본 적이 없다. 사용한다고 해도 증거자료를 남기는 용도로 단순히 commit & push를 해서 GitHub에 프로젝트의 증거물을 남기는 정도였다. 가장 큰 단위의 프로젝트를 한 경험이 두 번 있었는데, 첫번째는 EnScript를 활용하여 GUI를 제공하는 통합 포렌식 도구를 만드는 프로젝트였고, 두번째는 Vue.js와 Node.js를 사용한 웹 애플리케이션 제작이었다.

첫번째 프로젝트를 수행할때는 협업에 큰 어려움이 없었다. 왜냐하면 EnScript는 자바 기반의 언어로서 클래스단위의 개발이 가능했고, 프로젝트 특성 상 각 기능별로 독립적인 개발과 적용이 가능했기 때문이다. 마치 장난감 블록처럼 서로 다른 블록끼리 영향을 미치지 않았기 때문에 크게 신경쓰지않고 각자 개발해서 뭉치면 실행이 바로 되었다.

하지만 두번째 프로젝트에서는 협업이 그렇게 녹록지 않았다. 우선 초반에는 프론트엔드와 백엔드를 확실히 구분하지 못해서 같이 여러명의 팀원이 같이 개발을해서 겹치는 부분이 많았다. 그리고 후반부에는 기능별로 서로 영향을 주는 부분이 많아서 그때그때 수정해야하는 부분도 많았다. 즉, 상대방이 작성한 코드를 건드릴 수 밖에 없었다. 이러한 상황에서 매번 압축파일로 전송하고, 빌드한 다음 실행하는 과정이 갈수록 번거로웠으며 생산성을 저하시켰다.

예를 들면, "아, 어제 채팅기능 구현을 했는데, UI중에 이 부분 이 부분은 바꿨어요. 다른 부분은 아마 크게 바뀐 부분이 없을거에요." 그러면 나는 그 코드의 압축파일을 받아서 다시 내 환경에서 실행을 해본다. 당연히(?) 바로 에러가 발생한다. 아 참, DB접속을 할 커넥션 객체의 이름과 ip주소 등을 변경한다. 또 에러가 발생한다. 하… 도대체 어느 코드가 다른거지? 한참을 찾고 비교한다. 아하! 드디어 찾아냈다. 일단 주석처리하고… 원인을 하나씩 찾아내면서 점점 근본원인에 근접해간다. 드디어 해결했다. 바로 옆에서 작업하는게 아니다보니 변경된 소스코드를 적용하는것만해도 한참이 걸렸다. 이때 깨달았다. ‘정말로 Git의 사용이 필요하구나.'