GitLab과 JFrog, 어떤것을 선택해야 할까요?

Mus Jung
Mus Jung | DevOps Engineer

Full 라이프사이클 단일 애플리케이션 GitLab과 2019년 2월 Shippable 인수를 통해 아티팩트 저장소에서 CI/CD 기능을 포함하는 DevOps 플랫폼으로 전환한 JFrog, 어떤 것이 더 좋은지 알아봅시다.

GitLab? JFrog?

DevOps를 시작하시는 분들이라면 한번쯤은 어떤 툴을 사용해야 할까 고민해보셨을 겁니다. 그중에서 이번 블로그 포스트에서는 GitLab과 JFrog를 비교해 볼텐데요, Full 라이프사이클 커버하는 GitLab과 2019년 2월 Shippable 인수를 통해 아티팩트 저장소에서 CI및 CI 기능을 포함하는 DevOps 플랫폼으로 전환한 JFrog, 어떤것이 더 좋은지 알아봅시다.

기능 비교

그림에서 보시다시피 GitLab모든 라이프사이클을 커버하는 모양을 보여줍니다. 반면, JFrog의 경우 특정 영역에서의 기능만 지원하는데요, JFrog하면 Artifactory가 떠오르는 것처럼 Artifactory의 주요 기능 영역인 Package 주변 영역의 기능 커버합니다.

JFrog 제품 기준 GitLab과 유사한 기능을 먼저 살펴보도록 하겠습니다. JFrog Artifactory는 GitLab의 Package 영역을 커버하는 제품입니다. Maven, Debian, NPM, Helm, Ruby, Python 및 Docker와 같은 다양한 패키지 형식을 지원합니다. Artifactory는 또한 아티팩트를 만드는 데 사용된 모든 구성 요소의 전체 맵을 저장합니다.

JFrog Pipleines는 CI/CD 영역을 커버합니다. GitLab과 같이 YMAL파일을 통하여 읽고 쓰기 쉽게 구성할 수 있습니다. 하지만 Git을 기반으로 한 GitLab과는 다르게 여러 사람이 협업하기에는 어렵습니다. 또한 Auto DevOps와 같은 엔터프라이즈급 기능이 부족합니다. 그밖에 GitLab에서 Merge Request, Review App, 테스트 및 보안 통합 등의 기능이 JFrog Pipelines에서는 빠져있습니다.

JFrog X-Ray는 Artifactory가 커버하는 영역 주변에 Verify, Secure 등의 영역을 커버합니다. JFrox Xray는 VulnDB 데이터베이스 취약성에 대해 애플리케이션 구성 요소를 스캔하여 정적 애플리케이션 테스트 기능을 제공합니다. 기본적인 UI는 IDE에 통합되어 사용하기 때문에 UI를 왔다 갔다 해야 하는 불편함이 있습니다. 정적 애플리케이션 테스트 기능을 제공하기 때문에 DAST의 기능은 지원하지 않고, 코드 내 secrets detection을 지원하지 않습니다. GitLab에서는 DAST, secrets detection을 지원하고 있습니다.

어느 상황에 GitLab을 사용해야 할까요?

GitLab은 전체 라이프사이클을 커버합니다. 즉, 다른 도구들을 도입하여 툴체인을 만들 필요 없이 GitLab 단일로 프로젝트를 운영할 수 있습니다. JFrog의 경우 관리영역의 기능은 약하기 때문에 Atlassian 제품이나 ALM 도구들을 추가로 도입하셔야 합니다. 이는 관리 포인트가 늘어나는 일이며 비용적인 부분도 고려하셔야 합니다. 반대로 GitLab을 사용하시면 이러한 부분의 고민을 줄일 수 있습니다. 또한, GitLab은 프로젝트 구성원들의 협업 공간이 될 수 있습니다. 모든 활동 내역들은 GitLab의 issue, merge request 등의 공간에 남게 되며, 이를 통해 구성원들은 Agile 문화를 자연스럽게 DevOps로 녹여낼 수 있게 됩니다. 모니터링 또한 JFrog에 비해서 강력합니다. Roadmap, Burn-down chart, Issue Board 기능을 통하여 프로젝트를 관리를 용이하게 할 수 있습니다.

결론적으로, 여러 툴채인을 도입하여 관리하는데 에너지를 줄이고 보다 프로젝트를 강력하게 관리하고 싶으시다면 GitLab은 매우 좋은 옵션이 될 수 있습니다.

어느 상황에 JFrog를 사용해야 할까요?

JFrog의 경우는 강력한 Artifactory 기능을 중심으로 DevOps를 구성할 수 있습니다. 프로젝트 관리측면보다 애플리케이션의 릴리즈 버전을 강력하게 관리하고 재활용해야 하는 프로젝트에서는 JFrog DevOps 플랫폼이 도입하기 적당합니다. 릴리즈에 대한 니즈가 강한 프로젝트일 경우 JFrog 제품군은 부담이 되지 않게 선택할 수 있습니다. 추후에 다른 영역에 니즈가 생겨 다른 도구를 도입하는 것을 고려하신다면, 처음부터 GitLab을 도입하는 것보단 JFrog를 도입하여 선택과 집중을 하는 것도 좋은 방법입니다.

어떠신가요? GitLab과 JFrog, JFrog와 GitLab, 여러분들은 어떠한 방법으로 DevOps를 구축하는 게 현실적으로 와닿으시나요?

DevOps는 도구가 아닌 문화이고 도구의 선택은 여러분들 몫입니다.

Insight GitLab vs JFrog 가이드 바로가기