예전에 일하던 회사도 비슷했지만, 요즘엔 애플리케이션 개발 단계를 자동화하여 더욱 짮은 주기로 고객에게 제공하기를 원한다.
여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌하는 문제가 자주 발생하게 된다.
이문제를 해결하기 위해 지속적인 통합, 지속적인 배포 구현을 목표로 한다.
그렇다면 지속적인 통합, 지속적인 배포(CI/CD)가 무엇을 의미하는가.
지속적인 통합, 지속적인 배포(CI/CD)
소프트웨어 개발 과정에서 개발자들이 자주 변경하는 코드를 자동으로 빌드, 테스트, 배포하는 프로세스이다.
지속적인 통합(CI)은 개발자들이 변경한 코드를 주기적으로 빌드하고,
테스트하여 즉각적인 피드백을 받을 수 있도록 합니다.
이를 통해 코드 오류나 충돌을 빠르게 발견하고 수정하여 코드 품질을 향상할 수 있다.
지속적 배포(CD)은 코드 변경 사항이 테스트 및 검증을 거쳐 더욱 안정적인 상태에서 자동으로 배포되도록 하는 것이다.
이를 통해 소프트웨어 배포 시간과 오류 발생 확률을 줄일 수 있으며,
빠른 배포 및 개선이 가능하다.
CI/CD는 자동화된 테스트와 배포를 통해 개발과 운영 사이의 간극을 줄이고,
품질을 향상시키며,
소프트웨어 개발 및 배포의 효율성을 높이는데 중요한 역할을 한다.
이를 위해 CI/CD 파이프라인을 구축하여
개발 및 배포 프로세스를 자동화하고 지속적인 개선을 이루어나가는 것이 필요하다.
CI/CD는 지속적 통합 및 지속적 제공의 구축 사례만을 지칭할 때도 있지만,
지속적 통합, 지속적 제공, 지속적 배포라는 3가지 구축 사례 모두를 의미하는 것일 수도 있다.
좀 더 자세히 설명하면 "지속적인 서비스 제공"은 때로 지속적인 배포의 과정까지 포함하는 방식으로 사용되기도 한다.
결과적으로 CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미하고,
애플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.
이 용어는 사례별로 CI/CD 파이프라인에 구현된 자동화 수준 정도에 따라 그 의미가 달라진다.
CI의 장점은
- 코드의 검증에 들어가는 시간이 줄어들고
- 개발의 편의성이 증가하며
- 항상 테스트 코드를 통과한 코드만이 repository에 올라가기 때문에, 코드 퀄리티를 좋게 유지할 수 있다.
CD의 장점은
- 개발자는 배포보다는 개발에 더 포커스 할수 있도록 도와주고
- 개발자가 수작업이 없이 빌드, 테스트 배포까지의 자동화를 단순하게 할 수 있다.
reference: https://www.redhat.com/ko/topics/devops/what-is-ci-cd
'잡인터뷰' 카테고리의 다른 글
TDD는 무엇인가? - Test Driven Development (3) | 2023.03.15 |
---|---|
http와 https의 차이점 (1) | 2023.03.14 |
바이너리 서치 - Binary Search (2) | 2023.03.12 |
SOLID 원칙 (SOLID Principle) - 객체지향 디자인 (0) | 2023.03.11 |
잡 인터뷰 - 투포인터 알고리즘(Two Pointer Approach) (4) | 2023.03.10 |