본문 바로가기

CI&CD

CI/CD란?

  • 개발자가 사용자에게 개발한 내용을 보여주기 위해 다음과 같은 과정을 거친다 
    1. 컴파일 : 프로그래밍 언어를 기계어로 번역한다 
    2. 빌드 : 컴파일된 파일을 실행 가능한 상태로 만든다 
    3. 배포 : 서버에 올린다 
  • 보통 하나의 애플리케이션은 여러 개발자들이 개발하게 된다. 이 때, 매번 개발자가 코드 수정 → 컴파일 빌드 → 테스트 → 배포 과정을 거친다면 많은 시간이 소요될 것이다. 이러한 과정을 자동화한다면 개발자는 더욱 효율적으로 개발할 수 있게 된다

 


CI/CD

 

출처: https://www.redhat.com/ 

  • CI/CD는 애플리케이션 개발~배포 단계를 자동화해서 서비스를 짧은 주기로 배포할 수 있는 방법이다.

 


CI/CD 파이프 라인 

  • 새로운 배포를 위해 수행해야 할 일련의 단계 
  • 애플리케이션 개발의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공해 개발 프로세스의 효율성을 높힌다 

CI/CD 파이프 라인 단계

  • Build : 애플리케이션 컴파일
  • Test : 코드를 테스트
  • Release : 애플리케이션을 Repository에 제공
  • Deploy : 프로덕션 환경에 배포 
  • Validation & compliance : 빌드 검증 단계는 필요에 따라 진행된다 
  • 등등 다른 단계도 있는데, 조직의 필요에 따라 파이프 라인을 구성하면 된다 

 


CI [ Continuous Integration ]

출처: www.pepgotesting.com

  • CI/CD 파이프 라인을 위한 첫 번째 단계이다. 새로운 코드를 주기적으로 빌드/테스트해 Repository에 머지하기 때문에머지 충돌 발생 빈도가 적다. 그리고 모든 코드들이 자동으로 빌드/테스트 되기 때문에 문제점을 빠르게 발견할 수 있다 
  • 단계 
    1. 로컬에서 개발한 소스 코드를 원격 Repository에 push한다 
    2. 원격 소스코드가 업데이트 되면 CI 툴에 알린다
    3. CI 툴에서 업데이트 된 소스코드를 빌드 -> 테스트 -> 머지를 진행한다
    4. 결과를 이메일등을 통해 개발자에게 알린다
  • 모든 코드가 완전한 상태임을 보장하기 위해 테스트 코드가 잘 구현되어 있어야 한다
  • CI용 서버를 따로 구축해야 한다 

 


CD [ Continuous Delivery / Continuous Deployment ]

  • Continuous Delivery / Continuous Deployment 두 용어가 상호 교환적으로 사용된다
  • 효과적인 CD를 위해 개발 파이프라인에 CI가 먼저 구축되어 있어야 한다.

출처: https://www.atlassian.com

Continuous Delivery

  • 준비된 Release가 문제가 없는지 개발자/QA가 검증한 다음 프로덕션 환경에 수동적으로 배포한다 

Continuous Deployment

  • 파이프 라인 이전 단게를 모두 성공적으로 마치면 Repository에서 프로덕션 환경에 자동으로 배포

 


CI/CD 과정

  1. 로컬 환경에서 작업한 코드를 원격 브랜치로 push 한다
  2. CI 서버에서 빌드/테스트를 진행하고 결과를 전송한다
  3. 개발자는 결과를 전송 받은 후 에러가 있다면 수정 후 master 브랜치에 머지한다
  4. master 브랜치에서 빌드/테스트가 정상적으로 수행 되었다면 CI 서버에서 배포 한다

 


CI/CD 종류

  • Jenkins, CircleCI, TrabisCI, Github Actions, ...

'CI&CD' 카테고리의 다른 글

Jenkins - GitHub webhook 연동  (0) 2022.01.15