티스토리 뷰

development

CI/CD 용어 정리 - ChatGPT

주먹불끈 2023. 12. 25. 00:11

generated by ChatGPT

개요

CI/CD에서 D가 Delivery, Deployment로 쓰일 수 있다는 것을 알게되어 좀더 명확히 정리하고 싶어 ChatGPT의 힘을 빌어 정리해보았다.

Continuous Integration (CI)

ChatGPT가 다음과 같이 잘 정리해주었다. 여러 명의 개발자들이 동시에 코드를 구현하고 통합하는 것이며, 그 과정에서 문제가 없도록 자동으로 빌드하고 테스트를 해주는 것이다.

  • CI는 개발자들이 코드 변경 사항을 주기적으로 공유된 저장소에 통합하는 것을 말합니다.
  • 이 과정은 코드 통합에 따른 문제를 조기에 발견하고 해결할 수 있게 해줍니다.
  • CI 과정에는 코드의 자동 빌드 및 테스트가 포함됩니다.

Distribution

CD에서 사용되는 Delivery와 Deployment와는 별개로 Distribution의 개념부터 정리해보자. 배포에 필요한 준비를 하는 것으로 보면 되겠다. 다음은 ChatGPT의 정리이다.

"Distribution"은 소프트웨어 개발 과정에서 주로 두 가지 의미로 사용됩니다:

  1. 소프트웨어 패키징 및 배포 준비:
    • 이 의미에서의 Distribution은 소프트웨어가 최종 사용자나 고객에게 배포될 수 있도록 준비하는 과정입니다.
    • 여기에는 소프트웨어를 패키징하고, 필요한 종속성을 포함시키며, 배포 가능한 형태로 만드는 작업이 포함됩니다.
    • 예를 들어, Windows용 실행 파일, Linux용 패키지, 또는 클라우드 서비스를 위한 컨테이너 이미지를 생성하는 것이 여기에 해당합니다.
  2. 소프트웨어 버전 관리 및 배포:
    • 이 경우, Distribution은 소프트웨어의 다양한 버전이 어떻게 관리되고 배포되는지를 의미합니다.
    • 소프트웨어의 새 버전을 생성하고, 이를 사용자가 접근할 수 있는 서버나 저장소에 업로드하는 과정을 포함합니다.
    • 이는 종종 소프트웨어 업데이트 메커니즘을 통해 진행되며, 사용자는 이를 통해 최신 버전의 소프트웨어를 다운로드 및 설치할 수 있습니다.

이렇게 보면, "Distribution"은 소프트웨어를 최종 사용자에게 배포할 수 있는 형태로 만드는 과정을 포함하며, 이는 종종 소프트웨어의 패키징, 종속성 관리, 버전 관리 및 업데이트 메커니즘에 관련된 작업을 포함합니다. 이 과정은 CI/CD 파이프라인의 일부로 자동화될 수 있으며, 효율적인 소프트웨어 배포와 관리에 핵심적인 역할을 합니다.

Continuous Delivery(CD)

TL;DR: Continuous Deployment = Continuous Delivery + 실제 배포를 자동으로 하기

실제 배포직전까지의 모든 준비를 마치는 것을 Continuous Delivery라 한다.

  • Delivery는 개발된 소프트웨어를 프로덕션 환경에 배포할 준비가 완료된 상태를 의미합니다.
  • 이 과정은 소프트웨어를 언제든지 신뢰성 있게 프로덕션 환경에 배포할 수 있도록 합니다.
  • Continuous Delivery는 배포 준비 과정을 자동화하며, 실제 배포는 수동으로 진행될 수 있습니다.

Continuous Deployment(CD)

  • Deployment는 소프트웨어가 자동으로 프로덕션 환경에 배포되는 것을 의미합니다.
  • Continuous Deployment에서는 모든 변경 사항이 자동 테스트를 거쳐 바로 프로덕션에 적용됩니다.
  • 이는 Continuous Delivery의 한 단계 더 진화된 형태로, 배포 과정에 인간의 개입이 없습니다.

예시. 쿠버네티스의 경우

위 정리를 실제 프로덕션 환경이 쿠버네티스라 가정하고 예를 들어달라고 ChatGPT에 물어보았다.

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 배포, 관리, 확장하기 위한 오픈 소스 시스템으로, 프로덕션 환경에서 매우 유용합니다. CI/CD 과정에서 "Delivery", "Deployment"를 쿠버네티스 환경에 적용하는 예를 들어보겠습니다:

  1. Continuous Integration (CI): (정현석) 코드를 통합, 빌드하고, 테스트하고, 컨테이너 레지스트리까지 올리는 과정이다. 컨테이너 이미지를 만들고 접근가능하게 하는 것은 클라우드 네이티브의 기본이자 핵심이다. 
    1. 개발자들이 코드 변경사항을 Git 리포지토리 같은 공유 저장소에 통합합니다.
    2. 코드 통합 후, 자동화된 테스트를 실행하여 변경사항이 안정적임을 검증합니다.
    3. CI 시스템은 또한 새로운 코드 변경사항을 기반으로 Docker 이미지를 빌드하고, 이를 컨테이너 레지스트리(예: Docker Hub, Google Container Registry)에 푸시할 수 있습니다.
  2. Continuous Delivery: (정현석) 쿠버네티스가 컨테이너 이미지들과 설정을 기반으로 다양한 지시, 선언에 따라 서비스를 구성하도록 해두는 것이라고 말할 수 있겠다. 
    • Continuous Delivery에서는 쿠버네티스 클러스터에 배포할 준비를 마칩니다.
    • 이 단계에서는 쿠버네티스 매니페스트 파일(예: YAML 파일)을 사용하여 어떻게 애플리케이션이 배포될지 정의합니다.
    • 이 매니페스트는 프로덕션 환경에 적용될 준비가 된 상태로, 필요에 따라 수동으로 적용하거나 자동화 도구를 통해 적용할 수 있습니다.
  3. Continuous Deployment: (정현석) Continuous Delivery에 대하여 실제 배포에 대한 부분까지 챙기는 것이다.
    • Continuous Deployment에서는 새로운 변경사항이 자동으로 프로덕션 환경의 쿠버네티스 클러스터에 배포됩니다.
    • 이를 위해 CI/CD 도구(예: Jenkins, GitLab CI/CD, Argo CD)가 사용되며, 이들은 새로운 Docker 이미지가 레지스트리에 푸시될 때 자동으로 쿠버네티스 클러스터에 배포를 진행합니다.
    • 애플리케이션 업데이트는 쿠버네티스의 롤링 업데이트, 블루/그린 배포, 카나리 배포와 같은 전략을 사용하여 수행될 수 있습니다.

쿠버네티스를 사용하는 CI/CD 파이프라인에서는 컨테이너화된 애플리케이션의 빌드, 테스트, 배포가 자동화되어 소프트웨어 개발 및 배포 과정이 더욱 빠르고 안정적으로 진행됩니다.

반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함