본문 바로가기

DevOps

Continuous Integration 개요

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

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