지난 블로그(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를 구축하는 것이 훌륭한 선택이라 생각이 듭니다.