면접에서 CI/CD에 대한 질문이 나왔는데, 제대로 대답하질 못해서 한번 정리해보았다.

CI/CD체계를 갖추는 이유

코드에 변경사항이 있을 때마다 개발자가 일일이 빌드, 테스트, 배포를 하는 것은 오래걸리고 비효율적이다. 이때 누군가가 자동으로 코드에 변경사항을 체크하고 빌드, 테스트, 배포를 해준다면 더욱 시간을 효율적으로 사용할 수 있고, 편리할 것이다. 바로 CI/CD 가 그런 부분을 맡아준다.

CI

CI/CD 중 CI는 빌드/테스트 자동화 과정이다. 또는 개발자를 위한 자동화 프로세스인 **지속적인 통합**을 의미한다.

지속적인 통합은 소스/버전관리시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 제공하는 것에서 시작한다. 그 후 커밋할 때마다 빌드, 테스트같은 일련의 자동화가 이루어져 변경사항으로 인해 오류가 없다는걸 보장한다.

CD

CI/CD중 CD는 배포 자동화 과정이다. 또는 지속적인 서비스 제공, 지속적인 배포 두가지를 의미하고 두용어는 상호 교환적으로 사용된다.

Untitled

마치며

다음과 같이 CI/CD에 대해 공부해 봤는데, CI/CD 환경을 구축하면 정말 좋은 이점들이 많이 생길 것 같다. 지금 현재 동아리에서 하는 프로젝트가 MFA를 진행해서 모듈이 많이 분리 됐는데 이를 CI/CD로 자동화 시키면 정말 편리해질 것 같다.