728x90

CI(Countinuous Integration) - 빌드/테스트 자동화

  • 개발자를 위해 빌드 및 테스트를 자동화 해준다
  • 새로운 소스코드의 빌드, 테스트, 병합
  • CI 절차 예시
    1. 개발자는 자신의 로컬에서 코드를 수정하고 Github에 해당 내용을 Push한다.
    2. CI 도구에서 변경된 코드로 인해 빌드와 테스트를 새로 수행하고 결과를 피드백해준다.
    3. 개발자는 자신이 개발한 소프트웨어의 소스코드를 공통된 버전 관리시스템(github 등)에 저장합니다.
    4. 소스코드상에 변동이 생기면 버전 관리 시스템에서는 CI 툴 (Jenkins)로 소스코드 변경을 알립니다.
    5. CI툴에서는 변경된 소스코드를 대상으로 Build, Test, Merge를 진행합니다. 이 과정들이 완료되면 슬랙, 카카오톡, 메일 등을 통해 통합 결과를 알립니다.

CD(Continuous Delivery/Continous Deployment) - 배포 자동화

  • CI 로 새롭게 빌드된 파일을 서비스 중인 서버에 자동으로 배포한다.

  • 변경사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈

  • 자동화 수준에 따라 아래 2가지로 구별 가능하다

    • Continous Delivery(지속적인 배송) : 프로덕션 환경에 수동 배포

      • - 빌드파일을 배포(서비스)까지는 하지않고 스테이징까지만 한다.
      • - 배포는 운영팀이 직접한다.
    • Continous Deployment(지속적 배포) : 프로덕션환경에 자동 배포

      • 빌드파일을 배포까지 자동으로 한다. 이 경우 배포 중 서비스가 잠시 끊기게된다.

        ※ 스테이징 환경: 운영환경과 거의 동일한 환경을 만들어놓고, 여러가지 비 기능적인 부분을 검증하는 환경

        ※ 프로덕션 환경: 실제 서비스를 위한 운영환경

  • CD 절차 예시

    1. CI가 정상적으로 수행되고 나면 빌드된 파일을 CD에 전달한다.
    2. CD에서는 빌드가 완료된 파일을 받아서 전처리 / 후처리 등을 수행한다. 아
      • 기존에 동작하던 애플리케이션을 종료시키고 업데이트된 빌드 파일로 애플리케이션을 구동
      • 새로 업데이트된 파일을 다른 포트에 풀어놓고 구동이 완료되면 프락시에서 들어오는 요청을 스위칭함. (무중단 배포)
  • CI/CD 합친 예시

    CI/CD pipeline
    1. Github에 소스코드를 푸시하면 Github에서는 Jenkins로 Web Hook을 날립니다.
    2. Jenkins에서 빌드-테스트를 진행하고 검증된 소스코드로 도커 이미지를 만듭니다.
    3. Jenkins 내부에 설정된 스크립트로 만들어진 도커 이미지를 Docker hub로 푸시합니다.
    4. Jenkins에서 프로덕션 서버로 스크립트 실행 명령을 날립니다. 해당 스크립트를 받은 운영서버는 Docker hub에서 이미지를 다운로드한 후 애플리케이션을 배포합니다.****

'기타' 카테고리의 다른 글

Blocking vs Non-Blocking / Synchronous vs Asynchronous  (0) 2021.06.05
MVC 란?  (0) 2021.05.19
library vs framework  (0) 2021.03.07

+ Recent posts