[Server Basic] CI/CD 란 ? GitHub Action 사용하기
CI/CD란 ?
배포를 자동화하여 애플리케이션을 더욱 짧은 주기로 제공하느 방법이며, 기본적으로 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포를 개념으로 한다
새로 개발된 코드 통합으로 인한 통합지옥 (integration hell) 을 해결하기 위한 솔루션이다.
통합 지옥이란 ?
개발한 코드를 하나로 모아 빌드할 때의 어려움을 지옥에 빗대어 표현한 말로, 개발이 끝난 후 한 번에 통합할 때 장시간 소요되는 문제를 뜻한다.
CI/CD는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 모니터링을 제공하며, 이러한 구축 사례를 CI/CD 파이프라인 이라고 부른다.
애플리케이션 라이프 사이클이란 ?
애플리케이션 지정, 설계, 개발, 테스트 및 배포를 포함하여 전체 애플리케이션의 전체 수명 주기를 뜻한다.
ALM(Application Lifecycle Management) 애 대해 알아보기
CI/CD 파이프라인이란 ?
새 버전의 소프트웨어를 제공하기 위해 수행해야하는 일련의 단계를 의미한다. 통합 및 테스트 단계, 제공 및 배포 단계에서의 모니터링과 자동화를 도입함으로서 애플리케이션 개발 프로세스를 개선한다.
파이프라인 단계
빌드 → 테스트 → 릴리즈 → 배포 → 검증 및 컴플라이언스
(Build → Test → Realease → Deploy → Validation & Compliance)
CI ( Continuous Integration )
개발자를 위한 자동화 프로세스인 지속적인 통합을 의미
이를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통할 수 있게 된다. 여러 명의 개발자가 동시 개발작업을 진행할 때에 충돌 문제를 해결해주어, 여러 개발자들이 동일한 애플리케이션의 각기 다른 기능을 동시에 작업하도록 하는 것을 목표로 한다.
CD ( Continuous Delivery )
지속적인 서비스 제공 및 지속적인 배포 두가지 의미를 뜻하며 두 용어는 상호교환적으로 사용됨
지속적인 제공 ( Continuous Delivery )
지속적인 제공이란 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리에 자동으로 업로드 되는 것을 뜻하며, 프로덕션 환경으로 배포한 준비가 되어 있는 코드베이스를 확보하는 것을 목표로 함
* CI의 단계를 거친 후 유효한 코드를 레포지토리에 자동으로 릴리즈하는 것으로 효과 있는 지속적 제공 프로세스를 위해서는 CI가 먼저 구축되어 있어야 함
지속적인 배포 ( Continuous Deployment)
지속적인 배포란 개발자의 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미하며 수동 작업으로 인한 업무 프로세스 과부하를 해결함
* 프로덕션 이전의 파이프라인 단계에는 수동 작업 과정이 업식에, 지속적 배포를 제대로 이루어지게 하려면 테스트 자동화가 잘 설계되어 있어야 함