CI/CD 알아보기
CI/CD란 ?
CI/CD의 "CI"는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다.
CI/CD의 "CD"는 지속적인 서비스 제공 및/또는 지속적인 배포를 의미한다.
즉, CI/CD는 소프트웨어 개발 및 배포 프로세스를 자동화하여 개발자들이 소프트웨어를 더 빠르고 안정적으로 제공할 수 있게 해주는 방법이다.
지속적 통합(Continuous Integration, CI)
지속적 통합으로 보안 이슈, 에러 등을 쉽게 파악할 수 있어 해당 이슈를 빠르게 개선할 수 있다.
- Code - Build - Test 단계
- Code : 개발자가 코드를 원격 코드 저장소에 push하는 단계
- Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계
- Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인하는 과정
지속적 배포(Continuous Delivery/Deployment, CD)
제품 출시가 신속하고 안정적이며 사용자 피드백을 반영하여 지속적으로 개선할 수 있다.
- 지속적 배포의 경우, 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계로, 테스트 자동화와 코드 배포 자동화가 포함된다.
- Release - Deploy - Operate 단계
- Release : 배포 가능한 소프트웨어 패키지를 작성
- Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출합니다. (실질적인 배포 부분)
- Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지
대표적 지속적 배포 사례 : Github Page가 있다.
배포 자동화란 ?
- 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.
- 배포 자동화가 필요한 이유 :
- 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨
- 휴먼 에러를 방지할 수 있음
- 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수를 뜻함
빠른 배포 속도를 보장받는 방법 ?
- 수없이 진행되는 배포 과정을 자동화 시키는 방법 : CI/CD 파이프라인
CI/CD 파이프라인
배포에서 파이프라인이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻한다.
파이프라인은 전체 배포 과정을 여러 단계로 분리되고, 각 단계는 파이프 라인 안에서 순차적으로 실행,주어진 작업들을 수행한다.
파이프라인 대표적 세가지 단계
- Source 단계: Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행
- Build 단계: Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공합니다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행
- Deploy 단계: Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행
CI/CD 파이프라인 구성 요소 및 장점
- 빌드 (소프트웨어 컴파일)
- 테스트 (호환성 및 오류 검사)
- 릴리스 (버전 제어 저장소의 애플리케이션 업데이트)
- 배포 (개발에서 프로덕션 환경으로의 변환)
- 규정 준수 및 유효성 검사
CI/CD 구현
CI/CD를 구현하기 위해서는 다양한 도구와 워크플로우를 활용한다.
대표적인 CI/CD 도구로는 Jenkins, Travis CI, CircleCI, GitLab CI/CD 등이 있다.
- 이러한 도구는 소스 코드의 자동 빌드, 테스트, 배포, 모니터링 등을 지원하여 CI/CD 파이프라인을 구축하고 실행할 수 있다.
CI/CD를 효과적으로 활용하려면 ?
- 코드 품질 관리, 테스트 커버리지, 로그 및 모니터링, 오류 처리 및 롤백 전략 등에 대한 이해도가 필요
- 팀 협업과 소프트웨어 개발 프로세스에 대한 이해도가 높아야 함
'Front end > 개발 지식' 카테고리의 다른 글
[ Proxy ] CORS Error를 React에서 해결하는 방법 (0) | 2023.06.08 |
---|---|
[ 네트워크 ] HTTP / HTTPS 특징 (0) | 2023.05.07 |
[네트워크] 심화 알아보기 (0) | 2023.05.06 |
[사용자 친화 웹] 웹 표준 & 접근성 (0) | 2023.05.04 |
[ UI / UX ] 와이어프레임 & 프로토타입 (0) | 2023.04.15 |