1. 소프트웨어 형상관리(Configuration Management)의 개요
가. 형상관리의 개념
소프트웨어 개발 생명주기(SDLC) 전반에 걸쳐 생성되는 모든 산출물(코드, 문서, 데이터 등)의 변경 사항을 체계적으로 식별, 통제, 감사, 기록하는 품질 보증 활동입니다.
무분별한 변경으로 인한 혼란을 방지하고, 프로젝트의 가시성(Visibility)과 추적성(Traceability)을 확보하는 것이 주된 목적입니다.
나. 형상관리의 필요성
변경의 추적성 확보: 버그 발생 시 과거의 특정 시점(버전)으로 롤백(Rollback) 및 원인 추적 가능.
동시성(Concurrency) 제어: 다수의 개발자가 동일한 코드를 수정할 때 발생하는 충돌 방지.
무결성(Integrity) 보장: 승인되지 않은 변경을 차단하여 소프트웨어 품질 저하 방지.
2. 형상관리의 주요 활동 절차
형상관리는 계획 수립 이후 크게 4가지 핵심 통제 활동으로 수행됩니다.
| 활동 단계 | 세부 수행 내용 | 주요 산출물 및 기구 |
| 형상 식별 (Identification) | 관리 대상(Configuration Item; CI)을 선정하고 고유 식별자 부여 및 트리 구조 작성 | 형상관리 대장, CI 목록 |
| 형상 통제 (Control) | 변경 요청(CR)에 대한 영향도 분석 및 수용 여부 결정. 기준선 변경 승인 | CCB (형상통제위원회) |
| 형상 상태 보고 (Accounting) | 형상 항목의 현재 상태, 변경 내역, 승인 여부를 기록하고 관련자에게 공유 | 형상 상태 보고서 |
| 형상 감사 (Auditing) | 승인된 요구사항과 실제 산출물의 일치 여부 검증 및 무결성 확인 | 형상 감사 보고서 |
3. 형상관리 기준선(Baseline)의 개념과 특징
가. 기준선의 개념
소프트웨어 개발 과정의 특정 시점에서 공식적으로 검토 및 승인된 형상 항목(CI)들의 집합입니다.
이후의 개발 및 변경을 위한 논리적인 출발점(Reference Point) 역할을 수행합니다.
나. 기준선의 주요 특징
공식성: 개발자와 고객(또는 관리자) 간의 상호 합의된 공식 산출물입니다.
통제성: 한 번 수립된 기준선은 임의로 수정할 수 없으며, 반드시 CCB(형상통제위원회)의 공식적인 변경 통제 절차를 거쳐야만 변경 가능합니다.
진화성: 프로젝트 진행에 따라 새로운 기준선이 지속적으로 추가되고 구체화됩니다.
4. 소프트웨어 생명주기별 형상관리 기준선의 종류
개발 단계의 산출물 수준에 따라 다양한 기준선이 수립되며, 다음 단계의 작업 기반이 됩니다.
| 기준선 종류 | 수립 시점 및 대상 | 주요 목적 및 내용 |
| 기능 기준선 (Functional) | 요구사항 분석 단계 종료 후 | 시스템이 수행해야 할 기능 및 비기능 요구사항 승인 (요구사항 명세서) |
| 분배 기준선 (Allocated) | 시스템 설계 단계 종료 후 | 하드웨어, 소프트웨어 등 각 구성요소로 요구사항 할당 및 승인 |
| 설계 기준선 (Design) | 상세 설계 단계 종료 후 | 모듈 단위의 상세 설계 구조, 인터페이스 규격 확정 |
| 시험 기준선 (Test) | 구현 완료 및 통합 테스트 전 | 시스템 테스트를 수행하기 위해 완료된 소스 코드 및 테스트 케이스 확정 |
| 제품 기준선 (Product) | 개발 완료 및 릴리즈 시점 | 고객에게 인도할 최종 소프트웨어 제품 및 사용자 매뉴얼 승인 |
| 운영 기준선 (Operational) | 실제 운영 환경 배포 후 | 유지보수 단계에서의 기준점이며 패치 및 버전업의 대상 |
5. 기술사적 제언: 현대적 형상관리의 진화 및 적용 전략
과거의 형상관리가 문서 중심의 통제 위주였다면, 최신 IT 환경에서는 자동화와 애자일(Agile) 관점으로 진화하고 있습니다.
CI/CD 파이프라인 통합: Git, SVN 등의 형상관리 도구를 Jenkins, GitHub Actions 등과 연동하여, 코드 커밋(Commit)이 빌드 및 테스트로 즉시 이어지는 지속적 통합/지속적 배포(CI/CD) 체계를 내재화해야 합니다.
IaC(Infrastructure as Code) 도입: 애플리케이션 소스 코드뿐만 아니라, 클라우드 인프라 설정(Terraform, Ansible 등)까지 코드로 작성하여 형상관리 대상(CI)에 포함시킴으로써 인프라의 추적성도 확보해야 합니다.
마이크로서비스(MSA) 환경의 분산 형상관리: 서비스가 독립적으로 배포되는 MSA 환경에서는 중앙집중형 통제보다는 분산된 리포지토리(Repository) 전략과 컨테이너 이미지(Docker 등) 버전 관리를 통한 유연한 형상통제 정책이 필수적입니다.
결론적으로 기술사는 형상관리를 개발 속도를 저해하는 규제로 볼 것이 아니라, 안정성을 담보하여 릴리즈 주기를 단축시키는 **DevOps의 핵심 기반(Enabler)**으로 아키텍처에 설계해야 합니다.
댓글 없음:
댓글 쓰기