CI/CD란?

Eunjin·2023년 5월 18일
0

CI/CD란?

애플리케이션 개발 단계를 “자동화”하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법
지속적인 통합 / 서비스 제공 / 배포



CI(Continuous Integration)이란?

  • 지속적 통합
  • 소프트웨어 개발 프로세스에서 코드 변경 사항을 빈번하게 통합하고 테스트하여 품질을 유지하는 방법
  • 적용 시, SW팀은 코드 변경을 통합하는 일상적인 활동으로 전환하여 빠른 피드백을 받아 빠르게 결함을 수정 가능

CD이란?

  • 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미
  • 소프트웨어가 항상 배포 가능한 상태로 유지되도록 하는 프로세스
    - 지속적 제공 : 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 뜻함 → 최소한의 노력으로 새로운 코드를 배포하는 것을 목표
    - 지속적인 배포 : 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미


CI/CD를 어떻게 할까?

  • CI/CD 파이프라인에서 Docker와 젠킨스(Jenkins)를 함께 사용하는 것이 일반적 → 젠킨스에서 Docker를 사용하여 애플리케이션을 빌드하고 Docker 이미지를 생성하며, 이후에 Docker 이미지를 사용하여 애플리케이션을 배포하는 것이 일반적인 CI/CD 파이프라인 구성 방법
  • 젠킨스
    • CI/CD 파이프라인을 자동화하기 위한 지속적인 통합 도구
    • 소스 코드를 가져와 빌드, 테스트, 배포하는 자동화된 프로세스를 설정 가능
  • Docker
    • 애플리케이션을 컨테이너화하여 실행하는 기술
    • 애플리케이션 실행 환경을 쉽게 구성하고, 배포할 때 일관성을 유지
  1. 코드 버전 관리 시스템(Git 등)을 이용해 코드를 관리합니다.
  2. CI(Continuous Integration)를 수행합니다. CI는 코드가 변경될 때마다 자동으로 빌드 및 테스트를 수행하는 것입니다. CI 시스템은 빌드를 위해 필요한 의존성 패키지를 설치하고, 코드를 빌드하고, 테스트를 수행합니다. 이 과정에서 문제가 발생하면 알림을 보내고, 해당 코드 변경 사항을 거부합니다.
  3. CD(Continuous Delivery 또는 Continuous Deployment)를 수행합니다. CD는 CI에서 성공적으로 빌드된 코드를 실제 운영 환경에 배포하는 것입니다. CD는 배포 전 먼저 사전 테스트를 수행하여 문제가 없는지 확인합니다.
  4. 환경 관리를 수행합니다. 배포된 애플리케이션은 여러 환경에서 실행될 수 있습니다. 이러한 환경을 관리하기 위해, 다양한 구성 요소를 설정하고 구성합니다. 예를 들어, 데이터베이스 서버, 웹 서버, 프록시 서버, 캐시 서버 등을 관리합니다.
  5. 모니터링 및 로깅을 수행합니다. 배포된 애플리케이션의 상태를 모니터링하고, 로그를 수집하여 문제 발생 시 대응할 수 있도록 합니다.


[참고]
https://www.redhat.com/ko/topics/devops/what-is-ci-cd

0개의 댓글

관련 채용 정보