CI/CD의 개념정리

권태형·2023년 3월 23일
0

지식정리

목록 보기
42/72
post-thumbnail

😀필자는 단기프로젝트를 진행할 때 github action을 통해 CI/CD의 구현을 노력해보았지만, 실패하였다. 실질적인 개념에 대한 이해 없이 기술적인 부분만 만들어내려 했기 때문에 CI와 CD가 어떠한 의미를 가지고 필수적으로 포함해야할 내역이 무엇인지 생각해 보지 않아서 생겼던 일이었다.

이번에 CI/CD에 대해서 확실한 개념을 정리해 보자.

CI/CD의 개념

😀CI/CD는 소프트웨어 개발의 전반적인 과정을 자동화하여 빠른 소프트웨어 제공을 가능하게 하는 개념이다. CI/CD는 지속적 통합(Continuous Integration), 지속적 배포(Continuous Deployment 또는 Delivery), 지속적 테스트(Continuous Testing) 등을 포함한다.

좀더 세부적으로 CI와 CD의 개념을 따로 알아보자

CI

"CI" 는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.

CI가 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항정기적으로 빌드테스트를 거쳐 공유 리포지토리에 병합된다.
따라서 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제를 이 방법으로 해결할 수 있다.

😀쉽게말해 우리가 코드작성을 완료하고 github에 커밋을 하기 전에 Test를 하거나 Thunder client 나 DB Json을 이용해서 하나하나 일일이 코드의 상태를 확인하지 않아도 github에 커밋 및 머지를 했을 때 패지키 다운 및 Test, 충돌문제를 자동화하여 개발코스트를 줄여주는 역할을 해준다.

CI는 CT의 개념을 포함하는 개념을 가진다. 위의 빌드와 테스트를 거치기 때문에 지속적인 테스트의 의미를 포함할 수 있다.

CD

"CD"지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미하며 이 두 용어는 상호 교환하여 사용된다.

downtime(서비스 중단 시간)최소화하여 사용자들이 서비스에 대한 연속적인 접근성을 유지하면서도 최신 버전의 소프트웨어를 이용할 수 있게 하는 것을 목적으로 한다.

두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

  • 지속적인 서비스 제공(Continuous Delivery)
    CI의 빌드 자동화, 유닛 및 통합 테스트 수행 후, 이어지는 지속적 제공 프로세스에서는 유효한 코드를 리포지토리에 자동으로 릴리스한다. 그러므로 효과적인 지속적 제공 프로세스를 실현하기 위해서는 개발 파이프라인에 CI가 먼저 구축되어 있어야 한다. 지속적 제공의 목표는 프로덕션 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것이다.
  • 지속적인 배포(Continuous Deployment)
    지속적 배포는 실질적인 CI/CD 파이프라인의 마지막 단계를 의미한다. 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 릴리스하는 지속적 제공의 확장된 형태인 지속적 배포는 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화한다.

정리

😀위의 내용처럼 CI와 CD는 구분해서 따로설명할 수 있지만 CI/CD를 크게하나의 묶음으로 보게된다면, 배포의자동화를 의미할 수 있다.

CI/CD를 구현하면 소프트웨어 변경 사항이 발생하면 자동으로 빌드, 테스트, 패키징, 배포 등의 작업이 이루어지므로, 개발자가 수동으로 배포 과정을 수행하는 것보다 더욱 효율적이고 안정적으로 배포를 수행할 수 있을 것이다.


참고자료(출처)
Red hat 주제 CI/CD(Continuous Integration/Continuous Delivery)란?
Circleci Blog posting Continuous deployment without downtime
stnopsys CI CD

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글