- 개발자가 사용자에게 개발한 내용을 보여주기 위해 다음과 같은 과정을 거친다
- 컴파일 : 프로그래밍 언어를 기계어로 번역한다
- 빌드 : 컴파일된 파일을 실행 가능한 상태로 만든다
- 배포 : 서버에 올린다
- 보통 하나의 애플리케이션은 여러 개발자들이 개발하게 된다. 이 때, 매번 개발자가 코드 수정 → 컴파일 → 빌드 → 테스트 → 배포 과정을 거친다면 많은 시간이 소요될 것이다. 이러한 과정을 자동화한다면 개발자는 더욱 효율적으로 개발할 수 있게 된다
CI/CD
출처: https://www.redhat.com/ 
- CI/CD는 애플리케이션 개발~배포 단계를 자동화해서 서비스를 짧은 주기로 배포할 수 있는 방법이다.
CI/CD 파이프 라인
- 새로운 배포를 위해 수행해야 할 일련의 단계
- 애플리케이션 개발의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공해 개발 프로세스의 효율성을 높힌다
CI/CD 파이프 라인 단계
- Build : 애플리케이션 컴파일
- Test : 코드를 테스트
- Release : 애플리케이션을 Repository에 제공
- Deploy : 프로덕션 환경에 배포
- Validation & compliance : 빌드 검증 단계는 필요에 따라 진행된다
- 등등 다른 단계도 있는데, 조직의 필요에 따라 파이프 라인을 구성하면 된다
CI [ Continuous Integration ]
출처: www.pepgotesting.com
- CI/CD 파이프 라인을 위한 첫 번째 단계이다. 새로운 코드를 주기적으로 빌드/테스트해 Repository에 머지하기 때문에머지 충돌 발생 빈도가 적다. 그리고 모든 코드들이 자동으로 빌드/테스트 되기 때문에 문제점을 빠르게 발견할 수 있다
- 단계
- 로컬에서 개발한 소스 코드를 원격 Repository에 push한다
- 원격 소스코드가 업데이트 되면 CI 툴에 알린다
- CI 툴에서 업데이트 된 소스코드를 빌드 -> 테스트 -> 머지를 진행한다
- 결과를 이메일등을 통해 개발자에게 알린다
- 모든 코드가 완전한 상태임을 보장하기 위해 테스트 코드가 잘 구현되어 있어야 한다
- CI용 서버를 따로 구축해야 한다
CD [ Continuous Delivery / Continuous Deployment ]
- Continuous Delivery / Continuous Deployment 두 용어가 상호 교환적으로 사용된다
- 효과적인 CD를 위해 개발 파이프라인에 CI가 먼저 구축되어 있어야 한다.
출처: https://www.atlassian.com
Continuous Delivery
- 준비된 Release가 문제가 없는지 개발자/QA가 검증한 다음 프로덕션 환경에 수동적으로 배포한다
Continuous Deployment
- 파이프 라인 이전 단게를 모두 성공적으로 마치면 Repository에서 프로덕션 환경에 자동으로 배포
CI/CD 과정
- 로컬 환경에서 작업한 코드를 원격 브랜치로 push 한다
- CI 서버에서 빌드/테스트를 진행하고 결과를 전송한다
- 개발자는 결과를 전송 받은 후 에러가 있다면 수정 후 master 브랜치에 머지한다
- master 브랜치에서 빌드/테스트가 정상적으로 수행 되었다면 CI 서버에서 배포 한다
CI/CD 종류
- Jenkins, CircleCI, TrabisCI, Github Actions, ...