진짜 개발자
본문 바로가기

Software Engineering/CICD (jenkins, etc)

CI/CD - CI/CD 란?

728x90

CI란?

CI 시스템을 구축하지 않고 개발을 진행하는 경우에 각 팀의 개발자들이 개발한 소스코드들을 형상관리 서버(GIT) 에 커밋한다면 각 개발의 결과가 품질관리를 거치지 않고, 대부분 개발이 끝난 막바지에 통합을 하여 테스트를 진행하게 된다 이럴 경우, 개발 중 별도의 품질관리를 하지 않았기 때문에 잘못된 소스코드를 형상관리 시스템에 반영하였을 경우 발생되는 문제가 개발 후반에 모두 장애로 발견된다.

반면 CI 시스템을 구축하게 되면, CI 서버는 리포지토리 서버(Git 등)에 Commit된 소스코드를 주기적으로 폴링하여 컴파일, 단위테스트, 코드 인스펙션 등의 과정을 수행하며 신규 또는 수정된 소스코드가 결함이 있는지 여부를 지속적으로 검증한다 검증 결과는 이메일 RSS등의 피드백 메커니즘을 통해 개발자들에게 전달되고, 이를 통해 조기에 결함을 발견하여 해결할 수 있다.


즉, CI란 지속적인 통합을 통해, 품질을 유지하는 활동을 말한다. (빌드 및 테스트 자동화)


CI 구성요소

CI Server

빌드 프로세스를 관리하는 서버이다

ex) Jenkins, Travis CI, etc

Repository Server

각 개발자의 성과물을 일괄적으로 버전 관리하고, 각 개발자가 언제든지 최신 코드를 추출할 수 있게한다.

ex) Git, etc, SubVersion

Build tool

컴파일, 테스트, 정적 분석등을 실시하여 실행 가능한 소프트웨어를 생성하는 도구이다. Build는 형상관리 시스템에 있는 소스코드를 가져와 컴파일하여 실행가능한 파일로 만드는 일련의 과정.

ex) Maven, Gradle, Ant

Test Toll

작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구이다.

ex) Junit, Mocha, etc


 

CD란?

CD란 지속적인 배포를 일컫는 말로 즉, 배포 자동화를 일컫는 말이라고 볼 수 있습니다.