제품 소프트웨어 버전 관리
01. 제품 소프트웨어 버전 관리
1) 제품 소프트웨어 버전 관리의 개념
- 코드와 라이브러리, 관련 문서 등 시간에 따른 변경을 관리하는 전체 활동
- 제품 소프트웨어 버전 관리는 개발자들이 프로그램을 개정한 사항들을 추적하는데 사용되는 데이터베이스를 제공함
- 동일한 소프트웨어에 대한 여러 형태의 프로그램을 관리하는 것
- 버전 관리는 형상 관리를 포함하는 관리
2) 제품 소프트웨어 버전 관리 항목
- 버전 관리와 관련하여 버전 등록 및 갱신, 수정 등을 통해 버전을 관리함
버전 관리 항목 | 설명 |
---|---|
가져오기(Import) | 버전을 관리하지 않은 로컬 디렉터리 파일을 처음으로 저장소에 복사 |
체크아웃(Checkout) | 저장소에 파일을 받음 |
체크인(Checkin) | 저장소에 새로운 버전으로 갱신 |
완료(Commit) | 체크인 중에 이전 갱신 사항이 있는 경우 충돌을 알림 |
저장소(Repository) | 파일의 현재 버전과 변경 이력 정보를 저장하는 저장소 |
3) 작업 단계별 버전 등록 기법
- 최종 인증받은 패키징 버전에 한하여 제품 소프트웨어 저장소에 등록
- 등록된 제품 소프트웨어 저장소는 권한을 부여받은 사용자만 사용할 수 있음
- 기존에 구현되고 등록되어 있는 제품 소프트웨어 버전 관리가 무엇보다도 중요함
4) 제품 소프트웨어 저장소(Repository)
- 인증을 받은 제품 소프트웨어를 등록하는 저장소로서 사용자는 저장소를 통하여 제품 소프트웨어를 이용할 수 있음
- 제품 소프트웨어 저장소는 최신 버전을 유지하고 있어야 함
- 제품 소프트웨어의 버전별 상태를 유지하고 관리함으로써 사용자가 쉽게 이용할 수 있도록 함
- 버전 등록 시 이전 버전과 새로 등록하고자 하는 버전이 통합적으로 버전 관리가 되고 있는가가 중요함
- 버전 등록 시 여러 부분을 체크할 수 있어야 함
- 체크 리스트를 만들어 모든 사용자가 공유할 수 있도록 함
02. 제품 소프트웨어 버전 관리 도구
1) 제품 소프트웨어 버전 관리 도구의 개념
- 형상 관리를 포함하여 관리하는 도구
- 형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 내역을 관리하는 도구
- 버전 관리 도구를 활용하여 제품 소프트웨어의 버전과 변경, 개선 내역을 관리함
- 제품 소프트웨어의 버전 관리 도구를 통해 실무에서는 다양한 방향으로 버전 관리를 함
2) 버전 관리 도구 도입
- 제품 소프트웨어 최종 배포본만 관리
- 최종 배포본 이후의 사용자 지원에 따른 버전 관리가 어려울 경우에 도입
- 변경 관리, 추가 버전 등의 이유로 버전 관리를 검토해야 하는 경우에 도입
- 고객 지원팀의 경우 수작업 소요
- 최종 배포 이후 고객 지원팀은 직접 문의에 대한 수작업 기술 지원이 많은 부분을 차지하는 경우에 도입
- 수작업 및 유지보수 개선 관점에서의 버전 관리 검토가 필요한 경우에 도입
- 예산 및 비용에 대한 부담
- 버전 관리 도구를 사용하지 않으면 인력 등의 투입으로 많은 비용이 발생할 경우에 도입
- 비용에 맞는 버전 관리가 필요한 경우에 도입
- 제품 개발 및 사용상의 미숙으로 인한 어려움
- 버전 관리 도구의 사용 미숙으로 일정 및 개발의 복잡도가 증가할 경우에 도입
- 사용법이 일반화되고 충분히 접근이 쉬운 버전 관리가 필요한 경우에 도입
3) 형상 관리 지침을 고려한 버전 관리 도구 사용 이유
- 제품 소프트웨어의 개발 환경을 다양한 종류의 개발 도구들과 다양한 종류의 운영 체제 환경을 지니고 있음
- 제품 소프트웨어 배포를 위해 다양한 개발자들이 함께 작업함으로써 많은 개발 소스 파일들을 체계적으로 관리할 필요가 있음
- 제품 소프트웨어에 대한 형상 관리를 하지 않고서는 소프트웨어에 대한 품질을 확신하기 힘듦
- 수작업을 통해 이러한 것들을 체계적으로 관리하는 것은 한계가 있기 때문에 버전 관리 도구를 이용하여 관리함
- 내부 형상 관리 지침과 버전 관리를 연계하기 때문에 버전 관리 도구를 사용함
4) 제품 소프트웨어 버전 관리 도구 유형
- 공유 폴더 방식(RCS, SCCS)
- 매번 완료된 파일은 정해진 위치와 공유 폴더에 복사함
- 전문 담당자를 두어 매번 발생하는 공유 파일들을 자신의 컴퓨터로 복사하여 정상적으로 실행되는지 확인함
- RCS(Revision Control System)는 CVS와는 달리 소스 파일의 수정을 한 사람만으로 제한함
- RCS는 여러 사람이 동시에 수정하지 못하도록 잠금 방식으로 제어함
- 클라이언트/서버 방식(CVS, SVN)
- 중앙에서 관리하는 버전 관리 시스템이 항상 작동하게 함
- 개발자들의 현재 작업 내용과 이전 작업 내용을 저장하기에 용이함
- 서로 다른 개발자가 같은 파일을 작업했을 때 경고를 출력해줌
- Trac이나 CVS View와 같은 GUI 툴을 이용하여 모니터링이 가능함
- 분산 저장소 방식(Git, Bitkeeper, Clear Case)
- 컴퓨터의 저장소나 원격 저장소로 구분
- 중앙 저장소에 존재하는 파일들이 자신의 컴퓨터에 복사되면 원격 저장소에 있던 파일들은 지워지고, 자신의 컴퓨터에만 존재하게 됨
- 자신의 컴퓨터에서 개발이 완료된 파일을 자신의 컴퓨터 저장소에 Commit하고, 다시 원격 저장소에 반영하는 방식
- Bitkeeper는 SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도로 개발할 수 있도록 지원함
- Clear Case는 여러 개의 서버, 클라이언트를 두어 사용하며 서버가 부족하면 하나씩 추가하여 사용하므로 확장성이 좋음
5) 제품 소프트웨어 전체 버전 등록 순서
- 버전 관리 개념 숙지
- 버전 관리의 개념 및 의미 파악
- 버전의 정의 및 버전 관리의 필요성 파악
- 변경 관리 및 변경에 대한 기준선의 의미 파악
- 버전 관리 필요성 체크
- 버전 관리가 필요한 이유 체크
- 버전 고나리 개념을 통해 개발자가 동시에 개발 및 수정할 상황 확인
- 여러 가지 개발 버전에 대해 다양한 정보를 버전별로 확인할 수 있음
- 권한 제어를 통해 인증된 개발자 이외에 접근을 제한할 수 있도록 권환 관리 작업을 학습함
- 버전 관리 도구 사용법 숙지
- 버전 고나리 도구 사용법 숙지
- 다양한 버전 관리 도구를 설치하고 해당 계정 설정
- 버전 관리 도구의 메뉴별 다양한 기능을 숙지
- 버전 관리 도구의 ㄱ장 기본적인 Check-out을 연습
4, 버전 관리 Term 확인 - 버전 관리의 기본 용어 숙지
- 여러 가지 용어에 대해서 다양한 방법으로 기능 연습
- 단계별 버전 등록을 관리
- 버전 등록
- 실제 제품 소프트웨어의 버전을 등록하는 단계
- 버전 관리 도구를 통해 버전 등록
- 버전 등록 시 신규 버전을 최초로 추가 등록함
- 최초 등록 이후 버전의 추가 Check-out 연습
- 새로운 버전을 갱신하여 저장함
- Commit 및 Update
- 버전 관리 도구를 통해 Commit 및 Update
- 최초 추가 및 Check-out 기능 수행
- 개발자가 추가 개발 및 수정 후 Commit함
- Commit 작업 이후 신규로 개발한 부분을 추가로 Update함
6) 버전 관리 도구를 통한 버전 등록
- 추가(Add) : 개발자가 신규로 임의의 파일을 저장소에 추가함
- 인출(Checkout) : 추가한 파일을 개발자가 인출함
- 예치(Commit) : 개발자는 인출된 파일을 수정하고 설명을 붙여 저장소에 예치함
- 동기화(Update) : 새로운 개발자가 자신의 작업 공간을 동기화하여 기존 개발자가 추가했던 파일을 전달받음
- 차이(Diff) : 새로운 개발자는 수정 기록을 보면서 기존 개발자가 처음 추가한 파일과 이후 변경한 파일의 차이를 확인함
7. 제품 소프트웨어 버전 관리 도구 사용 유의점
- 형상 관리 지침에 의거 버전에 대한 정보를 언제든지 접근할 수 있어야 함
- 제품 소프트웨어의 신규 개발, 배포본 수정, 버그 수정 등 기타 다양한 이유로 인해 프로젝트 단위 접근이나 파일 단위 접근 시 개발자가 원하는 때에 원하는 모습을 다시 구성할 수 있어야 함
- 버전 관리 도구를 통해 언제든 접근 가능하도록 그리고 언제든 복구가 가능하도록 시기에 관계없이 버전 관리 도구를 사용할 준비가 되어 있어야 함
- 제품 소프트웨어 개발자, 배포자 이외에 권한이 없는 사용자가 소스를 수정할 수 없도록 해야 함
- 개발 및 배포 환경의 보안은 매우 중요함
- 버전 관리 도구를 사용 시 권한은 더욱 중요함
- 버전 관리에 대한 권한은 버전 관리 도구를 사용 시 미리 정리되어 있지 않으면 사용시에 보안상의 문제가 발생할 수 있음
- 권한 구분 없이 변경이 된다면 버전 관리 도구 사용 자체의 의미가 없어짐
- 권한 문제는 버전 관리 도구를 사용 시 우선으로 고려해야 함
- 중요한 버전 관리 도구에 관련한 권한 체크 항목은 서버에 대한 권한, 버전 관리 디렉터리의 권한, 버전 파일의 권한, 사용자 행위에 대한 권한임
- 만일 신입사원이 허가 없이 접근하여 수정할 경우 그동안 개발된 소스 버전이 없어질 위험이 있음
- 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발할 수 있어야 함
- 프로젝트 내부에서 여러 명의 개발자가 동시에 작업하는 경우가 대부분임
- 다른 개발자에 의해서 자신이 작업한 소스가 Overwrite 될 수 있음
- 여러 개발자의 파일을 병합한다고 해도 많은 수작업을 필요로 함
- 특정 파일은 개발자들의 접근을 막고, 다른 파일은 개발자가 동시에 접근을 해야하고, 디레ㄱ터리를 분류하여 권한을 부여하는 정보로는 해결이 불가능함
- 버전 관리 도구는 공유 파일을 동시에 접근하거나 차단하는데 필요한 해결책을 제시함
- 여러 개발자가 동시에 접근하여 파일 수정이 발생하면 개발자들의 수정 내용이 통합될 수 있어야 함
- 오류 발생 시 최대한 빠른 시간 내에 복구
- 제품 소프트웨어 개발 이후 배포가 완료된 시점에 발생하는 것이 오류
- 오류 없는 완벽한 소프트웨어는 없음
- 버전 관리 도구를 통해 빠른 시간 내에 담당자가 오류에 대한 사실을 알 수 있도록 함
- 버전 관리 도구는 이전 버전 및 자료를 탐색하는데 걸리는 시간을 줄여줌
- 이전 버전의 소스를 찾아 신속하게 원상 복구할 수 있어야 함
8) 제품 소프트웨어 버전 관리 도구의 활용 방안
- 버전 관리 백업 및 복구
- 이전 버전으로의 복구가 필요하면 백업한 후에 복구함
- 이전 버전의 기능을 재활용 시 백업한 후에 복구함
- 동일 버전 공동 작업
- 동일 버전의 소스 코드를 두 명 이상의 개발자가 수정할 경우 공동으로 작업함
- 분산 환경에서 두 명 이상의 개발자가 동일한 버전의 소스를 수정할 경우 분산 버전 관리 툴이 필요함
- 동시에 소스를 수정할 경우에는 누락 없이 통합해야 함
- 여러 버전 솔루션 작업
- 하나의 솔루션을 기반으로 여러 버전의 제품을 개발할 경우 브렌치 관리 기능이 필요함
9) 제품 소프트웨어 소스 및 자료 백업
- 소스 및 자료 백업의 목적은 크게는 천재지변이나 해킹, 작게는 소프트웨어 버그 및 오동작 등으로 인한 각종 재해에 대비해 시스템을 복구 가능한 상태로 만들기 위해 준비하는 것
- 손실의 예방 및 최소화를 우선해야 함
- 재해 발생 시에는 최단기간에 정상 업무에 복구하도록 버전 관리 도구를 적절히 사용할 수 있어야 함
- 버전 관리 도구의 사용 방법을 숙지하여 복구 과정의 효과적 관리가 이루어질 수 있도록 해야 함
10) 제품 소프트웨어 소스 및 자료 백업 방법
- 백업 정책
- 버전 관리 라이브러리에 대한 백업 파일은 버전 관리 라이브러리가 저장된 디스크와 분리된 디스크에 저장
- 디스크 백업은 1일 1회 실시
- CD 백업은 1주일 1회 실시
- 실수에 의한 삭제를 예방하기 위해 백업은 최소 D-2일분 이상을 보관함
- 백업 방법
- 부분적인 백업은 복잡한 과정을 거쳐야 하고 복구 시 어려움이 발생할 수 있으므로 전체를 백업함
- 임시/신규 요청 또는 중지 요청은 백업 작업 절차에 따라 실시
- 백업 결과는 버전 관리를 담당하는 CMO가 주기적으로 점검하여 버전 관리 정기 보고 시 함께 보고함
03. 빌드 자동화 도구
1) 빌드 자동화 도구의 개념
- 제품 소프트웨어의 실행 파일을 자동으로 만들어 주는 도구
- 빌드 자동화 도구는 지속적인 통합 개발 환경에서 유용하게 활용됨
- 실행 파일을 한번 만들어 놓고, 새롭게 추가되는 프로그램이 있으면 자동으로 실행 파일에 추가함
- 실행 파일 생성을 자동화하기 위하여 저장소에 있는 프로그램 소스 코드를 자동으로 가져와 실행 파일을 만드는 도구
- 자주 반복해서 최종 ㄱㄹ과물을 만들어내야 하는 개발자 입장에서는 빌드 도구는 반드시 필요한 도구
- 빌드 자동화 도구에는 Ant, Gradle, Jenkins 등이 있음
2) 빌드 자동화 도구의 종류
- Jenkins
- 가장 많이 사용하는 인터넷상의 빌드 자동화 도구
- Java 기반의 오픈소스로 IC를 가능하게 함
- Apache, Tomcat과 같은 웹 서버 기반에서 운영되는 시스템
- CVS, SVN, Git 등과 같은 다양한 버전 관리 도구를 지원
- Ant, Maven 기반의 프로젝트뿐만 아니라 임의의 쉘 스크립트와 배치 명령까지도 실행 가능함
- Gradle
- 그루비(Grooby) 기반으로 한 오픈소스로 안드로이드 환경에 적합한 빌드 자동화 도구
- Gradle은 실행할 처리 명령들을 모아 태스크(task)로 만든 후 태스크 단위로 실행함
- 태스크는 클래스를 컴파일하거나 JAR을 생성하거나 Javadoc을 만드는 하나의 작업
- Gradle 스크립트는 Grooby를 사용해서 만든 DSL임
- 다양한 프로그래밍 언어의 빌드 환경을 구축할 수 있음
'정보처리기사 > 소프트웨어 개발' 카테고리의 다른 글
애플리케이션 테스트 관리 2 (0) | 2023.05.23 |
---|---|
애플리케이션 테스트 관리 1 (0) | 2023.05.23 |
제품 소프트웨어 패키징 3 (0) | 2023.05.17 |
제품 소프트웨어 패키징 2 (0) | 2023.05.17 |
제품 소프트웨어 패키징 1 (0) | 2023.05.17 |