오랜만에 돌아온 GitLab과 GitHub 비교하기 시리즈입니다. 이번에 소개할 내용은 GitLab과 GitHub을 선택하는 기준이 될 Decision Kit입니다.
![photo | 인포그랩 GitLab | 인포그랩 GitLab](https://cdn.infograb.io/insight_prod/image/blog/2021-12-22-gitlab-vs-github-decision-kit.png)
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
- GitLab CI vs GitHub Actions : CI(Continuous Integration) 기능 비교, 차이와 GitHub Action의 도전과제
- GitLab vs GitHub for Continuous Delivery : CD(Continuous Delivery) 기능 비교, 차이와 GitHub Action의 도전과제
- CI/CD 로드맵 비교 : CI/CD 기능을 비교하고 GitHub의 로드맵에 아직 반영되지 않은 GitLab의 기능을 확인