본문으로 건너뛰기

CI/CD란 무엇일까?

2023년 10월 15일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.
여기에서 원본을 확인할 수 있습니다.

들어가며

지난 해커톤, 배포로 인한 많은 불편과.. 걱정을 겪고 Docker를 이용한 배포 방법과 GitHub Actions를 이용한 자동화 배포를 진행하는 방법을 열심히 공부하면서 마침내 CI/CD 구축을 완료하였다. 간단히 설명하자면 develop 브런치에서 테스트가 완료된 커밋들을 PR을 통해 main 브런치에 머지 작업을 완료하면 자동으로 빌드가 진행되며, 도커 이미지를 만들고 Ubuntu 서버에 배포하는 작업을 자동화하였다. 그래서 일단 구현은 했고, CI/CD가 어떤 의미, 개념을 가지고 있는지 알아보고 싶기 때문에 이 글을 작성하게 되었다.

CI(Continuous Integration)

빌드, 테스트의 자동화

CI/CD에서 CI는 Continuous Integration의 줄임말로, 지속적 통합을 의미한다.

개발을 진행할 때 충돌의 위험과 여러가지 이유의 위험성을 덜기 위해 각각의 branch를 나누고, 본인의 branch 안에서 작업하게 되는데, 충돌의 위험을 덜기 위해 자주 PR(Pull Request)과 Merge를 진행하다. CI/CD에서 CI도 어떤 자동화의 일종인 줄 알았지만, 이런 사람이 하는 행위 자체가 CI인 것이다.

정리하자면, 작업을 할 때마다 자주 PR(Pull Request)과 Merge를 하는 이런 행위 자체가 CI라는 것이다.

CD(Continuous Deployment)

배포의 자동화

CI/CD에서 CD는 Continuous Deployment의 줄임말로, 지속적인 배포를 의미한다. CI와 다르게 CD는 명확하게 이해할 수 있다.

개발을 하다 보면, 새로운 API를 개발하거나 기존의 API의 오류 수정 등의 이슈가 자주 일어나기 마련이다. 새로운 API를 개발하여 배포만 한다면 자동화 배포가 구현되어 있지 않아도 그렇게 큰 불편함은 없지만, 만일 중대한 API 오류 같은 문제점이 있다면 끊임없이, 바로바로 패치를 해주어야 한다.

배포하는 과정이 까다롭고, 오래걸리기에 어플리케이션이 자동으로 이 배포 과정을 수행하여 최종적으로 서버에 배포를 완료하는 것이다. 이 과정을 CD(Continuous Deployment)라고 한다.