[TIL] CI/CD

Soeng_dev·2024년 12월 2일

CI/CD 툴 비교

Jenkins

특징

  • 오픈소스, 유연한 플러그인 생태계(1,800개 이상).
  • 다양한 언어와 플랫폼 지원.
  • 커스터마이징 및 자동화 강점.

장점

  • 무료 사용 가능, 커뮤니티 지원이 풍부.
  • 복잡한 워크플로도 구현 가능.

단점

  • 설치 및 유지보수 복잡.
  • UI가 다소 구식.

GitHub Actions

특징

  • GitHub와 통합된 CI/CD 서비스.
  • YAML 기반 설정 파일로 파이프라인 정의.

장점

  • GitHub 생태계와 원활한 통합.
  • Marketplace에서 다양한 플러그인 제공.

단점

  • 대규모 프로젝트에서는 비용 증가 가능.

GitLab CI/CD

특징

  • GitLab과 완전 통합된 CI/CD 도구.
  • YAML 설정 파일 사용.

장점

  • 완전한 DevOps 솔루션 제공(버전 관리부터 배포까지).
  • 무료 플랜에서도 강력한 기능 제공.

단점

  • Jenkins보다 플러그인 생태계는 제한적.

CircleCI

특징

  • 클라우드 기반 CI/CD 도구, YAML 기반 구성.
  • Docker 컨테이너를 중심으로 설계.

장점

  • 빠른 빌드 속도.
  • 뛰어난 컨테이너화 및 캐싱 기능.

단점

  • 클라우드 사용료가 비쌀 수 있음.
  • 무료 플랜 제한.

Azure DevOps

특징

  • Microsoft의 DevOps 도구 모음.
  • Azure 및 기타 Microsoft 생태계와 잘 통합.

장점

  • 엔터프라이즈급 기능.
  • YAML 및 GUI 기반 구성 제공.

단점

  • MS 제품과의 종속성 증가 가능.

AWS CodePipeline

특징

  • AWS와 긴밀히 통합된 CI/CD 도구.

장점

  • AWS 클라우드 인프라와 통합.
  • 확장성과 안정성.

단점

  • AWS 외부 환경에 대한 의존성이 낮음.
  • 비용 최적화 필요.

TeamCity

특징

  • JetBrains에서 제공하는 CI/CD 솔루션.
  • 풍부한 언어 및 기술 지원.

장점

  • 강력한 테스트 및 리포트 기능.
  • IntelliJ와 통합에 최적화.

단점

  • 무료 플랜 제한(사용자 및 빌드 설정).

요약

도구장점단점추천 상황
Jenkins유연하고 커스터마이징 가능유지보수 어려움대규모 프로젝트, 복잡한 파이프라인
GitHub ActionsGitHub 통합, 쉬운 설정비용 증가 가능GitHub 중심 프로젝트
GitLab CI/CD올인원 솔루션플러그인 부족GitLab 사용 팀
CircleCI빠른 빌드, Docker 최적화클라우드 비용컨테이너 기반 프로젝트
Azure DevOps엔터프라이즈급 통합MS 종속성Azure 사용자
AWS CodePipelineAWS 클라우드와 최적화AWS 외부 통합 약함AWS 생태계 프로젝트
TeamCity강력한 테스트 및 IntelliJ 통합높은 비용JetBrains 제품 사용자

github action vs gitlab ci/cd

Github action, Gitlab ci/cd에서 빌드는 각각 github/gitlab의 자체 제공 서버자원에서 함

GitHub Actions

장점

  • GitHub 통합:
    • GitHub 리포지토리와 완벽하게 통합되어 별도의 CI/CD 도구를 추가적으로 설치하거나 연동할 필요가 없음
  • Marketplace 활용:
    • 다양한 액션(Action)이 준비되어 있어, 복잡한 파이프라인도 간단하게 설정 가능
    • 예: 테스트, 빌드, 배포 등.
  • 문서화와 예제:
    • GitHub 공식 문서와 커뮤니티에서 제공하는 YAML 템플릿이 풍부합니다.
  • 유연한 설정:
    • 각 Workflow를 독립적으로 작성 가능하여, 필요에 따라 설정을 나누기 쉬움

단점

  • 복잡한 Workflow:
    • 파이프라인이 복잡해질수록 YAML 설정 파일이 길어지고 가독성이 떨어짐
  • 비용 문제:
    • 사용량 기반 과금 정책으로, 대규모 프로젝트에서는 비용이 증가
  • 초기 학습 곡선:
    • 처음 사용 시 Actions의 작동 방식이나 문법에 익숙해지는 데 시간이 걸림

GitLab CI/CD

장점

  • GitLab과 통합:
    • GitLab 리포지토리와 기본적으로 통합되어 추가 설정 없이 바로 사용
  • YAML 간결성:
    • .gitlab-ci.yml 파일 하나로 전체 파이프라인 설정 가능.
    • 직관적이고 이해하기 쉬운 기본 설정 제공.
  • 무료 플랜 기능:
    • GitLab은 무료 플랜에서도 강력한 CI/CD 기능(예: 병렬 작업, 캐싱)을 제공
  • 내장 Runner:
    • GitLab은 자체 Runner를 제공하며, 이를 통해 직접 인프라를 구성하지 않아도 됨

단점

  • 플러그인 생태계 제한:
    • GitHub Actions처럼 외부 플러그인 지원이 풍부하지 않습니다.
  • 성능:
    • 대규모 워크로드에서는 빌드 속도가 느려질 수 있으며, 캐싱이 완벽하지 않을 수 있음
  • 유연성 제한:
    • GitLab 환경에 맞춰 설계된 기능이 많아, GitHub에 비해 외부 연동에서 제약이 있을 수 있음

비교

기준GitHub ActionsGitLab CI/CD
설정 난이도초기에는 생소할 수 있지만, 템플릿 활용 시 쉬움YAML 파일 작성이 직관적이고 간단함
문서 및 커뮤니티문서와 예제가 풍부하며, Marketplace가 유용GitLab Docs가 체계적이나 예제는 상대적으로 적음
무료 플랜 기능사용량 제한 있음병렬 작업 등 기본 제공
플러그인 생태계Actions로 다양한 플러그인 지원생태계는 다소 제한적
러닝 커브Actions 개념에 익숙해지면 간단비교적 평탄, 기본 기능 사용이 쉬움
비용 효율성대규모 사용 시 비용 증가 가능무료로도 충분히 강력하게 사용 가능
profile
Software Engineer

0개의 댓글