개요
이번 챌린지 프로젝트에서 CI / CD 를 구축하려한다.
자동화배포를 통하여 개발에만 집중할 수 있도록 도와주기 때문에…
그렇다면 CI / CD 가 정확하게 무엇이며, 장점은 무엇인지 알아보고 적용해보려 한다.
나는 GitActions 와 Docker를 사용하여 구축할 예정이다. -> 구축완료 링크
CI / CD
지속적인 통합(Continuous integration, CI)
과 지속적 제공(Continuous delivery, CD)
, 줄여서 CI / CD
는 애플리케이션 개발팀이 더 자주, 안정적으로 코드 변경을 제공하기 위해 사용하는 문화와 운영 원칙, 일련의 작업 방식으로 구성된다.
CI (Continuous Integration)
CI/CD의 "CI"
는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)
을 의미한다.
CI
를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 Repository
에 통합되므로, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
CD (Continuous Delivery / Deployment)
CI/CD의 "CD"
는 지속적인 서비스 제공(Continuous Delivery)
및/또는 지속적인 배포(Continuous Deployment)
를 의미하며 이 두 용어는 상호 교환적으로 사용된다.
두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.
지속적인 서비스제공(Continuous Delivery)
- CI 프로세스를 통해 개발중에 지속적으로 빌드와 유닛 및 통합 테스트를 진행하고, 이를 통과한 코드에 대하여 테스트서버와 운영서버에 자동으로 Release
- 운영팀이 보다 빠르고 손쉽게 애플리케이션을 Production으로 배포 가능
- Production 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것이 목표
지속적인 배포(Continuous Deployment)
- Production 준비가 완료된 빌드를 Source Repository에 자동으로 Release하는 지속적 제공의 확장된 형태
- 애플리케이션을 하나의 Production으로 Release하는 작업을 자동화
- Continuous Delivery(지속적인 서비스제공)로 통칭하여 언급하기도 함
- 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미
- 테스트와 빌드가 ‘지속적’으로 이루어지기 때문에, 배포 또한 자연스럽게 ‘지속적’으로 이루어지게 됨
CI / CD 장점
- 변경 사항을 자주 푸시하고자 하는 개발자와 안정적인 애플리케이션을 원하는 운영 담당자 사이의 마찰을 해결
- 코드 변경을 사용자에게 푸시하기 전에 검증하기 위해 개발 팀은 지속적인 테스트를 실행해야 함
- 새로운 기능을 위한 더 넓은 범위의 개발 작업을 수행하면서 신속한 수정 요청까지 받는 팀에 작업의 유연성을 부여
- 기능, 성능 및 데이터 중심 테스트를 더 많이 실행해서 더 높은 품질의 애플리케이션을 제공하고 프로덕션 결함을 줄일수 있음