CI/CD

이현섭·2023년 7월 2일
0

CI/CD

1. CI/CD 란 ?

어플리케이션 개발 단계부터 배포 때까지 이 모든 단계들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것을 의미.

지속적으로 코드를 합치고 코드를 배포.

CI : Continuous Integration 지속적인 통합
CD : Continuous Delivery 지속적인 제공 or Continous Deployment 지속적인 배포

CI Continuous Integration 지속적인 통합

  1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다.
  2. 통합을 위한 단계(빌드, 테스트, 머지) 의 자동화

장점 : 개발 생산성 향상, 문제점을 빠르게 발견, 버그 수정 용이, 코드의 퀼리티 향상.

CI/CD 파이프라인

CI/CD 를 위한 다양한 tool

Jenkins Buildkite
GitHub Actions ...

2. 왜 필요할까?

혼자가 아닌 수많은 개발자가 코드를 합치고 배포를 계속해서 시스템 없이 수동으로 한다면 아래와 같은 일들이 발생

A개발자 배포 => B개발자 환경에서 안됨.

여러 명의 개발자가 동시에 개발을 하게 될 것이고 이는 앞과 같은 문제가 발생하게 되는데 이를 수동으로 하나하나 해결할 수는 없음.

=> CI/CD 라는 개념이 도래했고 이를 쉽게 해주는 툴 등이 등장.

파이프라인

코드 구축부터 시작해서 배포까지의 일련의 과정들을 CI/CD 파이프라인이라고 함.

총 3가지의 단계로 구성됨.

  1. Continuous Integration : 코드를 빌드하고 테스트하고 합침.

  2. Continuous Delivery : 해당 레퍼지토리에 릴리스.

  3. Continuous Deployment : 이를 프로덕션, 즉 실제 서비스에 배포.

파이프라인이 주는 장점은 코드배포까지 좀 더 체계적으로 만드는 점과 테스트가 강제된다는 점.
파이프라인 자체내에 테스트가 있기 때문에 테스트 없으면 코드 머지자체가 안되게 만들 수 있음.

테스트

테스트는 함수 등 작은 단위를 테스팅하는 단위테스트.
모듈을 통합할 때 테스트하는 통합테스트.
사용자가 서비스를 사용하는 상황을 가정해서 테스트하는 엔드투엔드테스트.

배포

배포는 그저 사용자를 위한 서비스를 배포할 수도 있다고 생각할 수 있지만,
그뿐만이 아닌 내부적으로 QA엔지니어나 관리자페이지를 위한 배포, 데이터웨어하우스로부터 데이터를 가공해서 백엔드개발자를 위한 배포 등을 포함.

출처 :
https://www.youtube.com/watch?v=0Emq5FypiMM
https://www.youtube.com/watch?v=KTHZyV9yJGY

profile
안녕하세요. 프론트엔드 개발자 이현섭입니다.

0개의 댓글