Numb

CI 본문

Cloud Native/배경지식

CI

numb 2020. 9. 15. 18:21

CI/CD

 

1. CI(지속적 통합, Continuous Integration)

    1.1 CI의 정의

        1.1.1 출현 배경

            - 소프트웨어 개발 방법론인 폭포수 모델의 단점을 애자일 방법론으로 해결 가능

            - 애자일 방법론에 적합한 통합 방식이 필요성 대두

        1.1.2 의미

            - 개발자들이 빠른 주기로 작업한 내용을 통합 브랜치에 통합하고 빌드하는 개발 방식을 의미한다.

        1.1.3 절차

            - 기능 -> 개발 및 커밋 -> 빌드 및 단위 테스트 -> 통합 -> 빌드 -> 통합 테스트 -> 패키징

    1.2 CI의 구성 요소

        1.2.1 버전 관리 시스템

            - 비분산형 : SVN

            - 분산형 : GIT, 머큐리얼(Mercurial)

        1.2.2 브랜칭 전략

            - GitFlow 브랜칭 모델

        1.2.3 CI 도구

            - CI 시스템의 중심에 위치해 버전 관리 시스템, 빌드 도구, 바이너리 관리 도구테스트 및 프로덕션 환경, 소스코드 분석 도구 및 자동화 테스트 도구 등을 연결한다.

            - 빌드 포지(Build Forge), 뱀부(Bamboo), 팀시티(TeamCity), 젠킨스

            - 파이프라인(Pipeline)을 생성하는 방법을 제공

        1.2.4 자동으로 시작되는 빌드

            - 앤트(Ant), 메이븐(Maven)

            - 요구 조건 : 빠른 속도, 코드나 통합 이슈를 최대한 빨리 잡아내는 것

        1.2.5 코드 커버리지

            - 테스트 케이스가 커버하는 코드의 양을 백분율로 나타낸 값

            - 소나큐브

        1.2.6 코드 정적 분석

            - 화이트 박스(white-box) 테스트

            - 코드의 구조적인 품질을 측정하는 소프트웨어로 코드가 얼마나 견고하고 지속 가능한지를 알려준다.

        1.2.7 자동화된 테스트

        1.2.8 바이너리 관리 도구

            - 바이너리 파일버전 관리 시스템

        1.2.9 패키징 자동화

    1.3 CI 사용의 장점

        1.3.1 복잡하고 어려운 통합으로부터 해방

        1.3.2 메트릭

            - 작업 기간 동안의 추세를 기록하고 보여준다.

        1.3.3 이슈의 조기 발견

        1.3.4 빠른 개발