목표
CI/CD
공부
CI/CD란?
CI/CD는 Continuous Integration와 Continuous Delivery/Continuous Deployment의 약자이다. 한국어로 풀어 쓰자면, "지속적 통합"/"지속적 배포"이다.
이렇게만 봐서는 이해하기 힘든 말이다. 조금 더 자세하게 알아보자.
CI
지속적 통합이 도대체 뭘까?
단순하게 개발자들이 코드를 지속적으로 통합하는 것이다.
여기서 끝이아니라 통합 후 자동으로 테스트를 하는 것까지 포함이다.
이렇게 했을 때의 장점은 통합시에 발생하는 문제를 조기에 발견할 수 있게 된다.
예를 들어 유닛 테스트 코드를 작성해두었으면, 코드 통합 후 자동으로 빌드가 되고, 해당 테스트 파일로 자동으로 테스트가 된다. 이 결과로 개발자에게 피드백이 가는 것이다.
다른 누군가에게 피드백을 받지 않아도, 테스트 결과를 통해 피드백을 얻을 수 있어 문제 해결 시간이 단축된다.
CD
지속적 배포는, CI를 통한 검증이 완료된 이후 배포될 준비가 된 상태를 유지하는 것을 말한다.
"배포될 준비" 라는게 어떤 의미일까? CI 이후에 문제가 없다면, 언제라도 배포가 가능한 상태를 유지하고 있는 것이다. 쉽게 말해서 CI가 완료된 이후 자동으로 배포되는 것을 의미한다.
이렇게 하면 배포 준비 시간을 단축할 수 있고, 모든 변경 사항이 자동으로 반영되어 따로 신경을 쓰지 않아도 된다.
사용하는 이유
사실 CI/CD는 내가 생각했을 땐, 작은 규모의 개발에선 큰 의미가 없다고 생각한다.
적은 인원끼리의 개발이고, 변경사항을 직접 반영해도 된다.
하지만, 배포 이후에 작업을 해보면서 느낀 점은 조금 귀찮았다. PR이 승인되면, ec2 컨테이너에 들어가 pull을 받고 빌드를 해주어야 했다.
이 과정들이 불편하기 때문에 CI/CD를 적용하는 것이다.