본문 바로가기
Dev/DevOps

DevOps와 CI

by 갓연쥬 2017. 7. 18.


DevOps란?

소프트웨어의 개발(Development)과 운영(Operations)의 합성어로 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다.


CI(Continuous Integration)란?

지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다. 애자일 방법론이 대두되면서 더욱 주목받게 되었다.

소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞춰져있다.

팀의 개발자가 각각 작업한 소스코드를 모아 한번에 빌드하는 통합 빌드 과정을 특정 시점이 아닌 주기적으로 수행함으로써 통합에서 발생하는 오류를 사전에 해결하고 이러한 과정들에 소요되는 시간을 줄이기 위한 기법이다. 컴파일뿐만 아니라 테스팅 단계, 코드 품질 관리, 배포 등에 시간을 절약하기 위한 기법이다.


CI 시스템 구축을 위한 핵심 구성요소


-CI Server

빌드 프로세스를 관리하는 서버 ex) Jenkins, Travis CI 등


-SCM(Source Code Management)

소스코드 형상 관리 시스템. ex) Git, subversion 등


-Build Tool

컴파일, 테스트, 정적 분석 등을 실시해 동작가능한 소프트웨어를 생성하는 도구. ex) Maven, Gradle, Ant 등


-Test Tool

작성된 테스트 코드에 따라서 자동으로 테스트를 수행해주는 도구. 빌드 툴의 스크립트에서 실행된다. ex) JUnit, Mocha 등


-Test Coverage Tool

테스트 코드가 대상 소스 코드에 대해 어느정도 커버하는지 분석하는 도구. 빌드 툴의 스크립트에서 실행된다. ex) Emma, Cobertura 등


-Inspection Tool

프로그램을 실행하지 않고 소스코드 자체로 품질을 판단할 수 있는 정적분석 도구. 코딩 표준 준수 검사, 코드 메트릭 측정, 중복코드 검사 등. 빌드 툴의 스크립트에서 실행된다. ex) Checkstyle, Findbugs, Sonarqube 등


빌드 스크립트를 통한 CI 자동화 수행 절차

1.  소스코드를 바이너리 파일로 컴파일

2. 바이너리 파일을 배포 형태로 패키징 한다.

3. 단위 테스트를 수행한다.

4. 정적 분석을 수행한다.

5. 분석 결과를 리포팅 한다.

6. 패키징한 파일을 테스트 서버에 배포한다.


참고 지속적인 통합(http://happystory.tistory.com/89)

'Dev > DevOps' 카테고리의 다른 글

CI 구축연습 (scala, sbt) -2-  (0) 2017.07.19
CI 구축연습 (scala, sbt) -1-  (0) 2017.07.18
ansible  (0) 2017.07.18
jenkins 이용해 gradle프로젝트 패키징하기  (0) 2017.07.13
jenkins 사용법  (0) 2017.07.13

댓글