소스 코드 형상관리(Source Code Configuration Management)
문제
소스 코드 형상관리(Source Code Configuration Management) 업무 프로세스를 설정(Setup)하고 형상 통제(Configuration Control) 업무 흐름도(Work Flow)에 대하여 설명하시오.
답변
1. 소스 코드 형상관리(SCM)의 개념
개념
- 소스 코드 형상관리(SCM: Source Code Configuration Management)는 소프트웨어 개발 과정에서 생성되는 소스 코드 및 관련 산출물의 변경사항을 체계적으로 추적, 관리하는 활동
- 소프트웨어 개발 생명주기 전반에 걸쳐 일관성과 무결성을 보장하는 기법
목적
- 소스 코드의 버전 관리 및 이력 추적
- 개발자 간 협업 지원 및 충돌 방지
- 릴리스 관리 및 배포 프로세스 최적화
- 소프트웨어 품질 보증 및 감사 지원
- 개발 비용 절감 및 생산성 향상
2. 소스 코드 형상관리 업무 프로세스 설정(Setup)
1) SCM 환경 구축
-
저장소(Repository) 설정
- 중앙집중식(Centralized) 또는 분산형(Distributed) 저장소 구축
- 접근 권한 및 보안 정책 수립
- 백업 및 복구 전략 수립
-
형상관리 도구 선정 및 구축
- 프로젝트 특성에 맞는 도구 선정(Git, SVN, Mercurial 등)
- 빌드 자동화 도구(Jenkins, TeamCity 등) 연동
- 이슈 추적 시스템(Jira, Redmine 등) 연동
2) 형상 식별(Configuration Identification)
-
형상 항목 식별
- 소스 코드, 라이브러리, 설정 파일, 문서 등 관리 대상 정의
- 구성 요소별 식별자(ID) 체계 수립
-
디렉토리 구조 설계
- 프로젝트 구조화 방식 정의
- 브랜치 전략 수립(Git-Flow, GitHub-Flow 등)
- 태그(Tag) 및 레이블(Label) 체계 수립
3) 접근 제어 및 권한 관리
-
역할 기반 접근 제어(RBAC) 설정
- 개발자, 리뷰어, 관리자, 릴리스 담당자 등 역할 정의
- 역할별 권한 매트릭스 설정
-
환경별 분리
- 개발(Development), 테스트(Test), 스테이징(Staging), 운영(Production) 환경 분리
- 환경별 접근 제어 정책 수립
4) 프로세스 및 워크플로우 정의
-
개발 워크플로우 설정
- 코드 작성 및 커밋 규칙
- 브랜치 생성 및 병합 전략
- 코드 리뷰 프로세스
- 테스트 및 빌드 자동화 체계
-
릴리스 관리 프로세스 정의
- 릴리스 계획 및 일정 관리
- 버전 번호 체계(Semantic Versioning 등) 수립
- 릴리스 노트 작성 규칙
3. 형상 통제(Configuration Control) 업무 흐름도(Work Flow)
1) 기본 형상 통제 워크플로우
[변경 요청] → [변경 평가] → [변경 승인] → [개발 작업] → [코드 리뷰] → [테스트] → [형상 통합] → [릴리스]
2) 상세 워크플로우 단계
1. 변경 요청(Change Request)
- 기능 추가, 버그 수정 등 변경 요구사항 식별
- 이슈 추적 시스템에 변경 요청 등록
- 요구사항 명세 및 관련 문서 작성
2. 변경 평가(Change Evaluation)
- 변경 요청 검토 및 우선순위 지정
- 영향도 분석 및 리소스 할당
- 일정 및 비용 검토
3. 변경 승인(Change Approval)
- 형상통제위원회(CCB: Configuration Control Board) 또는 책임자 승인
- 변경 작업 일정 확정
- 작업 담당자 배정
4. 개발 작업(Development)
- 작업 브랜치 생성(Feature Branch)
- 코드 작성 및 단위 테스트
- 커밋 메시지 작성 규칙 준수
- 지속적 통합(CI) 수행
5. 코드 리뷰(Code Review)
- 풀 리퀘스트(Pull Request) 또는 머지 리퀘스트(Merge Request) 생성
- 코드 품질 검증(정적 분석, 코딩 표준 준수)
- 피어 리뷰(Peer Review) 수행
- 리뷰 의견 반영 및 수정
6. 테스트(Testing)
- 자동화된 테스트 수행(단위/통합/시스템 테스트)
- 회귀 테스트(Regression Testing)
- 테스트 결과 문서화
7. 형상 통합(Integration)
- 작업 브랜치를 메인 브랜치(Main/Master)에 병합
- 통합 테스트 수행
- 빌드 검증
8. 릴리스(Release)
- 릴리스 브랜치 생성
- 버전 태그 지정
- 릴리스 노트 작성
- 산출물 배포
3) Git 기반 형상 통제 워크플로우 예시
Git-Flow 모델

-
Feature 개발 흐름
[develop 브랜치] → [feature 브랜치 생성] → [코드 개발] → [코드 리뷰] → [develop 브랜치에 병합]
-
릴리스 흐름
[develop 브랜치] → [release 브랜치 생성] → [버그 수정] → [master 및 develop 브랜치에 병합] → [버전 태그 지정]
-
긴급 수정(Hotfix) 흐름
[master 브랜치] → [hotfix 브랜치 생성] → [버그 수정] → [master 및 develop 브랜치에 병합] → [버전 태그 지정]
4. 형상관리 도구 비교
| 도구 | 유형 | 주요 특징 | 장점 | 단점 |
|---|
| Git | 분산형 | 브랜치 관리 용이, 오프라인 작업 가능 | 속도 빠름, 병렬 개발 용이 | 학습 곡선 높음, 대용량 파일 관리 어려움 |
| SVN | 중앙집중식 | 단순한 구조, 부분 체크아웃 지원 | 직관적인 사용법, 접근 제어 용이 | 브랜치/병합 복잡, 오프라인 작업 제한 |
| Mercurial | 분산형 | 직관적 인터페이스, 확장성 | 사용 편의성, 성능 우수 | Git 대비 생태계 작음 |
| Perforce | 중앙집중식 | 대용량 파일 처리, 세밀한 권한 제어 | 엔터프라이즈급 성능, 안정성 | 비용 높음, 복잡한 설정 |
5. 형상관리 자동화 및 CI/CD 연계
CI/CD 파이프라인과 형상관리 연계
- 코드 커밋 시 자동 빌드 및 테스트
- 지속적 통합(CI) 및 지속적 배포(CD) 자동화
- 코드 품질 분석 도구 연동(SonarQube 등)
- 배포 파이프라인 구성
형상관리 지표 및 모니터링
- 커밋 빈도 및 코드 변경 볼륨
- 브랜치 수명 및 병합 시간
- 빌드 성공률 및 테스트 커버리지
- 릴리스 주기 및 안정성
6. 핵심 용어 정리
- 저장소(Repository): 소스 코드 및 관련 파일을 저장하는 중앙 저장소
- 브랜치(Branch): 메인 개발 라인에서 분기된 독립적인 개발 라인
- 커밋(Commit): 소스 코드의 변경사항을 저장소에 기록하는 작업
- 병합(Merge): 서로 다른 브랜치의 변경사항을 하나로 통합하는 작업
- 태그(Tag): 특정 커밋에 부여된 의미 있는 이름(주로 릴리스 버전)
- 체크아웃(Checkout): 특정 버전의 소스 코드를 작업 공간으로 가져오는 작업
- 형상 통제 위원회(CCB): 변경 요청을 검토하고 승인하는 공식 조직
7. 어린이 버전 요약
소스 코드 형상관리는 "디지털 타임머신"과 같습니다. 코드의 모든 변경 사항을 기록하고, 필요할 때 과거 버전으로 돌아갈 수 있게 해줍니다. 여러 사람이 함께 작업할 때 서로의 작업이 섞이지 않도록 도와주는 교통정리 역할도 합니다.
형상 통제 업무 흐름도는 "코드의 여행 지도"입니다. 코드가 아이디어에서 시작해 테스트를 거쳐 최종 제품에 포함되기까지의 여정을 보여줍니다. 이 지도를 따라가면 코드의 품질을 유지하고 여러 개발자가 충돌 없이 작업할 수 있습니다.