본문 바로가기
개발/개발지식

[개발지식] CI/CD 에 대해서

by 핸디(Handy) 2020. 8. 20.

열심히 개발을 하고 있는 도중에  CI/CD 에 대한 내용이 들려왔습니다. 일을 시작한 이후 처음 들어보는 단어라 공부 겸 정리하는 느낌으로 CI/CD 에 대해 알아보도록 하겠습니다.


0. CI/CD 란

  ○CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다.

  ○지속적인 통합, 지속적인 서비스 제공, 지속적인 배포를 가능하게 한다.

  ○새로운 코드의 통합으로 인하여 개발 및 운영팀에 발생하는 문제를 해결하는 솔루션이다.

1. CI/CD 나오게 된 이유

전통적인 코드 관리 및 배포 단계는 다음과 같다.

  1. Version Control : 코드를 생산하고 형상관리 도구에 커밋한다.
  2. Acceptance Test : PR(Pull Request), 코드 리뷰 등을 통해 소스 코드를 통합하고 테스트한다
  3. Release : 통합된 소스코드를 바탕으로 제품을 만들어 내보낸다.

각 단계를 보면 별 문제가 없어보일 수 있으나, 코드가 많아지고 모듈이 다양하지는 순간 박살나는 부분이 생기기 시작한다. 우리( 개발자) 는 보편적으로 생산에 익숙하고 서비스 운영에는 취약하다. 따라서 이러한 부분을 자동화하는 툴이 필요한 것이고 이게 바로 CI/CD 이다.

2. CI/CD 정의

2.1 CI (Continuous Integration), 지속적인 통합

  ○ Build & Packaging

  ○ 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 병합되는 것이다.

  ○ Build, Test를 실시하는 프로세스를 말하며 이러한 통합 프로세스를 상시로 실시하는 것이다.

  ○ 다수의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우, 서로 충돌할 수 있는 문제를 해결하기 위함이다.

  ○ 언제든 최신 Build를 고객에게 바로 제공 가능하게 한다.

2.2 CD (Continuous Delivery) & (Continuous Deployment), 지속적인 배포

  ○ Deployment

  ○ 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것이다.

  ○ 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것이다.

  ○ 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포된다.

  ○ 개발팀과 운영팀의 커뮤니테이션 부족 문제를 해결한다.

3. CI/CD 장점

CI/CD 방법론을 적용함으로써 다음과 같은 이점을 얻을 수 있다.

  ○ 모든 분기의 소스 코드를 병합하는 경우, 결과적으로 반복적인 수작업에 많은 시간이 소요된다.

  ○ 병합하는 수작업을 하지 않는다면, 개발자가 애플리케이션에 변경 사항을 적용할 때 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 수 있다.

  ○ 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 더욱 빠르게 자주 수정할 수 있다.

  ○ 여러 사람이 작성한 코드가 병합되었을 때 생기는 문제를 미리 감지한다.

  ○ System과 Application을 최대한 최신 상태로 유지할 수 있다.

댓글