CI/CD에 대해..

우진혁·2024년 5월 13일
0

Study

목록 보기
4/13

CI는 Continuous Integration 즉, 지속적인 통합이라는 의미입니다.

지속적인 통합이란,
어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어
공유 레포지토리에 통합히는 것을 의미한다.

CI가 필요한 환경에는 어떤 조건들이 있을까요?

  • 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
    -> 형상관리 툴(Git, SVN 등)

지속적으로 서비스해야 하는 어플리케이션이나 현재 개발 중인 어플리케이션은 기능 추가 시마다 commit 등을 날려 레포지토리(Repository)에 버전 업데이트가 필요힌데 다수의 개발자가 한 팀으로 작업할 경우 이 공유 레포지토리에 수많은 commit들이 쌓이게 되는데,거기에 기능별로 빌드/테스트/병합(Merge)까지 하려면 상당히 번거로울텐데 이런 상황에서 자동화된 빌드&테스트는 원천 소스코드의 충돌 등을 방어하는 이점을 가질수 있다.

이러한 CI의 핵심 목표는,
버그를 신속하게 찾아 해결하고,
소프트웨어의 품질을 개선하고,
새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있습니다.

CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어 입니다.
해석하자면, 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미.

Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것,
Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미합니다.
정리하자면, CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데,
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미합니다.

Agile 방법론이 적용될 경우, 서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있습니다.
이 때, 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support 하는 것이 CD라고 할 수 있다.

이는 서비스의 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결해 줌으로써, 배포에 이르기까지의 노력을 최소한으로 단축시켜 준다는 Benefit을 제공한다.

CI/CD는 지속적 통합(Continuous Integration) 및 지속적 제공/배포(Continuous Delivery/Deployment)를 의미하며, 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 합니다.

이렇게 연결된 두 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며, 개발 팀과 운영 팀이 DevOps 또는 SRE(사이트 신뢰성 엔지니어링)를 통해 애자일 방식으로 협력하여 이를 지원합니다.

일반적인 CI/CD 툴
CI/CD 툴은 팀이 개발, 배포, 테스트를 자동화하도록 지원합니다. 특히 통합(CI) 측면을 다루는 툴도 있고, 개발 및 배포(CD)를 관리하는 툴도 있으며, 지속적인 테스트 또는 관련 기능에 특화된 툴도 있습니다.

Jenkins: 단순 CI 서버에서 완전한 CD 허브까지 모든 것을 처리하도록 설계된 툴
Spinnaker: 멀티클라우드 환경을 위해 구축된 CD 플랫폼
GoCD: 모델링 및 시각화에 중점을 둔 CI/CD 서버
Concourse: "지속적인 오픈소스 작업 툴"
Screwdriver: CD용으로 설계된 빌드 플랫폼

또한 다양한 벤더가 제공하는 관리형 CI/CD 툴도 있습니다. 주요 퍼블릭 클라우드 공급업체는 모두 GitLab, CircleCI, Travis CI, Atlassian Bamboo 등과 함께 CI/CD 솔루션을 제공합니다.

뿐만 아니라 DevOps의 기본 툴은 CI/CD 프로세스에 속해 있을 가능성이 높습니다. 구성 자동화(예: Ansible, Chef, Puppet), 컨테이너 런타임(예: Docker, rkt, cri-o), 컨테이너 오케스트레이션(쿠버네티스)을 위한 툴은 엄밀하게는 CI/CD 툴이 아니지만 많은 CI/CD 워크플로우에 표시되어 있다.

이미지 및 내용 출처 : https://tech.osci.kr/cicd-architecture/

profile
개인 발전과 성장을 위한 정리노트

0개의 댓글