깃허브(GitHub)란?

nacyot
44BITS 기술 블로그
19 min readFeb 1, 2020

깃허브(GitHub)는 분산 버전 컨트롤 소프트웨어 깃(Git)을 기반으로 소스 코드를 호스팅 하고, 협업 지원 기능들을 지원하는 소셜 코딩을 지향하는 마이크로소프트(Microsoft)의 웹서비스입니다. 2020년 현재 가장 인기 있는 소스 코드 호스팅 서비스이자 소셜 코딩 플랫폼입니다.

GitHub의 로고

깃허브는 2007년 샌프란시스코에 본사를 둔 깃허브 Inc.(GitHub, Inc.)에서 톰 프레스턴 워너(Tom Preston-Werner), 크리스 완스트래스(Chris Wanstrath), 피 제이 하이엣(P. J. Hyett)를 중심으로 루비 온 레일스(Ruby on Rails)로 개발되기 시작하였으며, 2008년 2월 웹 서비스로 공개되었습니다. 2009년 2월에는 46,000개의 공개 저장소가 호스팅되고 있으며, 이 중 17,000개는 2009년 1월에 만들어졌다고 공개합니다. 2011년에는 리드라이트웹에서 2011년 1월부터 5월 사이의 깃허브의 전체 커밋 수가 소스포지(Source Forge)와 구글 코드(Google Code)를 넘어섰다고 발표합니다. 2013년에는 3백만 사용자, 5백만 개 이상의 저장소를 호스팅하고 있다고 공개합니다. 지속적인 성장 이후, 2018년 6월 4일 마이크로소프트(Microsoft)에서 깃허브를 원화로 약 8조원에 인수한다고 발표합니다. 이 인수로 톰 프레스턴 워너, 크리스 완스트레스, 피 제이 하이젯의 주식 가치는 각각 1조 이상이 될 것으로 추정된다고 합니다. 현재 깃허브는 마이크로소프트의 자회사로 운영되고 있습니다.

깃허브에서 매년 깃허브 생태계에 대해 옥토버스(Octoverse)라는 레포트를 공개하고 있는데, 2019년에는 4,000만 이상의 사용자, 4,400만 개의 신규 저장소, 8,700만 개 이상의 풀리퀘스트가 머지, 2000만 개 이상의 이슈가 클로즈되었다고 공개했습니다. 사용자의 경우 2019년 한 해 동안에만 천만 명이 늘어난 수치입니다.

깃허브에서는 코드 호스팅 서비스 외에도 다양한 기능들을 제공하고 있습니다. 깃(Git) 저장소를 원격에서 관리할 수 있을 뿐만 아니라 협업이 가능하도록 웹 서비스로 이슈 트랙커를 제공하고 있습니다. 또한 저장소를 자신의 계정에 복사할 수 있는 포크 기능과 코드 변경 사항 반영을 요청하는 풀리퀘스트 기능은 오픈 소스의 기본적인 협업 방식으로 자리잡았습니다. 깃으로 사용할 수 있는 기능을 웹 인터페이스로 사용할 수 있으며, 저장소 관련 통계, 저장소 위키, 정정 웹사이트 호스팅, 패키지 호스팅, 지속적 통합을 제공하는 깃허브 액션 등의 서비스를 제공하고, 깃허브 데스크탑(GitHub Desktop)과 깃허브 포 모바일(GitHub for mobile)으로도 서비스를 사용할 수 있습니다. 개인용으로 사용할 수 있을 뿐만 아니라 팀 단위나 비지니스로 사용할 수 있는 엔터프라이즈 플랜도 제공하고 있습니다. 엔터프라이즈 플랜의 경우 서비스형과 설치형을 모두 제공하고 있습니다.

깃허브(GitHub)는 수많은 오픈소스들이 자리잡고 있는 것으로도 유명합니다. 자바스크립트 프레임워크 , 컨테이너 도구 도커 docker/docker, 웹 프레임워크 루비 온 레일스 rails/rails, 머신러닝 라이브러리 텐서플로우 tensorflow/tensorflow, 파이썬 데이터 분석 라이브러리 판다스 pandas-dev/pandas, 페이스북의 자바스크립트 프레임워크 리액트 facebook/react, 정보시각화 라이브러리 D3.js d3/d3 등은 깃허브에서 호스팅되고 있을 뿐만 아니라, 개발 및 협업도 깃허브를 통해서 이루어지고 있습니다. 깃허브는 유료 소스 코드 호스팅 서비스로 무료 플랜의 경우 몇 가지 제약을 가지고 있습니다. 예를 들어 프라이빗 저장소의 경우 저장소를 관리하는 협업자 Collaborator수는 최대 3명입니다. 또한 위키와 인사이트 같은 기능도 사용할 수 없습니다. 단, 오픈소스를 장려하는 차원에서 무료 플랜을 사용하더라도 소스 코드가 공개된 저장소에 한해서 깃허브의 거의 모든 기능을 제약 없이 사용할 수 있습니다.* 또한 오픈소스 개발을 위한 오거니제이션(Organization)을 운영하는 경우 별도의 신청을 받아 팀 플랜 무료로 사용할 수 있습니다. 이 외에도 깃허브 스폰서(GitHub Sponsor) 를 통해서 별도의 수수료 없이 오픈소스 개발자나 팀을 후원할 수도 있습니다.

* 이 정책은 오픈소스 라이센스와는 무관합니다. 소스코드가 공개된 모든 저장소에 적용됩니다.

깃허브에 대한 보다 자세한 공식 정보와 최신 소식들은 다음 페이지를 참고해주세요.

깃허브 유니버스(GitHub Universe): 공식 연례 컨퍼런스

깃허브에서는 2015년부터 연례 컨퍼런스로 깃허브 유니버스(GitHub Univese)를 열고 있습니다. 2019년에는 이틀 간에 걸쳐서 열렸으며, 깃허브 포 모바일(GitHub for Mobile)을 발표하고, 깃허브 액션(GitHub Actions), 깃허브 패키지(GitHub Package), 깃허브 스폰서(GitHub Sponsor)등의 서비스를 정식 릴리스한다고 발표했습니다. 이외에도 깃허브 서비스의 다양한 기능이 추가되었습니다.

컨퍼런스의 주요 영상들은 유튜브Youtube를 통해서 공개하고 있습니다.

깃허브 유니버스에 관심이 있으신 분들은 2015, 2018, 2019년에 행사에 참고하고 오신 아웃사이더 님의 후기를 참고해보세요.

옥토버스(Octoverse): 공식 연례 보고서

옥토버스는 깃허브 생태계를 분석한 보고서로 매년 공개하고 있습니다. 원래는 2012년에 깃허브 사용 통계를 분석한 블로그 포스트에서 확장되어 현재는 매년 레포트 형식으로 공개합니다. 깃허브의 사용 현황, 사용자 통계, 저장소 관련 통계를 비롯해, 국가별 사용자 현황 및 인기 언어, 오픈소스 커뮤니티 현황 등에 대한 정보도 확인할 수 있습니다.

옥토캣(Octocat): 깃허브 공식 마스코트

깃허브의 공식 마스코트는 고양이와 문어가 합성해 만들어진 옥토캣(Octocat)입니다. 깃허브하면 옥토캣을 떠올릴 정도로 프로그래머들의 많은 사랑을 받고 있습니다.

깃허브의 공식 마스코트 옥토캣(Octocat)

깃허브에서는 옥토덱스(Octodex)에서 공식적으로 옥토캣의 다양한 버전을 공개하고 있으며, 여러 개발 관련 행사에서 스티커로 배포되고 있습니다.

마이 옥토캣(My Octocat)서비스에서는 옥토캣 스타일로 자신만의 캐릭터를 만들어볼 수도 있습니다.

깃허브의 오픈소스 프로젝트

깃허브에서는 오픈소스로 다양한 프로젝트들을 진행하고 있습니다.

  • 아톰(Atom): 아톰은 깃허브에서 주도해서 개발하고 있는 오픈소스 텍스트 에디터입니다. 2014년 처음 공개되었으며 GUI 텍스트 에디터로 많은 주목을 받았습니다. 2018년 깃허브가 마이크로소프트에 인수되면서 마이크로소프트에서 개발한 비주얼 스튜디오 코드와 포지션이 겹치는 상황이지만, 현재도 계속 개발되고 있습니다.
  • 일렉트론(Electron): 일렉트론은 웹에서 주로 사용하는 자바스크립트(JavaScript), HTML, CSS를 사용해 크로스 플랫폼 데스크탑 애플리케이션을 만들 수 있는 프레임워크입니다. 대표적으로 비주얼 스튜디오 코드(Visual Studio Code), 슬랙(Slack), 노션(Notion), 디스코드(Discord) 앱에서 사용하고 있습니다.
  • 허브(Hub): 허브는 깃(Git)명령어를 확장해 CLI에서 깃허브를 사용할 수 있도록 도와주는 명령어입니다.
  • 시멘틱(Semantic): 시멘틱은 언어 실행기없이 소스 코드를 파싱, 분석, 비교할 수 있는 도구입니다. 루비(Ruby), 자바스크립트(JavaScript), 타입스크립트(TypeScript), 파이썬(Python), 고(Go)등을 지원하며 구현은 하스켈로 되어있습니다.

깃허브에서는 이외에도 다양한 오픈소스 프로젝트를 공개하고 깃허브 오거니제이션 (Organization)페이지에서 확인해볼 수 있습니다.

깃허브(GitHub)의 플랜과 요금

깃허브 서비스 요금에 대한 정확하고 구체적인 정보는 공식 요금 페이지 를 참고해주세요.

개인용 플랜: 무료 플랜(Free)과 프로 플랜(Pro)

개인이 사용할 수 있는 플랜은 크게 무료(Free) 플랜과 프로(Pro) 플랜이 있습니다. 깃허브는 소스 코드가 공개되는 경우에는 무료로 사용할 수 있습니다. 비공개 저장소는 2019년 1월 이전에는 유료 사용자만 사용할 수 있었지만, 마이크로소프트에 인수된 이후 유료 플랜을 프로 Pro라는 새로운 이름으로 개편하면서 무료 사용자도 비공개 저장소를 사용할 수 있도록 개편되었습니다. 단, 무료 플랜에서 비공개 저장소를 사용하는 경우 협업자 수의 제한과 일부 기능 제약이 있습니다. 요금 제도 개편에 대한 자세한 내용은 아래 글을 참고해주세요.

무료 플랜과 프로 플랜의 차이는 프라이빗 저장소의 제약 외에도 깃허브 액션 시간(3,000분/월), 패키지 스토리지 용량(1GB) 등이 있습니다. 하지만 무료 플랜의 경우에도 깃허브 액션 2,000분/월, 패키지 스토리지 500MB를 제공합니다. 요금 개편 이전에 유료 플랜을 사용하는 이유는 주로 비공개 저장소를 사용하기 위해서였는데, 현재는 굳이 처음부터 프로 플랜을 고려할 이유는 없어보입니다.

팀용 플랜: 팀 플랜(Team)과 엔터프라이즈 플랜(Enterprise)

팀에서 사용할 수 있는 플랜은 크게 팀(Team)과 엔터프라이즈(Enterprise)두 가지가 있습니다. 팀 플랜은 오거니제이션을 만들고, 이 아래에 저장소를 관리하는 방식입니다. 깃허브에서는 공개 저장소에 한해서 오거니제이션 기능 역시 기본적으로 무료 플랜으로 제공하고 있습니다. 팀 플랜에서는 오거니제이션 아래에 다수의 팀을 만들고 관리할 수 있는 기능과 추가적인 협업 기능이 제공됩니다. 팀 플랜은 개인용 프로 플랜보다 조금 더 비싸며 멤버 당 요금이 책정 됩니다. 또한 오거니제이션의 팀 플랜을 구독하는 것과 개인용 프로 플랜은 별개입니다.

팀 플랜은 업무 용도로 사용하기에도 충분합니다만, 다수의 오거네제이션을 일괄적으로 관리해야하는 경우 엔터프라이즈 플랜을 사용할 수 있습니다. 엔터프라이즈 플랜은 원래 깃허브의 셀프 호스티드 버전으로 로컬 머신이나 클라우드에 직접 설치해서 사용했습니다. 따라서 깃허브와는 완전히 별개 서비스로 동작하며 서비스 장애에 영향을 받지 않았고, 소스 코드를 외부 서비스에 보관하지 않아도 된다는 장점이 있었습니다. 현재는 엔터프라이즈 클라우드와 셀프 호스티드 2가지 방식으로 제공하고 있습니다. 엔터프라이즈 플랜은 감사 로그(Audit log), 싱글 사인온, LDAP 인증과 같은 기능을 추가적으로 제공합니다.

무료 지원

깃허브의 오픈소스, 교육, 비영리 단체 지원, 2020년 1월

깃허브에서는 오픈소스와 교육, 비영리 단체에 대한 지원을 하고 있습니다. 자세한 내용은 요금 페이지를 참고해주세요.

깃허브GitHub의 서비스들

깃허브에서는 코드 개발과 이를 지원하기 위한 다양한 서비스들을 제공하고 있습니다.

저장소(Repository)

깃허브의 핵심 기능은 깃(Git)원격 저장소 호스팅입니다. 깃허브를 통해 로컬 개발 환경과 온라인에서 안전하게 깃 저장소에 접근할 수 있습니다. 단순히 깃 저장소를 원격에서 호스팅할 뿐만 아니라, 이슈 트랙커, 풀리퀘스트, 소스코드 탐색, 위키, 인사이트* 등의 기능을 제공하고 있습니다.

* 무료 플랜의 경우 프라이빗 저장소에서는 위키, 인사이트, 깃허브 페이지 기능을 사용할 수 없습니다.

개인 저장소 뿐만 아니라 오거니제이션을 만들어 팀 단위로 저장소를 관리하는 기능도 제공하고 있습니다. 오거니제이션 역시 공개 저장소에 대해서는 거의 모든 기능을 무료로 이용할 수 있습니다.

44BITS의 깃허브 오거니제이션(GitHub organization) 페이지

깃허브 페이지(GitHub Pages): 정적 웹 사이트 호스팅 서비스

깃허브 페이지는 깃허브 저장소를 기반으로 정적 파일들을 호스팅할 수 있는 서비스입니다. 파일을 웹 상에 공개하거나, 저장소의 특정 브랜치에 HTML, CSS, 자바스크립트 JavaScript로 구성된 파일을 올려두고 웹사이트로 공개할 수 있습니다. 깃허브 페이지는 정적 사이트 생성기*와 함께 많이 사용되고 있으며, 내부적으로 루비로 만들어진 정적 사이트 생성기 빌드를 지원합니다. github.io 도메인으로 바로 접근 가능하며, 커스텀 도메인을 설정하는 것도 가능합니다. 비공개 저장소를 깃허브 페이지로 호스팅하기 위해서는 프로 플랜을 사용해야합니다.

* 정적 웹 사이트 생성기는 동적인 코드를 기반으로 정적으로 호스팅할 수 있는 웹 사이트를 생성해주는 도구입니다. 지속적 통합(Continuous Integration)서비스와 연동해서 코드 변경시 웹 사이트 전체를 다시 빌드하고 저장소를 업데이트하는 방식으로 많이 사용됩니다. 코드와 텍스트 기반으로 웹 사이트를 운영할 수 있어서 주로 개발자들이 선호하는 방식입니다.

깃허브 액션(GitHub Acitons): 지속적 통합 서비스

깃허브 액션은 깃허브 깃 저장소에 통합되어 제공되는 지속적 통합 서비스(Continuous Integration)입니다. 저장소 푸시를 비롯해 깃허브 저장소에서 발생하는 다양한 이벤트를 기반으로 실행됩니다. 깃허브 액션에서는 액션이라는 단위로 작업을 수행하며, 이를 워크플로우로 구성할 수 있습니다. 액션은 마켓플레이스에서 이미 만들어져있는 걸 사용하거나 자바스크립트(JavaScript)나 도커(Docker)를 사용해 직접 작성하는 것도 지원합니다.

깃허브 액션의 요금표

깃허브 액션은 공개 저장소에 대해서는 무료로 제공됩니다. 비공개 저장소의 경우 무료 플랜 2,000분/월, 프로 플랜 3,000분/월 등 무료 사용 시간을 제공하고 있으며 초과된 시간에 대해서는 운영체제에 따라서 추가 비용을 받고 있습니다. 또한 셀프 호스티드로 빌드 러너를 운영할 수 있으며, 이 경우 추가 요금은 발생하지 않습니다.

깃허브 패키지(GitHub Package): 패키지 저장소

깃허브 패키지는 깃허브 저장소와 통합해 언어별로 패키지를 저장하고 호스팅할 수 있는 서비스입니다. 현재는 노드js(Node.js)의 npm, 루비(Ruby)의 gem, 자바(Java)의 mvn, 자바의 gradle, 도커 이미지, 닷넷(.NET)의 NuGet을 지원하고 있습니다.

깃허브 마켓플레이스(GitHub Marketplace)

깃허브 마켓플레이스는 깃허브와 연동해서 사용할 수 있도록 개발된 써드파티의 앱이나 액션을 구매할 수 있는 서비스입니다. 마켓플레이스에서는 깃허브 기능을 확장하는 앱과 깃허브 액션에서 사용할 수 있는 액션을 구매할 수있습니다.

깃허브 스폰서(GitHub Sponsors): 개발자 정기 후원 서비스

깃허브 스폰서는 깃허브 사용자나 팀을 정기 후원할 수 있는 서비스입니다. 깃허브에서는 수수료 없이 개발자나 오픈소스를 후원할 수 있도록 깃허브 스폰서를 공개했습니다. 2020년 1월 이전의 후원에 대해서는 깃허브에서 해당 금액만큼 추가로 금액을 더해주는 이벤트를 진행했으며, 런칭 기념으로 2020년 5월까지는 결제 수수료도 깃허브에서 지불합니다. 2020년 1월 현재 계좌 처리 이슈로 20개국만을 지원하고 있으며, 한국은 포함되어있지 않습니다.

기스트(Gist): 코드 스니펫 공유 서비스

깃허브의 코드 스니켓 공유 서비스 기스트(Gist)

기스트는 짧은 코드 조각을 공유할 수 있는 서비스입니다. 기스트에서 코드나 여러 파일로 이루어진 코드들을 작성하고 바로 공유할 수 있습니다. 내부적으로 깃허브 저장소와 마찬가지로 깃 저장소를 만들며, 개발 환경에서 이 저장소를 클론받아 편집할 수도 있습니다. 깃허브와는 달리 저장소에 포함된 파일들의 내용을 바로 보여줍니다. 짧은 코드를 공유하는 용도로 많이 사용합니다.

깃허브 데스크톱(GitHub Desktop)

깃허브 데스크톱은 윈도우(Windows)와 맥OS(MacOS)에서 사용할 수 있는 깃허브 전용 어플리케이션입니다. 깃 클라이언트 역할과 함께 깃허브의 일부 기능도 바로 사용할 수 있습니다.

깃허브 모바일(GitHub Mobile)

깃허브 모바일은 깃허브 유니버스 2019에서 발표된 깃허브 모바일 클라이언트입니다. 깃허브는 웹 서비스로 시작해서 모바일 지원이 약한 편이었습니다. 깃허브 모바일은 모바일 용 웹페이지가 아닌 플랫폼 별로 전용 앱으로 제공됩니다. 2020년 1월 현재 안드로이드와 iOS에서 베타 테스트를 진행하고 있습니다.

깃허브 스테이터스(GitHub Status): 서비스 상태 모니터링

깃허브 서비스 별로 현재 서비스 상태나 과거 상태를 확인할 수 있는 페이지입니다. 깃허브 서비스 상태가 비지니스에 영향을 끼친다면, 상태 변화를 전화, 메일, RSS 등을 통해서 구독할 수 있습니다.

깃허브 트렌드(GitHub Trending) / 인기 저장소

깃허브에서 최근 인기 있는 저장소와 프로젝트는 트렌딩 페이지에서 확인할 수 있습니다. 또한 스타를 기준으로 인기있는 저장소와 오거니제이션 순위를 보여주는 깃스타 랭킹(Gitstar Ranking)과 같은 외부 서비스도 있습니다.

아래 목록은 2020년 1월 현재 깃허브 전체에서 가장 인기 있는 저장소 목록입니다.

  • freeCodeCamp/freeCodeCamp: https://www.freeCodeCamp.org 는 무료로 코딩을 배울 수 있는 웹사이트입니다.
  • 996icu/996.ICU: 996.ICU는 중국의 오전 9시부터 오후 9시까지 6일간 일하는 열악한 근무 환경을 비판하는 저장소입니다.
  • vuejs/vue: 뷰.js(Vue.js)는 페이스북의 리액트react와 함께 최근 가장 인기있는 프론트엔드 프레임워크입니다.
  • facebook/react: 리액트(react)는 페이스북의 오픈소스로 선언적인 코드와 컴포넌트를 기반으로 웹서비스를 작성할 수 있는 프론트엔드 프레임워크입니다.
  • tensorflow/tensorflow: 구글 브레인(Google Brain)팀에서 처음 개발하기 시작한 텐서플로우는 오픈소스 머신러닝 프레임워크입니다. 공식적으로 C++과 파이썬(Python) API를 제공하고 있습니다.
  • twbs/bootstrap: 부트스트랩(Bootstrap)은 트위터의 오픈소스 프로젝트로 HTML, CSS, 자바스크립트(JavaScript)를 사용한 모바일 퍼스트(mobile-first)와 반응형 디자인(responsive design)을 지원하는 UI 프레임워크입니다.
  • EbookFoundation/free-programming-books: 무료로 읽을 수 있는 프로그래밍 도서를 모아놓은 저장소입니다.
  • sindresorhus/awesome: awesome이 전치사로 붙은 저장소들은 특정 주제에 대해 뛰어난 문서나 서비스를 모아서 제공하는 링크집입니다. awesome은 이런 저장소들을 다시 모아서 제공하는 메타 저장소입니다.
  • getify/You-Dont-Know-JS: 케일 심슨(Kyle Simpsone)의 You Don’t Know JavaScript 시리즈 저장소입니다.
  • ohmyzsh/ohmyzsh: ohmyzsh는 zsh 설정 파일들을 관리하기 위한 프레임워크입니다. zsh을 지원하는 200개 이상의 플러그인과 140개 이상의 테마를 쉽고 빠르게 설정할 수 있습니다.

깃허브의 고급 검색 에서는 스타수나 언어를 기반으로 하는 검색을 지원하고 있습니다. 자신이 사용하고 있는 언어의 인기 저장소가 궁금하다면 이 기능을 사용해 찾아볼 수 있습니다.

기타 정보

Originally published at https://www.44bits.io on February 1, 2020.

--

--

nacyot
44BITS 기술 블로그

당근마켓 클라우드 엔지니어 / SRE. 루비 프로그래머.