구성 관리란?

소프트웨어 개발 및 CI/CD 컨텍스트에서 구성 관리는 변경 사항이 추가된 시기를 확인할 수 있도록 특정 인프라 설정의 세부 정보를 기록하는 것을 의미합니다.

CI/CD 파이프라인에는 릴리스에 앞서 소프트웨어를 테스트하고 스테이징하는 다양한 환경이 포함됩니다. 파이프라인과 테스트가 효과적으로 작동하려면 사전 프로덕션 환경에서 프로덕션을 최대한 가깝게 복제하고 실행한 테스트 간의 일관성을 유지해야 합니다.

이러한 목표를 달성하기 위해 환경을 호스팅할 일련의 물리적 또는 가상 머신을 설정할 수 있습니다. 그러나 시간이 지나며 패치가 적용되거나 새로운 패키지가 설치거나, 특정 문제의 해결을 위해 네트워크 설정이 변경된 경우 서버가 다양한 방식으로 기존 설정과 달라지기 시작합니다.

그 결과는 연속된 눈송이 서버입니다. 설상가상으로 모든 변경 사항의 세부 정보가 기록되어 있지 않다고 가정해 보세요. 이 경우 서버 장애가 발생하거나 대규모 테스트 작업을 위해 서버를 복제해야 할 때 동일한 환경을 다시 구성하기가 훨씬 어렵습니다. 구성 관리는 이러한 문제를 해결하기 위한 조치입니다.

버전 관리 시스템에 구성의 세부 정보를 저장하면, 변경 사항을 확인할 수 있으므로 문제가 발생할 때 변경 사항을 취소하거나 변경 사항을 다른 시스템에도 적용할 수 있어 보다 쉽게 일관성을 유지할 수 있습니다.

구성의 세부 정보를 YAML 또는 XML 파일과 같은 구조적 형식으로 저장하면 구성 관리를 개선하고 서버 구성을 자동화할 수도 있습니다.

변경 사항은 버전 관리 시스템에 커밋된 후 관련 환경에 자동 적용됩니다.

코드형 인프라의 접근 방식을 활용하면 가상 머신을 자동으로 제거하고 다시 생성할 수 있으므로, 배포 간 환경을 새롭게 구성하도록 CI/CD 파이프라인을 설정할 수 있습니다. 따라서 다양한 시스템을 처리할 수 있으며 테스트에 대한 수요가 증가할 때 간편하게 환경을 복제할 수 있습니다.

컨테이너를 사용하여 소프트웨어를 배포할 경우 소프트웨어 종속성 등의 일부 구성 요소가 컨테이너 이미지로 이동합니다. 그럼에도 컨테이너 호스팅 서버를 구성은 필요하며, 환경 생성을 코드로 구성하고 자동화하는 데 여전히 많은 이점이 있습니다.