-
출처: https://www.civo.com/blog/the-role-of-the-ci-cd-pipeline-in-cloud-computing CI/CD
지속적 통합(Continuous Integration)과 지속적 배포/지속적 전달(Continuous Delivery/Continuous Deployment)을 의미하는 소프트웨어 개발 및 운영 방식
1. CI(지속적 통합)
- 개발자가 작성한 코드가 중앙 저장소에 자주 통합되도록 하는 개발 관행
- 코드 변경 사항을 자주 통합하여 버그를 빨리 발견하고 해결
주요 요소
- 자동화된 빌드
- 코드 변경이 발생할 때마다 자동으로 빌드를 수행하여 코드가 올바르게 실행될 수 있는지 확인
- 자동화된 테스트
- 새로운 코드가 기존 코드와 충돌하지 않도록 자동으로 테스트를 실행
- 빈번한 통합
- 개발자는 코드 변경을 저장소에 자주 통합하여 다른 팀원들이 작성한 코드와 빠르게 병합
장점
- 빠른 오류 발견
- 코드 변경이 발생할 때마다 자동으로 빌드 및 테스트를 실행하여 문제를 빨리 발견
- 개발 효율성 향상
- 수동으로 빌드하고 테스트하는 시간을 줄여 더 빠른 배포가 가능
2. CD(지속적 배포)
- 소프트웨어가 자동으로 테스트되고 배포될 수 있도록 만드는 과정
❗ ❗ 지속적 전달과 지속적 배포는 비슷하지만 다른 개념 ❗ ❗
- 지속적 전달 (Continuous Delivery)
- 지속적 전달은 코드가 배포 가능한 상태로 항상 준비되어 있는 것을 의미
- 자동화된 테스트를 거친 후 자동화된 배포 파이프라인을 통해 새로운 기능이나 변경 사항이 실제 운영 환경에 배포될 준비
- 실제로 배포가 이루어지는 것은 수동
- 자동으로 테스트가 끝난 후 변경된 코드가 테스트 환경이나 스테이징 서버에 자동 배포
- 운영 환경으로 배포되기 전에 승인을 기다림
- 지속적 배포 (Continuous Deployment)
- 지속적 전달의 한 단계 더 나아간 개념
- 코드 변경이 자동으로 운영 환경에 배포되는 것을 의미
- 테스트가 끝나고 승인된 코드는 별도의 수동 작업 없이 자동으로 사용자에게 제공
- 새로운 기능이 코드 저장소에 커밋되면 자동으로 빌드, 테스트, 배포가 진행
- 사용자는 바로 새로운 기능을 사용
장점
- 빠른 피드백 제공
- 코드가 자동으로 배포되어 사용자는 빠르게 새로운 기능을 경험
- 고객 만족도를 높이고 개발자에게도 빠른 피드백을 제공
- 운영 환경과 가까운 테스트 환경
- 지속적 배포를 통해 코드가 실제 운영 환경에 배포되기 전에 테스트 환경에서 실제 환경과 유사한 조건을 만들어 검증
- 배포 자동화
- 수동 배포의 필요성을 없애 배포가 일관되게 이루어지므로 배포 오류를 최소화
CI/CD 도구
- Jenkins
- 오픈소스 CI/CD 도구
- 파이프라인을 구성하고 자동화하는 데 많이 사용
- GitLab CI/CD
- GitLab의 내장된 CI/CD 기능을 사용
- 코드의 빌드, 테스트, 배포를 자동화
- CircleCI
- 클라우드 기반의 CI/CD 도구
- 빠른 속도와 유연성을 제공
'CS > 웹개발' 카테고리의 다른 글
Docker (0) 2025.01.20 JPA N+1 문제 (0) 2025.01.19 JPA Dirty Checking (0) 2025.01.13 google.com을 검색했을 때 일어나는 과정 (0) 2025.01.08 OAuth (0) 2025.01.06 댓글