CI

CI(Continuous Integration)는 여러 개발자들이 작성한 코드나 기능과 통합되는 소프트웨어 개발 주기 단계이다. CI는 일반적으로 임시 환경에서의 코드를 통합과 어플리케이션 빌드 및 테스트를 포함한다.

image

CI의 흐름은 개발자가 변경한 코드를 적용한 뒤 git과 같은 소스 제어 서버에 커밋한 후 CI 도구에서 가져와 시작한다. build는 코드에 버그가 없는지 표준 형식 및 스타일을 만족하는지 확인한다. 빌드가 끝나면 테스트를 진행한다. 테스트에서는 기능 통합 및 성능을 테스트한다. 테스트가 성공적으로 끝나면 도커 이미지와 같은 artifact 들을 운영환경이나 스테이징 환경에 가져와서 배포할 수 있는 상태로 만든다.

CD

CD(Continuous Deployment)는 지속적인 통합 자동화된 테스트와 자동화된 배포를 통해 사용자를 최소한으로 개입하게 하여 소프트웨어를 빠르고 안전하게 개발 및 배포할 수 있게 하는 방법이다. 배포의 단위는 도커 이미지나 패키지, artifact 등이 된다.

image

CI/CD

CI/CD는 어플리케이션을 빌드, 패키징, 배포하는 데 사용하는 방식이다.

image

개발자가 변경사항을 git 에 커밋하면 git의 소스코드를 build에 통합한다. 자동화된 테스트는 빌드 과정에서 실행된다. 그 다음에 빌드된 패키지가 운영이나 스테이징 으로 전달된다.