안경잡이개발자

728x90
반응형

  깃(Git)을 이용하면 하나의 프로젝트를 여러 사람들과 함께 효과적으로 관리하여 협업할 수 있습니다. 실제로 오픈소스를 효과적으로 관리하기 위한 목적으로 깃이 만들어 졌으므로 깃은 실제 프로젝트에 적용하기에 매우 적합합니다.


  여러분이 하나의 프로젝트를 여러 사람과 함께 작업한다고 해봅시다. '동시에' 프로젝트를 작업해야 한다는 점에서 매우 큰 난항을 겪을 수 있습니다. 소스코드를 여러 명이 동시에 보면서, 소스코드를 수정해야 하는데 이러한 작업은 깃(GIt)과 같은 협업 관리 도구가 없으면 쉽지 않습니다.


  깃(Git)은 여러 명이 병렬적으로 개발을 할 수 있게 해준다는 점에서 프로젝트 개발 속도를 매우 빠르게 해줍니다. 실제로 리눅스를 포함해서 다양한 오픈소스 프로젝트들은 수천 명이 넘는 개발자가 포함되어 있는데, 이들의 작업 내역을 어떻게 효과적으로 관리할 수 있는지를 깃(Git)을 제대로 배웠을 때 바르게 이해할 수 있습니다.


  무엇보다 깃(Git)을 사용할 때 얻을 수 있는, 개발자의 현실적인 장점포트폴리오 관리에도 용이하다는 겁니다. 깃 허브(Git Hub)에 자신이 작업한 프로젝트를 나열하여 얼마나 주기적으로 프로젝트를 관리하고 있는지 모두 드러나기 때문입니다.


※ 깃을 사용하지 않는 경우 ※


  깃을 사용하지 않으면 소스코드를 USB에 담아서 다른 사람의 컴퓨터로 옮기는 방식 등으로 프로젝트를 공유해야 합니다. 그러면, A라는 사람이 수정한 내역이 B라는 사람에게 즉각적으로 전달이 안 되기 때문에 A와 B가 동시에 프로젝트를 작업하기는 어렵습니다. 실제로 저는 깃을 사용하는 방법을 모르는 2년 전에 해커톤에 나간 적이 있었는데요. 카카오톡으로 프로젝트를 주고 받으면서 개발한 기억이 납니다. (그럼에도 불구하고 당시 최우수상 수상)


  혹은 깃 대신에 서브버전(Subversion)을 사용할 수 있습니다. 줄여서 SVN이라고도 부르는 이것은 Git이 활발하게 이용되기 이전에 많이 사용되었던 협업 관리 도구입니다. SVN은 기본적으로 중앙 서버가 존재한다는 점에서 Git과는 차이점이 존재합니다. 서브버전 자체도 오픈소스라는 특징이 있으며, 저는 Git 세대라서 서브버전을 사용해 본 적은 없습니다.


※ 깃을 사용하는 경우 ※


  앞서 다루어 본 SVN은 각 컴퓨터가 중앙 서버처럼 사용하는 컴퓨터로부터 파일을 다운로드 받아 이용하는 방식입니다. 깃(Git)은 중앙 서버의 개념이 없으며 중앙 서버처럼 사용하는 컴퓨터가 있다고 하더라도, 그 서버가 망가졌을 때 다른 컴퓨터로부터 소스코드를 복구할 수 있다는 특징이 있습니다.


※ 깃의 장점 ※


- 분산적인 개발: 깃(Git)을 사용하는 전체 개발 내역을 각 개발자의 로컬 컴퓨터로 복사할 수 있습니다. 나중에 서로 수정된 내역을 합치기(Merge)할 수도 있으며 이 때 Git의 고유한 프로토콜을 이용하게 됩니다.


- 효율적인 개발: 깃(Git)은 일반적인 다른 버전 관리 시스템보다 성능이 뛰어나며, 변경 이력이 많더라도 변경된 내용만 처리한다는 점에서 메모리적인 효율성 또한 뛰어납니다.


- 비선형적인 개발: 깃(Git)은 브랜치(Branch)라는 개념이 사용됩니다. 다시 말해서 프로젝트의 가지치기가 가능합니다. 이는 트리 구조, 다시 말해서 비선형적인 구조라고 볼 수 있습니다.


- 변경 이력 보장: 작업된 모든 내역(Commit 내역)들은 모두 별도의 영역에서 관리되어 안전하게 프로젝트를 운영할 수 있습니다.


※ 깃을 쓰지 않았을 때 다루기 어려운 문제들 ※


  우리가 유명한 안드로이드 어플리케이션을 개발하고 있는 개발자라고 가정합시다.


  현재 사용자들이 이용하고 있는 배포 버전이 있는 상태에서, 우리는 새로운 기능을 개발하고 있습니다. 이 때 갑자기 배포 버전에 오류가 있다는 사실이 드러나서, 빠르게 배포 버전을 수정해야 하는 상황이 왔다고 해봅시다. 이 때 우리는 어떻게 효과적으로 프로젝트 수정을 처리할 수 있을까요?


  이러한 내용은 깃에 대해서 자세히 공부하면서 익힐 수 있게 됩니다.

728x90
반응형