지난 블로그(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 앵커 및 별칭에 대한 지원 부족(링크)
엔터프라이즈 준비
다음 문제들은 리스크를 증가시킵니다.
- 포크된 것들의 빌드에서 보안정보를 사용할 수 있습니다.(링크)