열심히 개발을 하고 있는 도중에 CI/CD 에 대한 내용이 들려왔습니다. 일을 시작한 이후 처음 들어보는 단어라 공부 겸 정리하는 느낌으로 CI/CD 에 대해 알아보도록 하겠습니다.
0. CI/CD 란
○CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다.
○지속적인 통합, 지속적인 서비스 제공, 지속적인 배포를 가능하게 한다.
○새로운 코드의 통합으로 인하여 개발 및 운영팀에 발생하는 문제를 해결하는 솔루션이다.
1. CI/CD 나오게 된 이유
전통적인 코드 관리 및 배포 단계는 다음과 같다.
- Version Control : 코드를 생산하고 형상관리 도구에 커밋한다.
- Acceptance Test : PR(Pull Request), 코드 리뷰 등을 통해 소스 코드를 통합하고 테스트한다
- Release : 통합된 소스코드를 바탕으로 제품을 만들어 내보낸다.
각 단계를 보면 별 문제가 없어보일 수 있으나, 코드가 많아지고 모듈이 다양하지는 순간 박살나는 부분이 생기기 시작한다. 우리( 개발자) 는 보편적으로 생산에 익숙하고 서비스 운영에는 취약하다. 따라서 이러한 부분을 자동화하는 툴이 필요한 것이고 이게 바로 CI/CD 이다.
2. CI/CD 정의
2.1 CI (Continuous Integration), 지속적인 통합
○ Build & Packaging
○ 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 병합되는 것이다.
○ Build, Test를 실시하는 프로세스를 말하며 이러한 통합 프로세스를 상시로 실시하는 것이다.
○ 다수의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우, 서로 충돌할 수 있는 문제를 해결하기 위함이다.
○ 언제든 최신 Build를 고객에게 바로 제공 가능하게 한다.
2.2 CD (Continuous Delivery) & (Continuous Deployment), 지속적인 배포
○ Deployment
○ 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것이다.
○ 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것이다.
○ 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포된다.
○ 개발팀과 운영팀의 커뮤니테이션 부족 문제를 해결한다.
3. CI/CD 장점
CI/CD 방법론을 적용함으로써 다음과 같은 이점을 얻을 수 있다.
○ 모든 분기의 소스 코드를 병합하는 경우, 결과적으로 반복적인 수작업에 많은 시간이 소요된다.
○ 병합하는 수작업을 하지 않는다면, 개발자가 애플리케이션에 변경 사항을 적용할 때 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 수 있다.
○ 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 더욱 빠르게 자주 수정할 수 있다.
○ 여러 사람이 작성한 코드가 병합되었을 때 생기는 문제를 미리 감지한다.
○ System과 Application을 최대한 최신 상태로 유지할 수 있다.
'개발 > 개발지식' 카테고리의 다른 글
[크롬] 유튜브 무한 로딩 및 느려짐 해결방법 (8) | 2020.10.15 |
---|---|
[자바스크립트] 모던 자바스크립트 개발을 위한 ES6 강좌 후기 (0) | 2020.10.14 |
Build Tool ( 빌드 도구 : Ant, Maven, Gradle ) 에 대해서 (0) | 2020.05.24 |
컴포넌트, 인터페이스, 라이브러리에 대하여 (0) | 2020.05.24 |
[크롬] 구글 크롬 파일 첨부 시 닫힘 현상 해결 방법 (0) | 2019.06.06 |
댓글