2.2.2 CI 파이프라인 구성 요소

CI(Continuous Integration) 파이프라인은 코드의 품질을 유지하고 개발 프로세스를 자동화하기 위해 필수적인 요소들로 구성됩니다. 아래는 CI 파이프라인의 핵심 구성 요소와 각각의 역할에 대한 설명입니다.

소스 코드 저장소 (예: Git)

  • 역할: 개발자들이 작업하는 코드의 버전을 관리하고, 변경 사항을 추적하는 중앙 집중식 저장소입니다.
  • 예시: Git은 현재 가장 널리 사용되는 분산 버전 관리 시스템입니다. GitHub, Bitbucket, GitLab과 같은 서비스는 Git 저장소를 호스팅하고 추가적인 협업 기능을 제공합니다.
  • 중요성: 소스 코드 저장소는 개발자 간의 협업을 용이하게 하고, 코드의 변경 이력을 관리하는 데 중요한 역할을 합니다.

빌드 서버 (예: Jenkins, GitHub Actions, Travis CI)

  • 역할: 소스 코드를 가져와 실행 가능한 애플리케이션으로 빌드하는 자동화된 과정을 관리합니다.
  • 예시:
    • Jenkins는 자바 기반의 오픈 소스 자동화 서버로, 매우 유연한 설정과 풍부한 플러그인 생태계를 제공합니다.
    • GitHub Actions는 GitHub 내부에 통합된 CI/CD 도구로, 별도의 서비스 연동 없이 GitHub 저장소에서 직접 워크플로우를 구성할 수 있습니다.
    • Travis CI는 GitHub 프로젝트에 특화된 CI 서비스로, 간단한 설정만으로도 빠르게 CI 파이프라인을 구축할 수 있습니다.
  • 중요성: 빌드 서버는 코드 변경 사항이 빌드와 테스트를 자동으로 거쳐 통합되는 과정을 담당하여, 개발 프로세스의 자동화와 효율성을 대폭 향상시킵니다.

자동화 테스트 (단위 테스트, 통합 테스트)

  • 역할: 소프트웨어의 품질을 보장하기 위해 코드 변경 사항이 빌드 서버에서 자동으로 테스트되는 과정입니다.
  • 중요성: 자동화된 테스트는 버그를 조기에 발견하고 수정하여, 소프트웨어의 안정성을 보장하는 데 핵심적인 역할을 합니다. 단위 테스트는 개별 컴포넌트의 기능을 검증하고, 통합 테스트는 여러 컴포넌트 또는 시스템이 함께 작동하는지 확인합니다.

아티팩트 저장소 (예: Nexus, Artifactory)

  • 역할: 빌드 과정에서 생성된 아티팩트(실행 가능 파일, 라이브러리 등)를 저장하고 관리하는 저장소입니다.
  • 예시:
    • NexusArtifactory는 빌드 아티팩트, 개발에 필요한 의존성 파일 등을 중앙에서 관리할 수 있는 저장소 서비스를 제공합니다.
  • 중요성: 아티팩트 저장소는 빌드 아티팩트의 버전 관리, 공유 및 배포를 통합적으로 관리하여, 소프트웨어 배포 과정의 일관 및 효율성을 향상시키는 데 중요한 역할을 합니다. 안정적인 소프트웨어 배포와 롤백을 위해 필수적인 구성 요소입니다.

배포 자동화

  • 역할: 테스트를 통과한 코드를 자동으로 스테이징 또는 프로덕션 환경에 배포하는 과정입니다. 이 과정은 빌드와 테스트 단계를 성공적으로 완료한 후 실행됩니다.
  • 중요성: 배포 자동화는 개발 팀이 소프트웨어를 보다 신속하게 시장에 출시할 수 있도록 하며, 수동 배포 과정에서 발생할 수 있는 인적 오류를 줄여줍니다. 또한, 배포 과정의 일관성을 유지하고, 복잡한 배포 작업을 간소화할 수 있습니다.

CI 파이프라인 구성 요소 각각은 개발 워크플로우의 자동화와 최적화를 목표로 하며, 함께 작동하여 개발 팀이 효율적으로 고품질의 소프트웨어를 지속적으로 배포할 수 있게 합니다. 이러한 구성 요소들의 통합적인 관리와 활용은 소프트웨어 개발 및 배포 프로세스의 안정성과 신뢰성을 대폭 향상시키며, 최종적으로는 비즈니스 가치를 증대시키는 데 기여합니다.

source: DevOps/2.Continuous_Integration_(CI)/2.2.Building_CI_Pipelines/2.2.2.md