DevOps

CI/CD란?

CI (Continuous Integration)

지속적 통합은 구성원들이 작업한 코드를 통합하는 것을 의미한다. 예를 들어 Git과 같은 형상 관리 시스템에 구성원들로부터 approve된 소스코드들을 정기적으로 통합하는 것을 CI라고 하고, 이를 시행해주는 도구를 CI tool이라고 한다.

 

CI 시스템을 구축하지 않은 경우 개발된 소스코드를 형상관리 서버에 커밋하면 별도의 품질관리를 거치지 않고, 막바지에 통합하여 테스트를 진행하게 된다.

 

하지만 CI 시스템을 구축하면 CI 서버는 형상관리 서버의 통합된 소스코드를 테스트하고, 코드 스멜이 없는지 Code Inspection을 수행하는 등 지속적으로 코드의 결함 여부를 검증할 수 있다.

 

ex. Jenkins, Github Actions

CD (Continuous Delivery, Continuous Deploy)

지속적 배포라는 것은 용어 그대로 서버에서 실행할 파일을 옮기고, 그 파일을 실행하는 것을 말한다. 실행할 파일을 옮겨 실행하는 작업이 자동으로 이루어지며 지속적으로 이루어질 때 이를 지속적 배포라고 한다.

 

젠킨스의 예를 들자면 젠킨스는 Git으로 통합된 소스코드를 지속적으로 테스트하여 CI 작업을 수행한다. 그리고 젠킨스를 통해 서버에서 실행할 Jar 파일을 생성한 뒤, 실제 배포된 서버로 해당 파일을 옮기고 스크립트를 이용해 실행하는 작업까지 지속적, 그리고 자동화되어 이루어진다.