Notice
Recent Posts
Recent Comments
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
관리 메뉴

함번보고 두번보고

[Git] Git이란 무엇일까? 본문

CM/Git

[Git] Git이란 무엇일까?

Hamstar_ 2020. 1. 6. 14:42

! Git은 (분산) 버전 관리 프로그램이다. 


"THE INFORMATION MANAGER FROM HELL"

 

2005년, 리눅스 운영체재 개발자인 리누스 토발즈가 git을 세상에 처음 소개하면서 한 말이다.

 

여기서 리누스 토발즈가 말한 '지옥'은 무슨 의미 일까?

 

 

지난주 새해 일출을 보기 위해 제주도에 다녀오며 나는 이와 비슷한 '지옥'을 경험할 수 있었다.

어느 정도 예상은 했지만 엄청난 사람들이 몰려왔고, 하루는 가려고 했던 음식점의 웨이팅 시간이 1시간 이상 걸렸으며, 
어떤 식당은 재료가 소진되어 웨이팅 조차 할 수 없었다.

그럴 때마다 나는 기존의 계획했던 동선을 끊임없이 수정하는 작업을 해야 했고, 결국 천국 같던 제주도가 순간 지옥처럼
느껴지기 시작했다...

즉, 여기서 '지옥'이란 내가 계획(개발)했던 일정(작업)이 웨이팅(변경사항)으로 인해 또다시! 작업해야 하는 무한 루프의 상황을 의미한다.

 

소프트웨어 엔지니어의 결과물은 이래나 저래나 소스 코드다.


소스 코드는 한 문장, 한 단어, 한 문자가 각각 의미를 가지고 서로 간 얽혀 있기 때문에 문자 하나만 지워도 전체를 수정해야 할 수도 있다.

 

따라서 동료의 작업을 망치지 않기 위해, 그리고 나의 작업을 올바르게 반영하기 위해 버전 관리 시스템인 Git이 지옥으로부터 나온 것이다.

 

구체적(?) 예시를 하나 들어보자.

 

1.
현재 버전 1.0인 배달서비스 앱이 있다. 정기 업데이트 일정이 다가와 개발자들은 1.1 버전의 앱을 열심히 코딩중이다. 그런데 막상 배포를 하려고 하니 갑자기 에러가 발생했다. 에러를 잡지 못한 개발자들은 다시 버전 1.0으로 돌아가려 하였지만, 이미 너무 많은 부분을 수정해버려서 1.0 버전의 코드가 기억이 나질 않는다...

2.
1번의 경우를 방지하고자 개발자들은 버전 관리 시스템을 도입했다. 별도의 서버를 구축하여 새로운 버전이 등장할 때마다 버전 1.0 코드 따로, 버전 1.1 코드를 따로 저장해 두었다. 이제 작업 중 에러가 나면 그냥 서버에서 이전 버전의 코드를 다운받아 처음부터 다시 시작하면 된다.

3.
버전 관리 시스템 덕분에 개발자들은 1.1 버전도 성공적으로 출 시할 수 있었다. 그리고 버전 1.2를 위해 어느 때와 다름없이 열심히 코딩을 하던 개발자들은 역시나 에러가 발생했고 전 버전으로 돌아가려 했지만, 갑자기 알 수 없는 이유로 서버가 먹통이 되어버렸다. 개발자들은 또다시 멘붕이 왔고, 1번과 같은 상황으로 되돌아가고 말았다...

4.
개발자들은 3번 상황의 문제를 해결하기 위해 고민하던 중 분산 버전 관리(백업) 시스템을 떠올렸다. 단지 하나의 백업 서버만 따로 존재하는게 아니라 개발자 각각의 컴퓨터 역시 백업 서버로서 역할을 할 수 있게 하는 것이다. 이렇게 되면 서버가 터져도 개발자 중 한 명의 컴퓨터에 저장해두었던 이전 버전을 다시 서버로 올린 후 다른 사람들은 그것을 다운받으면 되고, 평소에는 기존과 같이 개발자 컴퓨터에서 에러 발생 시 서버에서 이전 버전을 다운받으면 그만이다.

이렇듯 코드가 서버에만 있는 게 아니라 각자의 컴퓨터에 분산되어 있기 때문에

 

Git은 분산형 버전 관리 시스템(Distributed Version Control System)라고 불리운다.

 

다시 정리를 하자면,

Git이란 여러 명의 개발자(분산)가 특정 프로젝트를 자신의 컴퓨터(local)로 협업하여 개발하면서 버전을 관리할 수 있는 시스템 또는 프로그램이라고 할 수 있다.

 

+++

추가로, Git은 소프트웨어 엔지니어들에게만 한정되어있진 않다. 


소스 코드 역시 "Text"의 일부이기 때문에, 문서를 작성하고 협업하는 모든 사람들에게 익혀두면 아주 유용한 도구가 될 수 있다. 

 

'CM > Git' 카테고리의 다른 글

[Git] Git과 GitHub 차이를 알아보자.  (0) 2020.01.11
Comments