보통 CI/CD(지속적 통합/지속적 배포)라고 하면, 많은 사람들이 함께 개발하는 대규모 프로젝트에서 사용한다는 느낌이 인식이 강한데요.
하지만 소규모 프로젝트나 사이드 프로젝트를 개발하더라도 CI/CD를 도입하면 배포 과정에서 발생할 수 있는 휴먼 에러를 줄이고 안정적인 개발 및 운영이 가능하다는 사실, 알고 계셨나요?
프로젝트 성격에 따라 빌드 테스트부터 유닛 테스트, 배포 작업까지 자동화할 수 있기 때문에, 안정적인 프로젝트 진행을 원한다면 개발 초기에 CI/CD 도입을 고려하는 것이 좋습니다.
물론 CI/CD 툴이 워낙 다양하다보니 규모가 크지 않은 프로젝트에서 사용할 CI/CD 툴을 고르기란 쉽지 않습니다.
소규모 프로젝트 진행에 무엇보다 중요한 것이 예산인 만큼, 무료로 사용 가능한 툴을 중점적으로 보면 좋겠죠?
그래서 이번 글에서는 1인 개발 및 사이드 프로젝트에 적합한 무료 CI/CD 툴인 GitHub Actions, GitLab Runner, Jenkins를 비교해보고, 각각의 특징과 장점을 살펴보겠습니다.
♾️접근성이 뛰어난 GitHub Actions
GitHub Actions는 GitHub 플랫폼 내에서 바로 사용할 수 있는 CI/CD 툴입니다.
GitHub는 전 세계 수많은 개발자들이 소스코드를 관리하고 협업하는 플랫폼으로, 이미 많은 개발자들이 사용하고 있는데요.
이런 GitHub에서 서비스하고 있는 GitHub Actions은 클라우드 환경에서 제공되기 때문에, 별도의 서버 없이 GitHub 레파지토리 내에서 CI/CD 파이프라인을 구성할 수 있습니다. 그래서 설정과 유지 관리가 간편하죠.
또한 GitHub의 다양한 API와 커뮤니티에서 개발된 다양한 플러그인(액션)을 활용해 빠르게 파이프라인을 구축할 수 있는데요.
(GitHub Actions는 GitHub 레파지토리 페이지에서 바로 활용 가능해 접근성이 뛰어납니다.)
GitHub Actions은 기본적으로 공개 레파지토리(Public Repository)에 대해서는 제한 없이 무료로 사용 가능합니다.
다만, 비공개 레파지토리(Private Repository)에 대해서는 아래 제한 범위 내에서 무료로 사용할 수 있습니다.
- GitHub Actions이 사용 가능한 스토리지 최대 500MB까지 제공
- 매월 최대 2,000분까지 사용 가능
🦊좀 더 안정적인 DevOps 플랫폼을 활용하고 싶다면, GitLab Runner
GitLab Runner는 GitLab에서 제공하는 CI/CD 도구로, 클라우드 및 설치형 두 가지 방식으로 사용할 수 있습니다.
GitLab은 클라우드 기반으로 제공되거나, 자체 서버에 설치할 수 있는 오픈소스 DevOps 플랫폼인데요. 코드 관리부터 CI/CD까지 통합된 솔루션을 제공하는 툴입니다.
GitLab Runner는 GitLab의 파이프라인을 실행하는 에이전트로, GitLab의 클라우드 서비스를 이용하면 별도의 서버 없이도 CI/CD를 수행할 수 있습니다.
(GitLab은 CI/CD를 포함해 다양한 DevOps 활동을 지원하는 플랫폼입니다.)
다만, 클라우드로 제공되는 GitLab Runner 역시 매월 최대 400분 무료 사용 가능이라는 제한이 존재하는데요.
만약 GitLab의 오픈소스(Community Edition) 버전을 별도의 자체 서버에 설치하면 제한 없이 무료로 CI/CD 실행이 가능합니다.
하지만 초기 설정에 시간이 걸리고 서버 리소스가 지속적으로 소모되기 때문에 쉽게 접근할 수 있는 방법은 아닙니다.
🤵이미 대표적인 CI/CD 툴로 유명한 Jenkins
Jenkins는 가장 널리 사용되는 오픈소스 CI/CD 도구 중 하나로, 별도의 서버에 설치하여 사용하는 방식입니다.
Jenkins는 오랜 기간 동안 오픈소스 프로젝트로서 개발되었기 때문에 다양한 플러그인을 통해 거의 모든 CI/CD 요구 사항을 지원하며, 커스터마이징이 자유롭습니다.
(CI/CD에 대해 관심 있으신 분들은 한 번쯤 보셨을 Jenkins의 파이프라인 페이지 화면입니다.)
오픈소스이기 때문에 비용 부담이 없다는 장점도 있는데요. 다만 GitLab의 CE 버전을 설치하는 경우와 마찬가지로, 자체 서버 구축 및 유지 관리가 필요합니다.
결론
지금까지 살펴본 3가지 CI/CD 툴을 제공 방식, 비용, 도입 용이성 측면에서 비교해보면 아래와 같습니다.
-
GitHub Actions:
- 제공 방식: GitHub 플랫폼 내에서 바로 제공
- 비용: 공개 리포지토리는 무제한, 비공개 리포지토리는 무료 할당량(월 2,000분) 내에서 무료
- 도입 용이성: 별도의 서버 없이 즉시 사용 가능하여 소규모 프로젝트에 적합
-
GitLab Runner:
- 제공 방식: GitLab의 클라우드 서비스와 자체 서버 설치형 두 가지 옵션 제공
- 비용: 클라우드 서비스는 Free 플랜으로 월 400분 제공, 무제한 사용을 원하면 자체 서버에 설치 필요
- 도입 용이성: 클라우드 서비스는 도입이 비교적 간편하지만, 자체 서버 설치 시 초기 설정 및 유지 관리 필요
-
Jenkins:
- 제공 방식: 별도의 서버에 설치
- 비용: 오픈소스로 무료지만, 자체 서버 구축 및 유지에 추가 비용 발생
- 도입 용이성: 자유도가 높으나, 초기 설정 및 유지 관리에 리소스가 필요
지금까지 비교한 결과를 보면, 만약 별도의 서버 없이 빠르게 CI/CD를 도입하고자 한다면 GitHub Actions가 가장 적합한 선택임을 알 수 있습니다.
공개 레파지토리에서는 CI/CD를 제한 없이 무료로 사용 가능하며, 비공개 레파지토리라고 하더라도 월 2,000분이라는 가장 많은 사용량을 제공하기 때문인데요.
게다가 GitHub은 이미 수많은 개발 프로젝트가 저장되는 곳이기 때문에 접근성도 우수합니다.
만약 자체 서버를 운영할 수 있고, 더 유연한 커스터마이징이 필요하다면 GitLab Runner나 Jenkins를 고려할 수 있습니다.
단, 이 경우에는 초기 설정 및 유지 관리에 들어가는 리소스를 고려해야 할 것입니다.