⚠️ 이 포스팅은 드림코딩을 공부하고 정리한 블로그 포스팅입니다. ⚠️
포스팅에 해당하는 목차는 다음과 같습니다:
CI/CD란?
어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 소프트웨어 제품으로 출시, 업데이트 할것인가를 해결하기 위해 탄생한 방법. 어플리케이션 개발에서 배포까지 모든 단계를 자동화해서 더 효율적이고 빠르게 배포할 수 있도록 하는 방법을 CI/CD라고 한다.
CI (Continuous Integration: 지속적 통합)
정의
코드가 메인 리포에 주기적으로 빌드, 테스트, 머지되는 것
지속적 통합의 두가지 포인트
1. 코드 변경사항을 주기적으로 머지해야한다
만약 코드를 주기적으로 머지하지 않는다면 개발자 A와 개발자 B의 코드 격차가 너무 심해져 코드의 충돌이 일어날 확률이 높아진다. 새로운 기능을 개발하는 시간보다 충돌을 해결하는 시간이 더 걸릴 가능성이 있다.
2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
통합을 위한 단계인 빌드, 테스트, 머지를 자동화해준다. 개발자가 PR을 날리면 코드 리뷰 후 리포에 머지가 된다. 팀에서 만든 CI 서버에 CI Script를 통해서 해당 리포가 자동 빌드된다. Unit Test, Integration Test등 여러가지 테스트들도 CI Script를 통해서 실행된다.
CI의 원칙을 따랐을때 장점
- 주기적으로 머지를 하기 때문에 코드 충돌을 피할 수 있어 개발 생산성 향상된다
- 머지되는 모든 코드들은 자동으로 빌드되고 테스트되기 때문에 코드의 결함이나 문제점이 빠르게 발견될 수 있다
- 버그 수정이 용이하다
- Unit Test를 통과해야되기 때문에 코드 퀄리티가 높아진다
CD (Continuous Delivery: 지속적 제공 / Continuous Deployment: 지속적 배포)
정의
CI로 머지된 코드를 자동화해서 배포하는 단계
CI/CD의 순서
- CI를 통해서 머지된 코드가 자동으로 빌드되고 테스트가 된다
- 배포단계에서 릴리즈할 준비과정을 거친다
- 개발자 또는 검증팀이 머지된 코드를 확인한다
- 사용자에게 배포해도되겠다라고 결정이되면 수동적/자동적으로 배포한다
2번부터 4번까지 자동화를 한것이 CD이다.
CI/CD를 도입한 개발 과정 정리
- CODE: 개발자가 작은 단위로 기능을 나눠 주기적으로 메인 리포에 머지를 한다
- BUILD: 자동으로 빌드를 한다
- TEST: 테스트 과정을 거친다
- RELEASE: 릴리즈 준비를 한다
- DEPLOY: 수동 또는 자동으로 최종 배포를 거친다
CI/CD 자동 툴 종류
- Jenkins
- Buildkite
- GitHub Actions
- Bitbucket Pipielines
- GitLab CI/CD
- circleci
'웹개발 · IT 지식' 카테고리의 다른 글
| [한줄정리/웹개발] E2E 테스팅이란? (0) | 2022.11.27 |
|---|---|
| [웹개발] 드림코딩 노트정리: Test와 TDD (0) | 2022.11.27 |
| [웹개발] 프론트앤드에서 성능 최적화란? (0) | 2022.11.25 |
| [웹개발] CORS & SOP (0) | 2022.11.25 |
| [한줄정리/웹개발] 자바스크립트에서 스코프(Scope)란? (0) | 2022.11.22 |
댓글