DevOps

Continuous Integration 개요

지기(ZIGI) 2016. 1. 22. 10:52
Today key : Continuous, Integration, CI, 지속적, 통합, DevOps, Agile, 애자일, XP, eXtream, Programming, 방법론, Practice



Continuous Integration (지속적 통합)

▪ 소프트웨어 개발에서 Build/Test 의 프로세스를 지속적으로 수행하는 것. (Daily Build 라고도 했었음)

▪ 지속적으로 개발된 Unit 코드에 대한 Integration 작업을 수행하여, 항상 최신의 상태를 유지

▪ Agile 개발 방법론/프로세스 중의 하나인 XP(eXtream Programming)의 Practice 중의 하나

 




 

Continuous Integration의 특징 및 장점

▪ 항상 최신의 상태를 유지하기 위해 공통의 프로젝트 버전 관리 시스템을 이용하여 코드베이스의 복사본을 이용하여 개발 작업을

  거치고, 이를 다시 검증 후에 다시 업데이트.

▪ 개발 시점과 Integration 시점이 멀어질 경우에, Integration 후의 발생하는 다양한 문제를 해결하는 데 많은 시간이 소요되는 데 반해,

  이러한 통합 과정을 초기부터 지속적으로 수행하여 보다 빠르고 쉽게 문제점을 해결하여, 소프트웨어 품질과 생산성을 향상.

▪ 시작 단계부터 지속적인 통합을 통해서 'integration Hell'이라고 불리는 개발 종료 후의 통합 시에 발생한 문제를 예방하여,

   재작업에 필요한 비용 감소 및 시간 단축

▪ 지속적인 버전관리를 통해서 발생하는 버그, 에러 등에 대해서 빠르게 확인 및 수정이 가능

 

Continuous Integration에 필요한 것

▪ CI 도구(CI Server)

    - 전체 Build 프로세스를 관리

    - Ex) Jenkins

▪ 버전 관리 시스템(SCM)

    - 항상 동일한 최신의 베이스라인 코드를 가지고 작업 필요.

    - Ex) Git, SVN

▪ 빌드 도구(Build Tool)

    - 개발된 코드를 컴파일 과정을 거쳐서 서비스 가능한 형태로 만드는 빌드 과정을 수행 할 도구

    - Ex) Maven, Ant

▪ 테스트 도구(Test Tool)

    - 단위테스트, 통합테스트, 사용자 테스트, 회귀 테스트 등을 자동으로 수행 할 수 있는 도구

    - Ex) Junit

 

 

 

 

Practices of Continuous Integration - [ Martinfowler의 CI의 대한 포스팅 중의 CI를 수행하기 위한 방법 ]

▪ Maintain a Single Source Repository.

▪ Automate the Build

▪ Make Your Build Self-Testing

▪ Everyone Commits To the Mainline Every Day

▪ Every Commit Should Build the Mainline on an Integration Machine

▪ Fix Broken Builds Immediately

▪ Keep the Build Fast

▪ Test in a Clone of the Production Environment

▪ Make it Easy for Anyone to Get the Latest Executable

▪ Everyone can see what's happening

▪ Automate Deployment

 

※Martinfowle

    영국 출신의 객체지향 프로그래밍 전문가이자, 컨설턴트이며, 리팩토링의 리더 중의 한 명.