조각조각 - CI/CD

eocode·2023년 2월 14일
0

CS 조각조각

목록 보기
3/3
post-thumbnail

채용공고에서 CI/CD를 여러번 본적있지만 개념을 확실하게 공부하지 않고 그냥 자동화 툴? 정도로만 알고 있었습니다. 이번엔 CI/CD가 정확히 무엇을 뜻하는 것인지 알아보도록 하겠습니다.

CI/CD

보통 프로젝트가 진행될 때 모든 코드가 한번에 완성되고 빌드, 배포되지 않습니다. 당연히 만드는 과정중에 코드가 수정되기도 하고 기능이 추가되기도 합니다. 또 프로젝트가 협업으로 이루어지는 경우 다른 개발자의 코드를 통합하는 과정도 빈번하게 발생합니다. 이 빈번하고 반복적인 작업을 거칠때 마다 빌드와 배포가 다시 진행됩니다.

이 처럼 매번 에너지를 낭비한다면 개발 효율이 낮아질 것 입니다. 만약 에너지를 낭비하지 않고 자동화하여 일을 처리한다면 다른 곳에 에너지를 투자할 수 있다면 개발 효율성을 증가 시킬수 있을 것입니다.

이러한 에너지를 낭비를 막아주는 자동화 과정을 CI/CD라고 부릅니다. 아래 ChatGPT가 정의하는 CI/CD가 무엇인지 확인해 보겠습니다.

CI/CD?

CI/CD는 Continuous Integration / Continuous Delivery (혹은 Continuous Deployment)의 약자로 소프트웨어 개발 프로세스의 자동화된 방식을 뜻합니다.
CI/CD는 소프트웨어 개발에서 발생하는 문제를 해결하기 위한 방식입니다. 개발 프로세스의 일부로 소스 코드의 변경사항이 지속적으로 통합되고, 자동화된 테스트 및 빌드, 배포가 이루어지며, 배포 후에도 지속적인 모니터링이 이루어집니다.

CI와 CD를 나눠서 자세히 살펴보도록 하겠습니다.

CI(Continuous Integration)

지속적인 통합을 뜻하며 개발에서 발생하는 문제 중 하나인 소스 코드 통합 문제를 해결하기 위한 방법 중 하나입니다.

CI 과정

코드 변경 ⇨ 빌드 ⇨ 테스트 ⇨ 통합

  1. 코드 변경
    위에서 언급했듯 프로젝트의 코드는 한번에 완성되는 경우는 거의 없습니다. 문제 해결을 위해 코드가 수정되고 기능이 추가되고 협업 개발자간 코드가 통합되며 코드의 변경이 계속 발생합니다. 코드가 변경될 때 마다 지속적으로 통합하는 과정이 진행됩니다.
    ⭐️ 코드 변경사항은 주기적으로 빈번하게 머지되어야 합니다. 주기적으로 머지하지 않고 한방에 몰아서 머지하게 된다면 서로 다른 코드들을 통합하는데 상당한 에너지가 소비됩니다. 코드 수정보다 머지 충돌을 해결하는데 시간이 더 필요로하게 될 수 도있습니다. 최대한 작은 단위로 개발하고 통합하는것이 유용합니다.
  2. 빌드
    코드 변경사항이 푸시되면 자동화된 빌드 과정이 실행됩니다. 소스 코드가 컴파일되어 실행 가능한 애플리케이션 또는 라이브러리 파일을 생성합니다.
  3. 테스트
    빌드 과정에서 생성된 애플리케이션 또는 라이브러리 파일을 대상으로 자동화된 테스트 과정이 실행됩니다. 이를 통해 변경 사항이 이전 버전과 호환성이 있는지, 애플리케이션의 기능이 올바르게 동작하는지 등을 검증합니다.
  4. 통합
    빌드 및 테스트 과정을 통과한 변경 사항은, 통합 서버에 자동으로 통합됩니다. 이를 통해 여러 명의 개발자가 작업한 코드가 충돌하지 않도록 관리할 수 있습니다.

개발자는 작은 단위로 주기적으로 코드를 머지하기 때문에 머지 충돌이 최소화됩니다. 이후 자동으로 CI 스크립트를 통해서 빌드, 테스트, 통합이 진행됩니다. 덕분에 자동화 과정중 문제가 생김을 빠르게 파악할 수 있고 코드 결함을 빠르게 수정 할 수 있습니다. 이는 개발 생산성 향상, 개발 안정성 향상으로 이어집니다.

정리하자면 코드 변경에 따른 빌드, 테스트, 통합 과정을 자동화 한것을 CI라고 부릅니다.

CD (Continuous Delivery/Deployment)

Continuous Delivery

애플리케이션을 지속적으로 배포하는 것이 아니라 지속적으로 배포할 수 있는 능력을 제공합니다. 즉, 빌드, 테스트, 통합 단계를 거친 애플리케이션을 수동으로 배포할 수 있는 능력을 의미합니다. Continuous Delivery를 적용하면, 배포 과정에서 발생하는 수작업 작업을 줄이고, 배포의 빈도와 신뢰성을 높일 수 있습니다.

Continuous Delivery 배포 : 결과적으로 개발자가 검토하고 배포

Continuous Deployment

Continuous Deployment는 Continuous Delivery와 유사하지만, 애플리케이션 배포 과정 자체를 자동화합니다. 즉, 빌드, 테스트, 통합 과정을 거친 애플리케이션을 자동으로 프로덕션 환경에 배포합니다. Continuous Deployment를 적용하면, 배포 과정에서 발생할 수 있는 인간의 오류를 줄이고, 배포 빈도를 더욱 높일 수 있습니다.

Continuous Deployment 배포 : 스크립트를 통한 자동 배포

즉 CD는 개발팀이 변경 사항을 더 빠르게 배포하고, 사용자들은 더 빠르게 새로운 기능을 사용하도록 도와줍니다. 또 배포 과정 문제를 빠르게 파악, 수정이 가능하도록 도와주며 개발자가 배포 과정에 쏟을 시간과 노력 등 에너지를 다른 작업에 투자할 수 있어 개발 효율성이 증가하게 됩니다.

CI/CD 시각화

참고자료

profile
프론트엔드 개발자

0개의 댓글