Etc/WEB

CI/CD란

쩡류 2021. 8. 31. 20:53
728x90

- 시장과 고객의 요구에 빠르게 반응하여 제품을 출시, 업데이트 하는 것이 중요

세계적으로 많은 기업들이 ci/cd를 개발 프로세스로 활용하고있다.

 

- CI/CD어플리케이션 개발부터 배포까지 모든 단계들을 자동화하여

사용자에게 빈번히 배포할 수 있도록 만드는 것이다.

CI: continuous integration

CD: continuous delivery (혹은 deployment)

 

CI는 버그 fix나 새로 추가한 기능들이 main repository에 주기적으로 merge되고, 빌드, 테스트되는 프로세스를 의미한다.

 

CI가 중점적으로 둔 사항은 

 

1. 개발자들은 코드 변경사항을 주기적으로, 빈번하게 merge해야 한다.

 

  => 동일한 소스파일을 서로 다른 개발자들이 너무 오랜기간동안 변경을 할 경우 conflict에 대한 수정시간이 매우 오래걸리기 때문이다. 그래서, 최대한 작은 단위로 개발하여 빈번하게 merge를 하는 것이 중요하다.

 

2. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화

 

  => 개발자들이 코드 리뷰를 받고 merge를 했다면, 자동으로 팀에서 만든 CI script를 통해 추가된 코드와 이 repository가 build가 되고, build가 잘 된다면 팀에서 작성한 unit Test, integrate test등 여러가지 test도 실행이 된다.

build 나 test에 실패한다면 개발자에게 알림이 가서 다시 수정을 하는 식이다.

 

장점

 

  => merge를 빈번하게 하여 빌드, 테스트 과정을 하므로 더 작은단위로 개발이 이루어지기 때문에

버그를 발견하고 fix하기가 더 쉬워진다.

 

jenkins 

- java runtime 환경에서 작동을 하는 자동화 서버. 빌드, 테스트, 배포 모든 것을 자동화해준다.

- 많은 플러그인을 활용해서 각종 자동화작업을 할 수 있다.

- 개발자가 개발에만 몰입을 할 수 있게 해주는 좋은 툴이다.