대규모 프로젝트일수록 시스템 관리자와 소프트웨어 개발자는
문서, 유지 관리 및 변경 제어 프로세스가 없을 때
(구성 관리가 없을 때)
서버에 무엇이 있으며, 어떤 소프트웨어가 업데이트되었는지 곧바로 알아차리기 힘듭니다.
만약 모든 변경 사항의 세부 정보를 기록하지 않는다고 가정한다면,
문제가 발생했을 때 원인을 찾고 해결하기 어려울 것입니다.
또한 동일한 환경을 구축하는 데에도 난항을 겪을 것입니다.
1. 구성 관리란?
소프트웨어 개발 및 CI/CD 컨텍스트에서
변경사항이 적용된 시기를 확인할 수 있도록
특정 인프라 설정의 세부 정보를 기록하는 것을 말합니다.
컴퓨터 시스템, 서버 및 소프트웨어를
원하는 상태로 일관되게 유지하는 프로세스입니다.
2. 필요성
구성 관리는
시스템에 다양한 변경사항이 적용되더라도, 시스템이 정상적으로 작동하도록 합니다.
CI/CD 파이프라인에는 소프트웨어를 테스트하고 스테이징하는 다양한 환경이 포함됩니다.
파이프라인과 테스트가 효과적으로 작동하려면,
사전 프로덕션 환경에서 프로덕션을 최대한 유사하게 복제하고,
실행한 테스트 간의 일관성을 유지해야 합니다.
구성 관리를 통해
버전 관리 시스템에 구성의 세부 정보를 저장하면,
변경 사항을 확인할 수 있으므로 문제가 발생할 때,
변경사항을 취소하거나 변경 사항을 다른 시스템에도 적용할 수 있어
보다 쉽게 일관성을 유지할 수 있습니다.
3. 유형(YAML, XML 과 코드형 인프라)
구성의 세부 정보를 YAML 또는 XML 파일과 같은 구조적 형식으로 저장할 수 있습니다.
이를 통해 구성 관리를 개선하고 서버 구성을 자동화할 수도 있습니다.
변경사항은 버전 관리 시스템에 커밋된 후 관련 환경에 자동 적용됩니다.
#yaml
server:
port: 8080
hostname: example.com
database:
name: name
username: user
#xml
<configuration>
<server>
<port>8080</port>
<hostname>example.com</hostname>
</server>
<database>
<name>name</name>
<username>user</username>
</database>
</configuration>
코드형 인프라의 접근 방식을 활용하면 가상 머신을 자동으로 제거하고 다시 생성할 수 있으므로,
배포 간 환경을 새롭게 구성하도록 CI/CD 파이프라인을 설정할 수 있습니다.
따라서 다양한 시스템을 처리할 수 있으며
테스트에 대한 수요가 증가할 때 환경을 간편하게 복제할 수 있습니다.
참고
https://www.redhat.com/en/topics/automation/what-is-configuration-management
https://www.jetbrains.com/ko-kr/teamcity/ci-cd-guide/concepts/configuration-management/
'Dictionary' 카테고리의 다른 글
JSON Web Tokens, JWT란? (3) | 2023.10.14 |
---|---|
클라우드의 서비스 제공 형태 XaaS, SaaS, PaaS, IaaS (0) | 2023.09.26 |
CI/CD 란? (0) | 2023.09.23 |
프록시(Proxy)란? (0) | 2023.09.20 |
스왑 공간, 스와핑, 스왑 파일, 스왑 파티션(Swap Space, Swapping, SwapFile, SwapPartition) (0) | 2023.09.08 |