
CI/CD 파이프라인
계획(Plan):
애자일의 작업방식을 결합하여 계획하는 단계코드(Code):
적절한 샌드박스화 및 프레임워크에 초점을 맞추는 단계빌드(Build):
애플리케이션을 컴파일하는 단계테스트(Test):
코드를 테스트하는 단계. 이 단계를 자동화하여 시간과 수고를 줄일 수 있다.릴리스(Release):
애플리케이션을 리포지토리에 제공하는 단계배포(Deploy):
코드를 프로덕션에 배포하는 단계작동(opetate):
코드가 활성화되면서 발생하고 모니터링과 조정으로 하는 단계
애플리케이션 개발 단계
코드-테스트-빌드-배포-버그
샌드박스:
외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안 형태
CI/CD 파이프라인을 구축하면서 사용자에게 제대로 작동하는 소프트웨어를 자주 빠르게 제공함으로, 변경사항을 자주 전달할 수 있고, 그로인해 개발의 효율성이 올라간다
EX) 만약에 2명의 개발자가 서로 다른 코드들을 오랜기간 작성을 하고 변경을 하면서 이제 나중에 합치려고(merge) 하면 서로 다른 코들들을 어떻게 통합해서 적용해 나갈껀지 고생을 많이한다. 이렇게 되면 새로운 기능을 개발하기 위해서 코드를 작성하는 시간보다 이 merge 충돌을 해결하기 위해서 더 많은 시간을 투자해야 할지도 모른다 때문에 CI/CD 방식을 활용해 개발할 기능을 작은단위로 나눠서 적용시키는 방식을 하는 것이 좋다.
여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트하는 것을 의미. 만약 CI를 성공적으로 구현할 경우, 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레파지토리에 통합된다, 따라서 여러명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결해 개발 생산성 향상에 도움이 된다.
지속적 통합의 실행은 소스/버전 관리 시스템에 대한 변경 사항을 정기적으로 커밋하여 모든 사람에게 동일 작업 기반을 제공하는 것으로 시작한다. 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장하기 때문에 코드의 결함이나 문제점을 빠르게 발견하고 수정할 수 있다.
소프트웨어 개발 프로젝트가 분석,설계 -> 코드 -> 테스트 -> 배포 사이클을 도는데 이 싸이클을 짧은 주기로 빡빡 올려서 빠르게 자동화 시키고 빠르게 개선을 하자는 컨셉
개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레파지토리에 자동으로 업로드되는 것을 의미,운영팀이 보다 빠르고 손쉽게 애플리케이션을 프로덕션으로 배포가 가능하고, 이는 개발팀과 비즈니스팀 간의 커뮤니케이션 부족 문제를 해결해준다, Continuous Delivery는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
개발자의 변경 사항을 레파지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미, 이는 애플리케이션 제공을 수동으로 하는 운영팀의 프로세스 과부하를 해결한다, Continuous Deployment는 파이프라인에 배포 단계를 자동화 함으로 지속적인 제공이 가진 장점을 활용한다.
한마디로 Continuous Delivery는 코드부터 개발환경까지는 자동으로 가게 하고 그 다음에 운영환경으로 가기전에 수동으로 버튼을 누를 수 있게 해주는 것을 뜻하고
Continuous Deployment 아에 한 번에 운영환경까지 보내버리는 것을 뜻한다
<출처>
[CI/CD] CI/CD란?
CI/CD 장점은?
The 8 Phases of Continuous Integration & Continuous Delivery