github vs gitlab

요약

2021년 초 버전관리 및 CICD 솔루션으로 github team (SaaS) VS gitlab 비교한 자료

  • 현재 목표를 분산형 버전관리 사용, 기초적인 CICD 파이프라인 구축 정도로 한다면 github 선택. gitlab은 CICD 관련하여 각종 다양한 기능과 툴을 통합해서 제공하고 있고 애플리케이션 배포 기능도 github에 비해서 좋다. 그렇지만 아직 분산형 버전관리 및 CICD에 대한 경험이 적은 상태라면 gitlab의 각종 기능을 활용하기는 쉽지 않을 것으로 보인다.

  • gitlab은 상대적으로 CICD 관련하여 각종 다양한 기능과 툴을 통합해서 제공하고 있고 애플리케이션 배포 기능도 github에 비해서 좋다.

사내에서 배포가 필요하면 필요한 OS의 runner 를 설치하면 됨.

설치형 vs SaaS (Software as a Service)

선택 : 솔루션 관리의 편의성을 위해서 SaaS 선택을 함.

gitlab은 모든 타입에서 설치형 지원을 함.

github는 Enterprise 에서만 설치형 지원을 함.

gitlab vs github 가격비교

gitlab

github

gitlab

github

Free

Premium : 1인당 월$19*12= 년 $228

Ultimate : 1인당 월$99*12=년 $1188

Free

Team : 1인당 월 $4*12 = 년 $48

Enterprise : 1인당 월 $21*12 = 년 $252

Pricing

Pricing · Plans for every developer

gitlab vs github 기능 비교

타입별 기능 비교

결론 : Free 버전 제외

Free 버전에서는 git 사용을 위한 기본적인 기능만 지원을 하며 기술지원이 없음.

PR(MR) 요청을 했을 때 리뷰어를 두고 승인을 하는 기능은 Free 버전에는 없으며  gitlab Premium이나  github Team을 써야 함.

gitlab Ultimate, github Enterprise 는 주로 보안과 관련한 기능 추가가 많음.

gitlab vs github 기능비교

CICD를 기준으로 평가를 했을때 github은 기본적인 CICD 기능을 제공하지만 gitlab은 CICD에 필요한 각종 기능을 통합하여 제공을 하고 있음. 배포 측면에서 보았을 때는 gitlab은 environments 를 이용하여 애플리케이션 배포 및 롤백이 편리한데 github은 private repo에 대해서는 아직 지원을 하지 않고 있음.

  • 버전관리

  • 프로젝트관리(wiki, issues)

  • 패키지기능(npm, RubyGems, Apache Maven, Gradle, Docker, and NuGet, docker)

  • CICD

  • 보안


gitlab 의 각종 부가기능

테스팅과 관련한 각종 툴이 통합 :  단위 테스트 보고서, 접근성 테스트, 브라우저 성능 테스트, 코드 품질, 부하 성능 테스트, 메트릭 레포트,  (https://docs.gitlab.com/ee/ci/unit_test_reports.html )

Auto DevOps : 유용할 수는 있지만 사용하는 사람이 해당 내용을 알고 있어야 하는 부분임. 또한 k8s 사용을 하고 있는 경우에 유용. https://docs.gitlab.com/ee/topics/autodevops/index.html

  • 코드 언어 감지

  • 자동 빌드, 테스트, 코드 품질 측정

  • 잠재적인 취약성, 보안 결함 및 라이선스 문제 스캔 (ultimate 에 해당)

  • 실시간 모니터링

  • 애플리케이션 배포

애플리케이션 운영 및 유지 관리에 도움이되는 다양한 도구를 제공 https://docs.gitlab.com/ee/operations/

  • 메트릭으로 신뢰성 및 안정성 측정

  • 경고 및 사고 관리

  • 애플리케이션의 오류 추적

  • 애플리케이션 상태 및 성능 추적

  • 로그 집계 및 저장

  • 코드로 인프라 관리 (terraform remote backend)

  • k8s 통합기능

gitlab에서는 지원하지만 github에서는 지원하지 않는 기능들.

https://about.gitlab.com/devops-tools/github-vs-gitlab/

https://about.gitlab.com/devops-tools/github-vs-gitlab/ci-missing-github-capabilities/

https://about.gitlab.com/devops-tools/github-vs-gitlab/cd-missing-github-capabilities/

공통으로 지적하는 부분이 staging, prod 에 따라 워크플로 다르게 실행하는 기능임.

Cannot easily trigger different workflows for staging and production environment

Cannot easily trigger different workflows for staging & prod environment

gitlab에서는 manual 을 이용해서 특정 job을 수동으로 실행시킬 수 있는데 github actions에서는 안됨.

environments 및 배포기능

gitlab CICD에서 장점은 environments 를 이용하여 각 환경(staging, prod)에 대한 배포를 손쉽게 하고  기록을 확인할 수 있다.  https://docs.gitlab.com/ee/ci/environments/

github 에서는 environments 기능을 공개 repo나 enterprise plan 일 경우에만 지원을 하고 github team 의 private repo에는 아직 지원 안함. → For access to environments, environment secrets, and deployment branches in private or internal repositories, you must use GitHub Pro, GitHub Team, or GitHub Enterprise. 2022년 언제부터인가 이제 GitHub Team 의 private repo에서도 environments 를 지원한다.

github 에서 environments 기능은 리뷰어의 승인이 있어야 배포 가능, 트리거 발생후 일정 시간이 지나야 배포 가능, 특정 브랜치만 배포 가능

Managing environments for deployment - GitHub Docs

GitHub Actions: Environments, environment protection rules and environment secrets (beta) · GitHub Changelog

environments 에 따른 변수를 다르게 쓸 수 있는 것도 좋은 기능인데 environments 가 지원되어야 가능한 부분임.

참고자료