[CI/CD] CI/CD 란? - 이론편

gogori6565·2024년 7월 16일
0

Spring

목록 보기
5/7

CI/CD란 무엇일까?

CI/CD 란 간단하게 말해서, 어플리케이션 개발 단계부터 배포까지 모든 단계를 자동화를 통해 좀 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 하는 것을 의미한다.

  • CI (Continuous Integration) = 지속적인 통합
  • CD (Continuous Delivery) = 지속적인 제공 / (Continuous Deployment) = 지속적인 배포

CI (Continuous Integration) - 지속적인 통합

CI란, 코드 변경 사항을 공유 소스 코드 Repository에 자동으로 자주 통합하는 것을 말한다.

📌 CI의 주요 Point!

  1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다

  2. 통합을 위한 단계(Build, Test, Merge)의 자동화

  • 코드의 변경 사항들이 발생했을 때, 자동으로 애플리케이션을 빌드하고 다양한 수준의 자동화 테스트를 실행해 해당 변경 사항을 검증함

👉 장점) 개발 생산성 향상, 버그 수정 용이, 문제점 빠르게 발견, 코드의 퀄리티 향상


CD (Continuous Delivery/Deployment) - 지속적인 제공/배포

CD란, 지속적인 제공 혹은 배포로 두 용어는 상호 교환하여 사용된다.

지속적인 제공이란, CI에서 빌드와 단위 및 통합 테스트를 자동화한 다음 검증된 코드를 Repository로 릴리스하는 것을 자동화한다. (수동 배포)

지속적인 배포란, 지속적 제공의 확장으로 개발자의 변경 사항을 Repository에서 Production으로 릴리스하는 것을 자동화해 고객이 사용할 수 있도록 하는 것을 말한다. 즉, '배포'한다는 것이다. (자동 배포)

build, release, deploy, distribute 용어
  • build : 개발자가 작성해놓은 소스파일들을 컴퓨터나 휴대폰에서 실행시킬 수 있는 형태로 변경해주는 것이다.
    (윈도우의 경우 .exe 파일로 만드는 것이나, 테스트용 휴대폰에서 apk파일을 만드는 행위)

  • release : 같은 제품을 새롭게 만드는 것을 의미한다. 예를 들어, ip address를 release 한다는 말은 새로운 아이피 번호를 부여받는 의미이고, 제품에선 새로운 버전을 release 한다고 할 때 사용한다.

  • deploy : 프로그램 등을 서버와 같은 기기에 설치하여 작동가능하도록 만드는 일이다.

  • distribute : 제품을 사용자들이 사용할 수 있도록 서비스 등을 제공하는 의미로 사용한다.

👉 서비스 버전 n.n가 새롭게 release 되었고, 이를 서버에 deploy하여 사용자들이 사용할 수 있도록 distribute 하였다.


CI/CD 파이프라인 과정

CODE → BUILD → TEST → RELEASE → DEPLLOY

  1. 개발자가 작은 단위로 기능을 나눠 주기적으로 메인 Repository에 merge를 하면
  2. 자동으로 Build 하고
  3. Test 과정을 거쳐
  4. Release 준비를 하고
  5. (수동 혹은 자동으로) 최종 배포를 한다!

🧷 Docker와 CI/CD 파이프라인 구축 - 실습편

profile
p(´∇`)q

0개의 댓글