GitLab CI/CD vs GitHub Action 비교하기

지난 블로그(GitLab과 GitHub, 실무에서 어떤 차이가 있을까요?)에서 GitLab과 GitHub에 대해서 비교해 봤습니다. 결론적으로는 GitHub의 Git에 대한 노하우는 무시할 수 없지만, 서비스 혹은 전체 라이프사이클에 대한 여러 가지 비용적인 요소에서 GitLab이 우수하다는 것을 확인할 수 있었습니다. 이번 블로그에서는 DevOps 측면에서 GitLab CI/CD와 GitHub Action을 좀 더 면밀하게 살펴보겠습니다.

솔루션 기술 선택 문제
가장 먼저 여러분이 GitLab과 GitHub 중에 선택을 할 때, 기술적으로 어떠한 문제들을 고려해야 하는지 알아보겠습니다. 다음은 기술 의사 결정자(Technical Decision Maker) 문제들에 대한 GitLab과 GitHub의 비교입니다.
지원 여부를 💚 전부 지원 💔 지원 안함으로 표시합니다.
| TDM 문제 | DevOps 솔루션 | GitLab | GitHub |
|---|---|---|---|
| 빌드하고 코드를 테스트하는 시간을 줄이고 복잡성을 줄임 | 파이프라인 오케스트레이션 | 💚 Parent-Child 파이프라인이 동시에 작동합니다. 더 작은 하위 파이프라인으로 구성할 수 있습니다. | 💔 파이프라인 오케스트레이션이 없어 파이프라인 실행 시간이 길어집니다. |
| 코드 업데이트 오류 및 충돌올 제거 | 병합 오케스트레이션 | 💚 Advanced Merge Train 처리 로직은 기본 개발 브랜치를 초록불로 유지합니다. | 💔 Advanced Merge Train 처리 로직이 없어 더 많은 코드 커밋 충돌이 발생합니다. |
| 초기 구성 시간과 러닝 커브를 줄임 | 미리 구성된 파이프라인 | 💚 Auto DevOps는 즉시 사용 가능한 파이프라인 구성을 제공합니다. | 💔 사전 구성된 파이프라인이 없어 파이프라인 설정 시간이 길어집니다. |
GitHub에서 누락된 GitLab CI 기능
다음은 GitHub에는 없지만 GitLab에서 제공하는 CI 기능목록입니다.
| GitLab 기능 | 기능 소개 |
|---|---|
| Built-in CI | 플러그인 혹은 third party 구성 요소가 없습니다 |
| 새로운 팀원을 위한 DevOps 프로세스 단순화 | Auto DevOps는 코드를 인식하고 자동으로 DevOps 템플릿을 설정합니다. |
| 병합 전에 앱 리뷰를 통한 결함 감사 및 개발 시간 단축 | 리뷰앱으로 변경을 미리 확인합니다. 리뷰앱을 위한 배포환경 자동 종료 기능이 포함됩니다. |
| 크고 복잡한 프로젝트와 팀 모델링 및 관리 | 큰 규모의 프로젝트를 관리하기 위한 그룹 내의 하위 그룹, 그룹 파일 템플릿(표준화를 위한 그룹 수준의 템플릿), 그룹을 쉽게 찾을 수 있는 탐색 기능을 제공합니다. |
GitHub Action의 문제점
2021년 5월 18일 기준으로 GitHub Action Community Forum에 등록된 이슈들입니다. 해당 이슈가 해결되었을 수 있습니다.
다음은 GitHub Action을 사용하는데 발생되는 문제들입니다. 아래의 문제점들은 운영 비용 혹은 배포 시간을 증가시키거나 보안 측면에서 리스크를 발생합니다.
지속적인 통합(CI)
다음 문제들은 운영 비용을 증가시킵니다.
지속적인 전달(CD)
다음 문제들은 배포되는 시간을 늘립니다.
- 워크 플로우에서 단일 작업만 다시 실행할 수 없습니다.(링크)
다음 문제들은 운영 비용을 증가시킵니다.
- 스테이징 및 프로덕션 환경에 대해 서로 다른 워크플로우를 쉽게 트리거할 수 없습니다.(링크)
- 저장소의 GITHUB_TOKEN을 사용하여 다른 워크 플로에서 새 워크플로우를 트리거할 수 없습니다.(링크)
- YAML 앵커 및 별칭에 대한 지원 부족(링크)
엔터프라이즈 준비
다음 문제들은 리스크를 증가시킵니다.
- 포크된 것들의 빌드에서 보안정보를 사용할 수 있습니다.(링크)
GitLab CI의 규정 준수에 대한 차별점
| GitLab 기능 | 기능 소개 |
|---|---|
| PCI 규정 준수 | GitLab은 PCI 준수를 원하는 기업의 핵심 요소인 애플리케이션 보안을 해결합니다. |
| HIPAA | 위험과 취약성을 식별 및 관리하고, 개발 표준 및 프로세스를 정의하고 시행합니다. |
| GDPR | 멤버십 잠금, 서명되지 않은 커밋 거부, 사용자 권한, 푸시 규칙 등 민감한 파일이 실수로 프로덕션으로 푸시되는 것을 방지합니다. |
GitLab vs GitHub Action 요약
다음은 CI/CD 기능에 대한 비교 요약입니다.

맺음말
지금까지 GitLab과 GitHub Action의 CI/CD 기능에 대해서 비교해 보았습니다. 아무래도 사심이 들어가 GitLab을 중심으로 너무 편파적이게 비교하지 않았나 생각이 듭니다. 물론 GitHub Action이 CI/CD 기능에 대해서는 후발 주자이고 GitHub 자체도 GitLab과는 다르게 좀 더 소스코드 관리 관점에 집중되어 있다 보니 이런 차이가 발생합니다. 하지만, GitHub Action은 GitLab에 비해 기능이 적기 때문에 가볍게 PoC를 해보기에 좋고 개인 프로젝트를 진행하는 데에도 크게 무리는 없습니다.
다만, 회사에서 사람들과의 협업 관점에서 접근한다면, GitLab을 통해 DevOps를 구축하는 것이 훌륭한 선택이라 생각이 듭니다.
사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.
DevOps 도입이 필요하신가요?
인포그랩 전문가가 맞춤 을 도와드립니다.
관련 글

돌아온 GitLab vs GitHub, GitLab과 GitHub을 비교해보자(decision Kit)
오랜만에 돌아온 GitLab과 GitHub 비교하기 시리즈입니다. 이번에 소개할 내용은 GitLab과 GitHub을 선택하는 기준이 될 Descision Kit입니다.
2021년 12월 22일

GitLab.com에서의 암호화폐 채굴 어뷰징을 막는 방법
올해 굉장히 바쁜 시간을 보내다 보니, 정말 오랜만에 블로그 포스팅을 하게 되었습니다. 이번 블로그 주제는 SaaS 버전 GitLab.com에서 2021년 5월 중순부터 시행된 CI 파이프라인 정책입니다. 이 정책은 가상화폐와 관련된 내용입니다. 어떠한 일이 있었고, GitLab은 이를 어떻게 해결했으며, GitLab 사용자에게 어떤 변화가 있는지 알아봅시다.
2021년 11월 23일

COVID-19(코로나) 시대에서 원격 근무로 살아남기
COVID-19(코로나)라는 국제적인 이슈가 발생한 지 오랜 시간이 지났습니다. 그로 인해 우리 주위에 근무환경도 많이 변했는데요, 특히 원격 근무에 대한 선호도가 눈에 띄게 증가했습니다. 이전에 원격 근무를 반대했던 기업들도 원격 근무를 도입하는 것에 대한 고민을 시작했습니다. 그렇다면 원격 근무를 잘하는 방법은 무엇이 있고, 어떠한 요건들이 충족되어야 하는지 알아봅시다.
2021년 9월 23일