오픈소스 개발자의 단짝 친구 깃(Git) 그리고 깃허브(GitHub)
2017년 4월 17일
ⓒLG CNS, 이지현 기자(블로터닷넷)
오픈소스 개발을 위해 많은 사람이 이용하는 서비스가 있습니다. 바로 ‘깃(Git)’이라는 서비스인데요. 특히, 깃을 기반으로 만든 깃허브(GitHub)는 전 세계 오픈소스 개발자들의 놀이터라고 볼 수도 있습니다. 오늘은 깃과 깃허브에 대해 자세히 알아보도록 하겠습니다. 깃과 깃허브에 익숙해지면 오픈소스 개발자로 입문하는 데 많은 도움이 되실 것입니다.
협업을 위한 소스코드 관리 도구 ‘깃’
깃은 소스코드 관리를 위한 분산 버전 관리 시스템입니다. 리눅스를 만든 리누스 토발즈가 2005년 처음 만든 서비스인데요. 당시 그는 그가 개발하고 있는 프로그램을 친구들과 함께 만들기 위해 깃이라는 서비스를 고안했다고 합니다. 문서 작성을 생각해봅시다. 혼자 문서를 작성하면 문서에 어떤 부분이 수정되고, 삭제됐는지 쉽게 알 수 있습니다. 최종 문서가 어떤 문서인지도 단번에 알 수 있죠.
그럼 소스코드는 어떨까요? 소스코드는 한문장만 달라져도 프로그램이 달라질 수 있습니다. 또한, 지속적으로 수정과 삭제가 이루어집니다. 문서와 달리, 여러 사람이 이런 소스코드를 관리하니 더욱 파일이 어떻게 변화하고 있는지 알기 어려웠죠.
이때 필요한 것이 버전 관리 시스템입니다. 버전 관리 시스템을 이용하면 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있습니다. 또한, 누가 어떤 코드를 수정했는지 기록하고 추적하기도 쉬워집니다.
사실 깃 이전에도 코드를 공유하는 기본적인 기능은 있었습니다. 리누스 토발즈는 이러한 도구를 이용하다가 ‘확장성’ 부분에 문제가 있다고 느꼈다고 합니다. 다시 말해 수십 명, 수천 명이 동시에 한 시스템을 같이 만들기에는 적합하지 않은 도구들이었죠. 라이선스 문제도 있었습니다.
그렇게 개발된 것이 깃입니다. 깃은 1,000명이 동시에 이용할 수 있을 만큼 확장성이 좋습니다. 리누스 토발즈는 깃의 기본 개념을 제공하는 수준으로 기여했고, 이후에는 주니오 하마노(Junio Hamano)라는 개발자가 깃을 개발하고 관리하고 있습니다.
깃의 가장 큰 특징은 데이터를 다루는 방식입니다. 과거 소스코드 관리 도구는 파일 목록을 관리하면서 데이터의 변화를 기록했습니다. 깃은 다릅니다. 깃은 파일을 새로 저장하는 것이 아니라 새로운 프로젝트가 생성되는 순간을 더 중요하게 여깁니다. 예를 들어, 이전 상태로 돌아갈 수 있는 링크를 계속 저장합니다. 더 작은 파일 시스템이라고 할 수 있죠. 이러한 과정에서 프로젝트가 망가질 걱정 없이 특정 상태로 되돌리기를 할 수 있습니다.
또한, 브랜치 모델을 적용하기도 좋은 도구입니다. 깃에선 브랜치를 만들고, 코드를 복제하고 여러 방식으로 코드를 작성하고 다시 통합할 수 있습니다. 다른 버전 관리 도구들도 브랜치를 지원하긴 하나 깃의 브랜치 모델은 훨씬 더 가벼운 특징이 있습니다. 현재 깃은 GNU 일반 공중 사용 허가서 버전 2(GNU General Public License version 2) 라이선스로 배포되고, 독립된 프로젝트로 운영되고 있습니다.
개발자들의 소셜 네트워크, 깃허브
깃허브는 깃을 대중화하는 동시에 오픈소스 개발자들을 확산하는 데 중요한 역할을 한 웹 서비스입니다. 2008년 설립된 깃허브는 ‘깃’ 전문 호스팅 업체입니다. 개발자 출신 3명이 의기투합해 만들었다고 합니다. 2012년 ‘테크크런치’는 깃허브의 인기를 설명하면서 “깃허브는 오픈소스 개발에 입문하는 장벽을 낮춰, 누구나 오픈소스 프로젝트에 참여할 수 있게 만들었다”라며 “초기 단계 오픈소스 프로젝트가 성장하는 데 도움을 줄 것”이라고 평가했습니다.
깃허브는 깃을 웹에서 보다 편하게 쓸 수 있도록 만든 도구라고 보시면 됩니다. 예를 들어, 깃은 명령어를 하나하나 입력하면서 이용해야 하지만, 깃허브는 웹 그래픽 기반으로 보다 서비스를 직관적으로 이해할 수 있습니다. 소스코드 검색도 쉽고, 어떤 프로젝트가 인기 있는지도 확인할 수도 있습니다. 여기에 소셜 기능도 있는 덕에 댓글을 달거나, 사용자의 이름이나 이메일, 과거 소스코드 개발 경력도 함께 볼 수 있습니다.
최근 국내외의 IT 기업은 개발자를 채용할 때, 깃허브 주소를 넣는 창을 따로 마련하고 있습니다. 이 과정에서 채용 담당자는 지원자가 참여한 프로젝트 기술이나 소스코드 내용을 직접 확인하곤 합니다.
Github ‘Octocat’ (출처: https://github.com/logos)
깃허브의 가장 강력한 기능은 ‘포크(fork)’입니다. 각 코드 저장소에는 ‘포크’라는 버튼이 항상 보이는데요. 이 버튼을 누르면 누구나 자신의 계정으로 해당 소스코드를 복사하고 활용할 수 있습니다. 포크와 별도로 ‘스타(star)’라는 버튼도 있습니다. 이 기능은 일종의 즐겨찾기 기능으로 마음에 드는 소스코드 저장소를 나중에 확인할 수 있도록 도와줍니다. 깃허브 내의 인기 소스코드 저장소를 판단하는 기준에 ‘포크’ 수나 ‘스타’ 수가 많이 참고되곤 합니다.
깃허브는 단순히 서비스로 국한되는 것이 아니라 전 세계 오픈소스 정보가 모이는 곳이기도 합니다. 인기 오픈소스 순위나 분석 데이터를 제공하기도 하고 별도의 교육, 콘퍼런스도 진행합니다. 깃허브가 역할이 점점 커지자 많은 기업이 자체 홈페이지를 버리고 소스코드 저장만큼은 깃허브에서 하는 경우도 많아지고 있습니다.
구글의 경우 수백 개의 오픈소스 프로젝트를 원래 ‘구글 코드’라는 내부 저장소에 공개했지만 2015년 내부 호스팅 서비스를 폐쇄하고, 깃허브로 모든 소스코드를 옮기는 결정을 발표했습니다. 마이크로소프트(MS) 역시 2017년 ‘코드플랙스’라는 내부 코드 저장소를 폐쇄하고 깃허브로 모든 오픈소스 코드를 옮겼습니다. 그 결과 현재 깃허브 사용자는 2,000만 명이 넘었고, 깃허브에 내에 저장된 소스코드 저장소는 약 5,700만 개라고 합니다.
깃허브 프로젝트 (출처: https://github.com/atom/atom)
깃은 독립된 프로젝트로 별도의 운영비용이 필요 없지만, 깃허브는 수백 명 직원이 일하고 있는 영리 기업입니다. 따라서 별도의 수익모델이 필요한데요. 깃허브는 유료 서비스를 통해 수익을 만들고 회사를 운영하고 있습니다. 기본적으로 깃허브에선 누구나 코드를 무료로 올릴 수 있습니다. 단, 이때 소스코드는 모두에게 개방해야 합니다.
누구나 참여할 수 있는 오픈소스 프로젝트는 무료로 깃허브에 소스코드를 올리고 관리할 수 있습니다. 하지만, 특정 몇 명만 코드에 접근할 수 있는 ‘프라이빗’ 저장소도 존재합니다. 이 서비스는 유료입니다. 기업용 깃허브도 따로 있는데요. 기업용 깃허브는 보안성을 높이고 관리도구를 추가한 것이 특징입니다. 또, 기가바이트(GB)급 대용량 파일도 깃허브 안에서 유지보수할 수 있습니다. 유료 서비스 요금은 7달러에서 200달러까지 다양합니다.
오픈소스 개발자를 꿈꾼다면, 깃과 깃허브는 여러분에게 좋은 친구가 되어줄 것입니다. 자신의 오픈소스를 전 세계 사람들과 공유하며 발전하는 기쁨을 느껴보시길 바랍니다.
* 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 LG CNS 블로그에 저작권이 있습니다.
* 해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
번호 | 제목 | 작성자 | 조회수 | 작성 |
---|---|---|---|---|
공지 | [2024년] 오픈소스SW 라이선스 가이드 개정판 발간 file | support | 7237 | 2024-01-03 |
공지 | [2024년] 기업 오픈소스SW 거버넌스 가이드 개정판 발간 file | support | 5631 | 2024-01-03 |
공지 | [2024년] 공공 오픈소스SW 거버넌스 가이드 개정판 발간 file | support | 5588 | 2024-01-03 |
공지 | 공개 소프트웨어 연구개발(R&D) 실무 가이드라인 배포 file | support | 18181 | 2022-07-28 |
공지 | 공개소프트웨어 연구개발 수행 가이드라인 file | OSS | 16903 | 2018-04-26 |
284 | 오픈소스 개발자의 단짝 친구 깃(Git) 그리고 깃허브(GitHub) | OSS | 4264 | 2017-10-24 |
283 | [9월 공개SW 월간브리핑] NIPA, 하반기 다양한 공개SW 참여 행사 풍성 | OSS | 1973 | 2017-10-11 |
282 | [2017년 9월 기준] 클라우드, 빅데이터 분야 공개SW 솔루션 리스트 file | OSS | 1994 | 2017-09-25 |
281 | [8월 공개SW 월간브리핑] 리눅스재단, 공개SW 채용 인기분야는 클라우드 | OSS | 2049 | 2017-09-05 |
280 | 소스코드와 오픈소스 | OSS | 9403 | 2017-08-24 |
279 | Pro Git (Second Edition) 한글번역본 file | OSS | 8071 | 2017-08-16 |
278 | [7월 공개SW 월간브리핑] 금융권, 리눅스 운영체제 점유율 상승 추세 | OSS | 3252 | 2017-08-04 |
277 | 오픈소스 언어로 만나는 데이터 분석, ‘파이썬’과 ‘R’ | OSS | 3307 | 2017-08-01 |
276 | [Github Trend ①] 2016년 깃허브 활동 현황과 트렌드(2) - 2016 깃허브 Top10 | OSS | 3274 | 2017-07-26 |
275 | [Github Trend ①] 2016년 깃허브 활동 현황과 트렌드(1) | OSS | 3323 | 2017-07-25 |
0개 댓글