얼마전 신규 서비스를 구축하려는 지인분에게  Git의 사용을 추천드렸습니다. 그러자 돌아온 한 마디... Git 그거 꼭 써야하는거야?

그래서!! Git이 왜 필요한지 간단하게 정리 요약해보고자합니다. 개발자가 아니라면 또는 git을 써보지 않으면 왜 git이 필요한지.. 그리고 무엇이 좋은지 당연히 모르겠죠... 아래에서 그 이유를 자세히 알아보겠습니다.


# Git을 사용하는 이유는?누군가 git을 왜 사용하느냐 묻는다면 아래와 같이 말할 수 있습니다.

  • 효과적인 협업
  • 손쉬운 개발 및 테스트 환경 구축
  • 효율적인 배포관리

위 세가지는 git이 가진 가장 강력한 장점입니다. 물론 다양한 DVC, 형상관리방법들이 존재하지만 그 중에서도 git이 많은 사랑을 받는건 다 이유가 있겠죠. 아래에서는 각각 얘기해보겠습니다.


! 효과적인 협업혼자서 작업한다면 모르겠지만 둘 이상의 사람이 하나의 프로젝트를 진행할 수 있겠죠... 예를들어 한명의 웹퍼블리셔와 또 한 명의 개발자가 함께 협업하는 경우를 들 수 있습니다.

@ 만약 퍼블리셔가 작업 후 개발서버에 반영하면 생기는 일
퍼블리셔가 파일을 받아 작업 후 해당 파일을 다시 서버에 올리는 경우 만약 그 파일에 개발자가 새로 작업한 내용이 있었다면? 개발자의 작업 내용은 사라지고 기능은 동작하지 않을 수 있습니다. 실제로 이런 일을 자주 겪을 수 있는데요... 이는 git을 사용함으로써 해결할 수 있습니다.

@@ Git은 각자의 작업 내용을 클라우드 환경에 저장
git을 사용하면 누가 무엇을 어디서 수정했는지 알 수 있습니다. 모든 변경내용이 서버에 반영되는데 그런 이유로 항상 최근 작업된 내용을 서버에서 가져올 수 있고 또 내가 작업한 내용을 언제든 서버에 반영할 수 있게됩니다. 그렇기 때문에 다른 사람이 새로 작업한 부분을 웨퍼블리셔가 다른 코드로 올리려고하면 conflict가 발생하여 바로 덮어 씌우는 문제가 발생하지 않습니다. 즉 위와 같은 문제는 사전에 예방이 가능하게됩니다.

(과거에는 svn을 많이 사용하였습니다. 하지만 git은 모든 변경내용을 중앙집중 관리방식인 svn과 달리 각자의 로컬을 기준으로 작업하게됩니다. 그런 이유로 네트워크가 항상 필요하지 않으며 서버와의 동기화 역시 필요한 경우에만 수행할 수 있다면 큰 장점을 가졌습니디.)


! 손쉬운 개발 및 테스트 환경을 구축개발 및 테스트 환경은 Requirements 및 Plan을 기준으로 필요한 환경이 구축되어야합니다. 기본이 되는 파일들을 매번 ftp나 ssh를 사용하여 전달받는 방법은 시간도 오래걸리고 모든 파일이 정확히 업로드 되었는지도 확신하기 어려워 매번 확인과정이 필요합니다. 하지만 git을 사용하면 간단한 명령어로 이런 번거로움으로 해결됩니다. 또한 별도 테스트 및 신규 프로젝트를 진행하는 경우 기존 소스는 그대로 두고 별도의 브랜치를 생성할 수 있으며 이는 독립된 환경을 만들어주기 때문에 새로운 서버 구축 등등의 문제점을 간단하게 해결할 수 있죠.


! 효율적인 배포관리서비스의 복잡도에따라 배포까지는 몇 번의 과정들을 겪어야합니다. 이때 git을 사용하면 언제든 새로운 내용들을 기록하여 배포할 수 있고 또 장애 등의 문제가 발생하더라도 원하는 배포시점으로 돌아갈 수 있게됩니다. 이를 자세히 알아보려면 아래의 글을 참고하시기 바랍니다.
https://webisfree.com/2017-11-27/gitflow-이해하기-효과적인-배포관리-방안


# 마치면서새로운 어플리케이션을 고객 접점에 올리기까지는 매우 많은 과정이 수반됩니다. 이때 git과 같은 효과적인 툴이 없는 경우라면? 물론 예전에는 당연하다고 생각했을 일들이지만 이제는 정말 끔찍하게 다가올 수도 있습니다... git을 사용하는 것만으로도 복잡한 과정에서 발생가능한 문제를 쉽고 빠르게 대처할 수 있기 때문에 git을 사용하는 이유는 충분하지 않을까 생각됩니다. 추가로 git과 함께 github을 사용하면 프로젝트의 시작부터 끝까지 더 많은 기능들을 수행할 수 있습니다.