CI/CD 개념과 도구(Jenkins VS GitHub Actions)

devyumi·2025년 2월 13일

CICD

목록 보기
3/3

DevOps


  • DevOps란 개발(Development)과 운영(Operations)을 통합하는 방법론으로 소프트웨어 개발과 운영을 하나의 프로세스로 결합하여 빠른 개발배포, 품질 향상을 목표로 한다.

특징


1) 자동화: 개발, 빌드, 테스트, 배포 과정을 자동화하여 신속하고 안정적으로 서비스를 배포한다.

2) CI: 개발자의 코드 변경 사항을 지속적으로 병합하고 테스트한다.

3) CD: 변경된 코드가 자동으로 운영 환경에 배포될 수 있도록 지원한다.

4) 모니터링: 실시간 모니터링을 통해 서비스 성능 및 이슈를 빠르게 감지한다.

CI/CD 파이프라인


  • 애플리케이션 코드를 자동으로 빌드, 테스트, 배포하는 과정을 거쳐 소프트웨어 개발을 추진하는 프로세스이며, 보통 줄여서 CI/CD라고 한다.

  • DevOps 이론에서 개발 이후의 과정을 뜻한다고 보면 된다.

  • 업무를 자동화함으로써 얻는 장점은 다음과 같다.
    1) 인적 오류 최소화

    2) 업데이트 처리 및 릴리즈 시간 단축

    3) 생산성 향상


CI (Continuous Integration)


  • CI란 지속적인 통합을 의미하며, 개발자가 코드 변경 사항을 지속적으로 공유 리포지토리에 병합하는 것을 뜻한다.

  • 개발자가 코드를 Push하면 CI/CD 도구가 자동으로 코드를 빌드하고 테스트를 수행하며, 빌드 성공 시 실행 가능한 패키지(Artifact)를 생성한다.

  • 개발자는 최대한 소규모 기능 단위로 Commit을 수행함으로써 충돌을 방지하고, 코드 품질을 유지할 수 있다.

CD (Continuous Devlivery & Deployment)


  • CD란 지속적인 제공과 배포를 의미하며, CI 이후의 프로세스를 뜻한다.

  • 지속적인 제공개발자가 수동으로 승인하여 운영 환경에 배포하는 것, 지속적인 배포수동 승인 없이 운영 환경까지 자동 배포하는 것이다.

  • 여기서 지속적인 제공이 수동 승인이라고 해서 수동 배포라고 생각하면 안된다. 지속적인 제공도 운영 배포 직전까지 모든 과정을 자동화하는 것이 핵심이며, 최종 배포만 수동 승인이 필요한 것이다!

  • 따라서 CI/CD 도구 없이 모든 작업을 수동으로 한다면 단순한 수동 배포일 뿐 CD라고 보기 어렵다.

지속적인 제공지속적인 배포
배포
방법
CI를 통과한 코드가 테스트 환경에 배포된 후,
수동 승인으로 운영 환경에 배포됨
(=수동 릴리즈)
CI를 통과한 코드가 자동으로 운영 환경에 배포됨
(=자동 릴리즈)
배포
속도
최종 승인이 필요하기 때문에 상대적으로 느림코드가 자동 배포되므로 빠름
예시대기업, 금융권 등스타트업, B2C 등

CI/CD 도구 비교


JenkinsGitHub Actions
특징오픈소스 CI/CD 도구GitHub에서 제공하는 CI/CD 도구
설치별도 서버 구축 필요 (클라우드 등)GitHub 기본 제공으로 서버 설치 불필요
설정declarative 혹은 scripted 파이프라인 구현YAML 기반 설정
비용자체 서버 운영 시 무료Free Tier 내에서 무료
보안자체 보안 설정 필요GitHub 보안 기능 제공
운영 환경복잡한 CI/CD 구축
혹은 멀티 클라우드 환경
GitHub 저장소 기반 빠른 CI/CD 구축
혹은 서버 운영 없는 간단한 자동화

Jenkins 장단점


장점

  • 다양한 플러그인을 제공하여 확장성 높음

  • 오랜 기간 사용되어 커뮤니티 활발함 (오류 해결하기 유용하다.)

  • AWS 등 멀티 클라우드에서 사용 가능

단점

  • 서버 구축 및 파이프라인 설정이 필요하여 초보자 접근이 힘듦

  • UI가 직관적이지 않음

GitHub Actions 장단점


장점

  • GitHub와 연동

  • 별도 설치 필요 없음

  • YAML 파일로 설정 간단 (properties 대신 yml을 사용하는 이유가 있었다.)

  • 보안 기능 내장

단점

  • Jenkins에 비해 플러그인이 상대적으로 적음

  • Free Tier를 초과하면 비용 발생

  • GitHub에 의존적임

참고

profile
Back-end Junior Developer 공부하는 개발자

0개의 댓글