오랜만에 돌아온 GitLab과 GitHub 비교하기 시리즈입니다. 이번에 소개할 내용은 GitLab과 GitHub을 선택하는 기준이 될 Decision Kit입니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

GitHub Overview

GitLab과 GitHub을 비교하기에 앞서, GitHub에 대해서 살펴보도록 하겠습니다.

GitHub은 프로젝트를 관리하고, 코드를 리뷰하고, 이를 통하여 협업하는 코드 레파지토리(code repository)입니다. Git을 기본으로 하는 분산 버전 관리 및 소스 코드 관리(SCM) 기능을 제공할 뿐만 아니라 자체적인 기능들을 제공하고 있습니다. 모든 프로젝트에 대한 제어 및 버그 추적, 기능 요청, 작업 관리 및 wiki와 같은 협업을 위한 여러 기능을 제공합니다.

2019년 11월, GitHub은 모든 사용자에게 GitHub Action의 기능을 사용할 수 있도록 했습니다. GitHub Action을 사용하면 다양한 GitHub API 호출을 통해 컨테이너에서 코드 스니펫(code snppets)을 할 수 있습니다. 이를 통해 사용자는 모든 이벤트를 기반으로 워크플로우를 조정(orchestrate)할 수 있습니다. GitHub Action을 사용하면 워크플로우와 모든 단계를 코드로 작성하여, GitHub에서 CI/CD를 구축하고, 빌드, 테스트 및 배포를 더 쉽게 자동화 할 수 있습니다.

GitLab도 마찬가지로, CI/CD를 통합하는 기능뿐만이 아니라 어플리케이션 성능 및 서버 모니터링과 같은 추가 기능들을 제공합니다. 또한, GitLab은 SAST, DAST, 컨테이너 스캐닝과 같은 기능을 포함하고 있습니다. GitHub은 배포를 위한 플랫폼을 포함하지 않기 때문에 Heroku와 같은 추가적인 어플리케이션의 도입을 고려해야 합니다. GitLab은 쿠버네티스를 활용하여 단일 어플리케이션의 원활한 배포 환경을 만들 수 있습니다.

GitHub Action 중심의 워크플로우 파일(yaml 파일)은 하나 이상의 이벤트에 의해 트리거됩니다. 각 워크플로우 파일에는 다음 내용이 포함됩니다.

  • 워크플로우 파일이 실행되어야 하는 시점을 결정하는 이벤트(push, Pull Request, manual action)
  • Job 또는 러너에서 실행되는 스크립트 세트
  • 특정 작업을 수행하는 Step 또는 명령/동작 모음
  • 작업의 실행할 위치를 정의하는 Runner

GitHub Action에는 변수, 조건, secret management, 아티팩트, 종속작업, 환경, 로그 및 파이프라인 시각화와 같은 CI/CD 기본 기능이 있습니다. GitHub은 최근에 사용자가 워크플로우를 재사용 가능하도록 표시하면 다른 워크플로우에서 해당 파일을 기본 워크플로우 파일의 일부로 참조할 수 있는 재사용 가능한 워크플로우(reuseable workflows)를 소개하였습니다. 이는 Action을 구성하는데 중복되는 것을 줄일 수 있습니다. 또한, 최근에 GitHub Action은 워크플로우에 대한 최소한의 액세스를 제공하면서 단기 토큰을 사용하여 클라우드 플랫폼과 GitHub 작업 간의 자격 증명 중복을 줄이는 보안 클라우드 배포(secured cloud deployments)를 소개했습니다.

GitHub vs GitLab Decision Kit

GitLab과 GitHub의 DevOps 솔루션 제품 간의 차이점을 확인해보세요. GitLab과 Github의 Business Decision Maker(BDM) 페이지를 검토하여 GitLab과 GitHub을 비교할 때 고려해야 하는 주요 사항들을 이해하세요. (InfoGrab의 관련 블로그 : GitLab CI/CD vs GitHub Action 비교하기)

다음은 각 주요 기능별 Decision Kit입니다.

CI/CD

DevSecOps

VCC(Version Control & Collaboration)

라이선스 및 기타

맺음말

많은 분들이 SCM으로 GitLab과 GitHub을 도입하는데 고민을 하실 텐데, 이번에는 각 이해관계자가 어떠한 기준으로 결정을 해야 하는지에 대한 소개를 하였습니다. 개인적으로 GitLab과 GitHub을 비교하는 블로그를 쓸 때마다 항상 새로운 것을 느낍니다. GitHub의 기능 또한 우수하지만, DevSecOps의 도입을 생각하시는 분들에는 과감히 GitLab을 추천해 드리겠습니다.

이번 블로그를 통하여 많은 분들이 GitLab과 GitHub을 도입하는 데 도움이 되셨으면 좋겠습니다. 우리나라가 모든 회사가 DevSecOps 문화가 정착되는 그날까지 저희 InfoGrab이 응원하고 지원해 드리겠습니다.