A Comprehensive Introduction to CI/CD Pipelines
DEV Community
개발 프로세스의 혁신을 만들수 있는 CI/CD 파이프라인에 대한 포괄적인 소개입니다. 내용이 다소 기니 인내심을 갖고 일독하시길 추천합니다. :-)
🔥 CI/CD 정의
CI/CD는 소프트웨어 개발 프로세스를 최적화하는 데 도움이 되는 최신 개발 기술인 Continuous Integration(지속적인 통합), Continuous Delivery(지속적인 전달), Continuous Deployment(지속적인 배포)의 약자
CI/CD 프로세스는 여러 개발자의 코드 업데이트를 단일 코드베이스로 자동으로 통합하는 것 포함
CI/CD를 사용하면 팀은 코드에 대한 업데이트를 더 자주 일관되게 제공할 수 있으며 오류를 더 일찍 찾을 수 있으며, CI/CD 덕분에 코딩, 테스트 및 개발 절차가 간소화됨
🔥 CI/CD 개념
🍊 지속적 통합(Continuous Integration)
개념
개발자는 CI 개발 방법론의 일부로 코드 변경 사항을 공통/공유 저장소에 정기적으로 커밋. 커밋할 때마다 자동 빌드 절차가 트리거되고, 그런 다음 코드가 컴파일되어 일련의 자동화된 테스트에서 실행되어 오류를 조기 발견. 각 커밋은 CI 서버에서 자동화된 워크플로를 생성하고 CI 서버는 개발자에게 코드의 모든 문제를 통보
지속적인 통합 파이프라인은 코드 검토를 수행하고, 단위 테스트를 실행하고, 자동으로 빌드를 실행하고, 코드베이스에 커밋/병합이 있을 때마다 CI 파이프라인이 활성화되도록 구성
Jenkins 및 GitlabCI와 같은 인기 있는 CI 도구를 Git과 같은 버전 제어 시스템과 통합하여 CI 프로세스 자동화 가능
장점
개발자가 바로 입력을 받기 때문에 발생하는 문제를 즉시 수정할 수 있어 코드 충돌 가능성을 줄이는 데 도움
CI 프로세스에서 코드 품질을 검증할 때 정적 코드 분석은 코드의 품질을 확인하는 데 도움이 되고 정적 테스트가 통과되면 자동화된 CI 절차가 추가 테스트를 위해 코드를 컴파일하는 데 도움
🍊 지속적 전달(Continuous Delivery)
개념
지속적인 배포 프로세스에서 코드 릴리스는 사전 프로덕션 환경으로 자동화되어 공식적으로 배포되기 전에 개인적으로 코드를 테스트하고 검증.
이 프로세스 동안 리포지토리의 코드가 컴파일되고 빌드가 생성되어 테스트 진행 > 그런 다음 소프트웨어는 준비가 되면 자동으로 릴리스할 준비함
장점
부하 테스트, UI 테스트 등과 같은 일련의 테스트를 실행하여 사후 프로덕션의 놀라움을 방지하는 데 도움이 되며, 이는 사전에 결함을 해결하는 데 유용
지속적인 배포는 지속적인 통합과 함께 작동하여 애플리케이션의 릴리스 프로세스 자동화
🍊 지속적 배포(Continuous Delivery)
개념
자동화된 테스트를 통과한 코드 변경 사항이 사람의 개입 없이 자동으로 프로덕션 환경에 배포
이 단계에서 DevOps 팀이 코드 릴리스에 필요한 요구사항을 설정한 후, 해당 요구사항이 충족되면 코드가 프로덕션 환경에 배포
완전 자동화된 지속적 배포 프로세스
장점
지속적 통합, 전달, 배포의 전체 과정은 기업이 새로운 서비스를 신속하게 제공
예) 아마존은 하루에 125,000회 이상 지속적인 배포 진행하고 있음
🔥 CI/CD 파이프라인
개념
소프트웨어를 코드 커밋에서 최종 프로덕션 배포까지 자동으로 이동시키는 과정
앞서 설명한 지속적 통합, 지속적 전달, 지속적 배포의 자동화된 DevOps 워크플로우
장점
이러한 파이프라인은 CI/CD 프로세스의 기반이 되어 소프트웨어 개발, 테스트 및 배포 과정을 자동으로 조율하는 데 도움
🔥 CI/CD 워크플로
CI/CD 파이프라인에는 CI/CD 워크플로를 구성하는 일련의 단계/스테이지(소스-빌드-테스트-배포)가 포함됨.
🍊 소스
CI/CD 파이프라인 프로세스의 첫 번째 단계로, 소스 코드를 작성하는 단계
Git, Bitbucket 등의 버전 관리 시스템을 사용해 소스 코드 변경 사항 관리
코드에 변경이 이루어지고 저장소에 푸시되면 CI/CD 파이프라인이 ‘빌드’ 단계로 진행되도록 트리거 됨.
🍊 빌드
이 단계에서는 저장소에서 소스 코드를 가져와 컴파일하고, 실행 가능한 아티팩트(EXE 파일 등)를 생성
프로젝트 단계에 따라 빌드 빈도는 하루 한 번일 수도 있고 하루에 여러 번일 수도 있음
코드에 의존성 및 라이브러리가 결합되어 배포 가능한 빌드가 생성
🍊 테스트
통합 테스트, 기능 테스트, 회귀 테스트, 단위 테스트 등 일련의 자동화된 테스트를 실행하여 코드가 유효한지 확인하고, 문제를 해결하며 애플리케이션이 기대한 대로 작동하는지 확인
테스트 단계는 여러 테스트를 실행해야 하므로 파이프라인에서 가장 긴 단계 중 하나로 테스트 형식은 프로젝트의 특정 요구사항에 따라 달라짐. 테스트 중에 오류가 발견되면 개발자에게 통보되어 결과를 확인하고 이후 릴리스에서 수정 가능
🍊 배포
코드가 모든 필수 테스트를 통과한 후 배포 가능
테스트를 통과한 코드는 스테이징 또는 프로덕션 환경/서버에 배포 가능
지속적 전달에서는 코드가 저장소에 업로드되고, 인간의 승인을 거쳐 배포되거나 프로덕션으로 전환.
지속적 배포에서는 이 단계가 자동화됨
🔥 CI/CD 구현의 이점
CI/CD는 개발자가 수동으로 처리해야 할 작업을 자동화하는 데 도움
CI/CD는 모든 환경에서 동일한 구성을 사용하도록 하여 테스트 환경과 프로덕션 환경 간의 차이 가능성을 줄이고 일관성 보장
이 시스템은 개발 팀이 새로운 기능을 지속적으로 릴리스할 수 있게 하여 코드 커밋부터 프로덕션까지의 시간을 단축하고, 효율적인 소프트웨어 개발을 촉진. 또한 자동화된 프로세스이므로 개발자의 시간 절약
CI/CD는 반복적인 프로세스에서 사람의 개입을 줄여 인간 오류 가능성을 낮추며, 이로써 문제가 커지기 전에 작은 문제를 감지하여 코드 품질 높임.
CI/CD 파이프라인은 개발자가 창의적이거나 비전통적인 코딩 기법을 원래의 수동 소프트웨어 개발 프로세스보다 훨씬 낮은 위험으로 테스트 가능케 함
이 시스템은 개발자가 수동으로 작업할 때보다 더 효과적으로 협업 지원. 또한 빠른 배포 속도로 인해 회사의 경쟁력을 높이는 데 기여
🔥 CI/CD 및 DevOps
DevOps는 ‘개발(Development)’과 ‘운영(Operations)’의 결합으로, 코드 작성, 테스트, 릴리스를 작은 반복 단계로 수행하는 일련의 실천 방식 의미
DevOps 파이프라인의 기반은 CI/CD로, 이는 애플리케이션의 지속적인 개발, 통합, 테스트, 전달을 위한 자동화 및 신뢰성 제공
DevOps의 핵심 실천 중 하나가 바로 CI/CD
일반적인 DevOps 파이프라인 단계는 애플리케이션의 기능과 내용을 정의하여 계획하는 것에서 시작하여 > 애플리케이션의 코드 작성 > CI/CD를 통해 지속적 통합, 전달, 배포 단계 거침 > 애플리케이션을 모니터링하고 사용자 피드백을 받아 향후 릴리스 반영
CI/CD는 DevOps 프레임워크의 기본적인 실천사항 중 하나
CI/CD는 신뢰할 수 있는 소프트웨어 릴리스를 자동화하여 개발(Dev)과 운영(Ops) 간의 격차를 줄임으로써 팀워크, 생산성, 품질 향상이라는 DevOps의 목표 부합
source: https://dev.to/debtech/a-comprehensive-introduction-to-cicd-pipelines-4ijc?context=digest
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 11월 4일 오후 1:52