[SE] CI/CD

HyunDong Lee·2021년 3월 10일
0

SoftwareEngineering

목록 보기
1/3
post-thumbnail

CI/CD

애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합 -> 지속적인 서비스 제공 -> 지속적인 배포입니다.
사진출처

CI

Continuous Integration
지속적 통합
지속적인 통합은 현재 우리 팀이 프로젝트를 진행하려고 할 때 우려했던 부분을 정확히 겨냥한다. 소프트웨어를 개발할 때 하나의 애플리케이션을 만들기 위해서 세팅을 모두 맞춰야하는데 만약 로컬에서 맞추게되면 로컬에서의 세팅이 다를경우에 repository에 저장된 값을 다음에 내 로컬에 불러온 후 test를 해본다면 동작하지 않을 가능성이 높다. 즉 여러 개발자들이 동일한 애플리케이션의 각기 다른기능을 동시에 작업할 수 있도록 하는 것이 이상적인데 그렇지 못한 경우가 발생할 수 있는 것이다. 만약 모든 개발 환경을 동일하게 맞췄다고 가정해도 각 패키지 버전마다 차이가 있다면 문제가 발생한다. 모든 패키지까지 버전을 로컬 환경에 맞췄다고 가정하고 각자 다른 기능을 개발하고 병합하는 날을 정해서 분기 소스 코드를 병합하는 경우, 결과적으로 반복적인 수작업에 많은 시간이 소요된다. 이런 반복적인 수작업을 하는 이유는 같은 코드를 만약에 서로 다른 개발자가 작업을 한다고 가정한다면 충돌이 일어날 확률이 높다.
그러므로 CI를 통해 개발자들은 코드 변경 사항을 공유 브랜치 또는 "트렁크"로 다시 병합하는 작업을 더욱 수월하게 자주 수월하게 할 수 있다. 개발자가 애플리케이션에 적용한 변경 사항이 병합되면 이러한 변경 사항이 애플리케이션을 손상시키지 않도록 자동으로 애플리케이션을 구축하고 각기 다른 레벨의 자동화 테스트 실행을 통해 변경 사항이 애플리케이션에 제대로 적용되었는지를 확인합니다.

CD

Continuous Delivery/Continuous Deployment
지속적 제공
CI의 빌드 자동화와 유닛 및 통합 테스트 수행 후, 이어지는 지속적 제공 프로세스에서는 유효한 코드를 리포지토리(github)에 자동으로 릴리스한다.

지속적 배포
CI/CD 파이프라인의 마지막 단계는 지속적 배포이다. 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 릴리즈하는 지속적 제공의 확장된 형태인 지속적 배포는 애플리케이션을 프로덕션으로 릴리즈하는 작업을 자동화한다.

참고

0개의 댓글