수학과의 좌충우돌 프로그래밍

00. git 을 알아보기 전에 (버전 관리 시스템) 본문

git

00. git 을 알아보기 전에 (버전 관리 시스템)

ssung.k 2018. 9. 10. 21:36

안녕하세요 강민성입니다.


오늘은 git 에 대하여 알아보고자 합니다.


github 계정을 처음 만들었던 건 4월 달 쯤인거 같은데 5개월이 지난 지금에야 느낌이 잡히네요...


아무래도 이번에 '멋쟁이 사자처럼' 에서 해커톤을 참여하며 프로젝트를 진행할 때


몸으로 부딪히며 배운 덕분 인 듯 합니다. 


본격적으로 git 에 대해서 알아보기 전에 한 가지 상황을 가정해보겠습니다.


졸업논문을 쓴다고 하면 한 번에 끝낼 수도 있지만 


대부분은 여러 번의 수정의 수정을 걸쳐서 완성을 할 것입니다.


스스로도 고쳐보고,


선배들의 조언도 구하고,


교수님도 찾아가며 고친 결과...




다음과 같이 본인도 어느 것이 최종안인지 알아보기 힘들게 됩니다.


아마 이런 경험이 다들 한 번씩 있으실 거라고 생각이 듭니다.


이런 일이 project 에서 일어난다면 어떨까요?


그것도 여러 명이서 함께 project 를 진행한다면 


엉키고 엉켜 엉망진창이 되고 말 것입니다.


이를 해결해 줄 수 있는 것이 바로 git 이 되겠습니다.



git을 알아보기 전에...



git을 처음 접했던 4월..


잘 이해가 되지않아서 google 에 git 을 검색했었습니다.


위키백과에 나오는 git 에 대한 정의는 


"깃은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다."  였습니다.


모르는 걸 알기 위해 검색했는데 분산 버전 관리 시스템이라는 어려운 단어가...


그럼 먼저 분산 버전 관리 시스템에 대하여 알아보도록 하겠습니다.


분산을 빼놓고 버전 관리 시스템(Version Control System; VCS)이란,


파일의 변화를 시간에 따라 기록해 문제가 생겼을 때나 과거의 파일이 필요할 때 다시 불러올 수 있는 시스템 입니다.


이를 통해 우리는 문제가 되는 부분을 누가 건드렸는지 찾을 수 있고 잘못되더라도 쉽게 복구를 할 수 있습니다.


이 버전 관리 시스템은  여러 시행착오를 거치며 발전을 해왔습니다.


버전 관리 시스템이 나오기 전에는 어떻게 파일을 관리 했을까요?


굉장히 단순하게도 파일을 다른 디렉토리에 복사 했을 겁니다.


하지만 실수로 어느 디렉토리에서 작업을 했는지 잊어버리거나 파일을 덮어쓰는 경우가 생깁니다.


이를 해결하기 위해서 데이터베이스에 파일의 변경 사항을 기록하는 '로컬 버전 관리 시스템' 이 나왔습니다.




이 방법은 데이터베이스를 사용해 파일의 변경 정보를 저장하게 합니다.


하지만 이 역시도 문제가 있었는데 다른 개발자들과 협업이 불가능 하다는 점이었습니다.


그래서 이를 해결하기 위해 '중앙집중식 버전 관리 시스템'(Centralized Version Control System:CVCS)이 개발이 되었습니다.




이 시스템은 모든 파일을 저장하는 하나의 서버와, 이 서버와 연결되어 파일을 가져오는 여러 명의 클라이언트가 존재를 합니다.


이 때 부터 같은 중앙 서버에 연결이 되어있으면 서로 무엇을 하고 있는지 알 수 있게 되었습니다.


하지만 CVCS의 가장 큰 단점은 바로 중앙 서버의 오류는 모두의 오류로 귀결 된다는 점이었습니다.


중앙 서버가 다운 된다면 협업도, 버전 관리도 불가능 해지게 됩니다.


그래서 이러한 단점을 해결하기 위해 기다리고 기다리던 


'분산 버전 관리 시스템'(Distributed Version Control System: DVCS)가 개발되었습니다.


DVCS 에서는 클라이언트가 서버를 몽땅 복사해갑니다.


따라서 서버에 문제가 생기더라도 복사해갔던 저장소를 다시 서버로 복사하면 해결이 됩니다.







마무리


아직 본격적으로 git 에 대해서는 알아보지도 못했는데 어려운 내용이 많이 나왔네요.


오늘 배운 내용은 알아두면 좋지만 당장에 git 을 쓰는데 있어서는 꼭 필요한 내용이 아닙니다.


다음 장 부터는 마음먹고 시작해보도록 하겠습니다.


오늘두 화이팅하세요~~~



Comments