티스토리 뷰
개요
CI/CD에서 D가 Delivery, Deployment로 쓰일 수 있다는 것을 알게되어 좀더 명확히 정리하고 싶어 ChatGPT의 힘을 빌어 정리해보았다.
Continuous Integration (CI)
ChatGPT가 다음과 같이 잘 정리해주었다. 여러 명의 개발자들이 동시에 코드를 구현하고 통합하는 것이며, 그 과정에서 문제가 없도록 자동으로 빌드하고 테스트를 해주는 것이다.
- CI는 개발자들이 코드 변경 사항을 주기적으로 공유된 저장소에 통합하는 것을 말합니다.
- 이 과정은 코드 통합에 따른 문제를 조기에 발견하고 해결할 수 있게 해줍니다.
- CI 과정에는 코드의 자동 빌드 및 테스트가 포함됩니다.
Distribution
CD에서 사용되는 Delivery와 Deployment와는 별개로 Distribution의 개념부터 정리해보자. 배포에 필요한 준비를 하는 것으로 보면 되겠다. 다음은 ChatGPT의 정리이다.
"Distribution"은 소프트웨어 개발 과정에서 주로 두 가지 의미로 사용됩니다:
- 소프트웨어 패키징 및 배포 준비:
- 이 의미에서의 Distribution은 소프트웨어가 최종 사용자나 고객에게 배포될 수 있도록 준비하는 과정입니다.
- 여기에는 소프트웨어를 패키징하고, 필요한 종속성을 포함시키며, 배포 가능한 형태로 만드는 작업이 포함됩니다.
- 예를 들어, Windows용 실행 파일, Linux용 패키지, 또는 클라우드 서비스를 위한 컨테이너 이미지를 생성하는 것이 여기에 해당합니다.
- 소프트웨어 버전 관리 및 배포:
- 이 경우, 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"를 쿠버네티스 환경에 적용하는 예를 들어보겠습니다:
- Continuous Integration (CI): (정현석) 코드를 통합, 빌드하고, 테스트하고, 컨테이너 레지스트리까지 올리는 과정이다. 컨테이너 이미지를 만들고 접근가능하게 하는 것은 클라우드 네이티브의 기본이자 핵심이다.
- 개발자들이 코드 변경사항을 Git 리포지토리 같은 공유 저장소에 통합합니다.
- 코드 통합 후, 자동화된 테스트를 실행하여 변경사항이 안정적임을 검증합니다.
- CI 시스템은 또한 새로운 코드 변경사항을 기반으로 Docker 이미지를 빌드하고, 이를 컨테이너 레지스트리(예: Docker Hub, Google Container Registry)에 푸시할 수 있습니다.
- Continuous Delivery: (정현석) 쿠버네티스가 컨테이너 이미지들과 설정을 기반으로 다양한 지시, 선언에 따라 서비스를 구성하도록 해두는 것이라고 말할 수 있겠다.
- Continuous Delivery에서는 쿠버네티스 클러스터에 배포할 준비를 마칩니다.
- 이 단계에서는 쿠버네티스 매니페스트 파일(예: YAML 파일)을 사용하여 어떻게 애플리케이션이 배포될지 정의합니다.
- 이 매니페스트는 프로덕션 환경에 적용될 준비가 된 상태로, 필요에 따라 수동으로 적용하거나 자동화 도구를 통해 적용할 수 있습니다.
- Continuous Deployment: (정현석) Continuous Delivery에 대하여 실제 배포에 대한 부분까지 챙기는 것이다.
- Continuous Deployment에서는 새로운 변경사항이 자동으로 프로덕션 환경의 쿠버네티스 클러스터에 배포됩니다.
- 이를 위해 CI/CD 도구(예: Jenkins, GitLab CI/CD, Argo CD)가 사용되며, 이들은 새로운 Docker 이미지가 레지스트리에 푸시될 때 자동으로 쿠버네티스 클러스터에 배포를 진행합니다.
- 애플리케이션 업데이트는 쿠버네티스의 롤링 업데이트, 블루/그린 배포, 카나리 배포와 같은 전략을 사용하여 수행될 수 있습니다.
쿠버네티스를 사용하는 CI/CD 파이프라인에서는 컨테이너화된 애플리케이션의 빌드, 테스트, 배포가 자동화되어 소프트웨어 개발 및 배포 과정이 더욱 빠르고 안정적으로 진행됩니다.
'development' 카테고리의 다른 글
개발자의 공부법 - 에 대한 생각 (0) | 2024.03.20 |
---|---|
Chrome 개발자 도구로 Request 재구성 및 재전송하기 (0) | 2024.02.14 |
JWT Token을 Header, Cookie 어디에 두는게 좋을까? (0) | 2023.11.21 |
상위 1% 엔지니어의 7가지 간단한 습관 - 읽고 생각 정리 (0) | 2023.10.24 |
MacOS에서 단축키로 ChatGPT를 열어보자 - 사파리 웹앱과 레이캐스트 사용 (0) | 2023.10.05 |
- Total
- Today
- Yesterday
- Gin
- bun
- OpenAI
- 클린 애자일
- clean agile
- 인텔리제이
- agile
- 체호프
- 독서후기
- 잡학툰
- golang
- websocket
- intellij
- folklore
- 독서
- 노션
- ChatGPT
- API
- Bug
- go
- strange
- 2023
- solid
- 제이펍
- Shortcut
- github
- 영화
- 오블완
- notion
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |