랑아
article thumbnail

제품 소프트웨어 버전 관리

01. 제품 소프트웨어 버전 관리

1) 제품 소프트웨어 버전 관리의 개념

  • 코드와 라이브러리, 관련 문서 등 시간에 따른 변경을 관리하는 전체 활동
  • 제품 소프트웨어 버전 관리는 개발자들이 프로그램을 개정한 사항들을 추적하는데 사용되는 데이터베이스를 제공함
  • 동일한 소프트웨어에 대한 여러 형태의 프로그램을 관리하는 것
  • 버전 관리는 형상 관리를 포함하는 관리

2) 제품 소프트웨어 버전 관리 항목

  • 버전 관리와 관련하여 버전 등록 및 갱신, 수정 등을 통해 버전을 관리함
  버전 관리 항목     설명  
  가져오기(Import)     버전을 관리하지 않은 로컬 디렉터리 파일을 처음으로 저장소에 복사  
  체크아웃(Checkout)     저장소에 파일을 받음  
  체크인(Checkin)     저장소에 새로운 버전으로 갱신  
  완료(Commit)     체크인 중에 이전 갱신 사항이 있는 경우 충돌을 알림  
  저장소(Repository)     파일의 현재 버전과 변경 이력 정보를 저장하는 저장소  

3) 작업 단계별 버전 등록 기법

  • 최종 인증받은 패키징 버전에 한하여 제품 소프트웨어 저장소에 등록
  • 등록된 제품 소프트웨어 저장소는 권한을 부여받은 사용자만 사용할 수 있음
  • 기존에 구현되고 등록되어 있는 제품 소프트웨어 버전 관리가 무엇보다도 중요함

4) 제품 소프트웨어 저장소(Repository)

  • 인증을 받은 제품 소프트웨어를 등록하는 저장소로서 사용자는 저장소를 통하여 제품 소프트웨어를 이용할 수 있음
  • 제품 소프트웨어 저장소는 최신 버전을 유지하고 있어야 함
  • 제품 소프트웨어의 버전별 상태를 유지하고 관리함으로써 사용자가 쉽게 이용할 수 있도록 함
  • 버전 등록 시 이전 버전과 새로 등록하고자 하는 버전이 통합적으로 버전 관리가 되고 있는가가 중요함
  • 버전 등록 시 여러 부분을 체크할 수 있어야 함
  • 체크 리스트를 만들어 모든 사용자가 공유할 수 있도록 함



02. 제품 소프트웨어 버전 관리 도구

1) 제품 소프트웨어 버전 관리 도구의 개념

  • 형상 관리를 포함하여 관리하는 도구
  • 형상 관리 지침을 활용하여 제품 소프트웨어의 신규 개발, 변경, 개선과 관련된 수정 내역을 관리하는 도구
  • 버전 관리 도구를 활용하여 제품 소프트웨어의 버전과 변경, 개선 내역을 관리함
  • 제품 소프트웨어의 버전 관리 도구를 통해 실무에서는 다양한 방향으로 버전 관리를 함

2) 버전 관리 도구 도입

  1. 제품 소프트웨어 최종 배포본만 관리
    • 최종 배포본 이후의 사용자 지원에 따른 버전 관리가 어려울 경우에 도입
    • 변경 관리, 추가 버전 등의 이유로 버전 관리를 검토해야 하는 경우에 도입
  2. 고객 지원팀의 경우 수작업 소요
    • 최종 배포 이후 고객 지원팀은 직접 문의에 대한 수작업 기술 지원이 많은 부분을 차지하는 경우에 도입
    • 수작업 및 유지보수 개선 관점에서의 버전 관리 검토가 필요한 경우에 도입
  3. 예산 및 비용에 대한 부담
    • 버전 관리 도구를 사용하지 않으면 인력 등의 투입으로 많은 비용이 발생할 경우에 도입
    • 비용에 맞는 버전 관리가 필요한 경우에 도입
  4. 제품 개발 및 사용상의 미숙으로 인한 어려움
    • 버전 관리 도구의 사용 미숙으로 일정 및 개발의 복잡도가 증가할 경우에 도입
    • 사용법이 일반화되고 충분히 접근이 쉬운 버전 관리가 필요한 경우에 도입

3) 형상 관리 지침을 고려한 버전 관리 도구 사용 이유

  • 제품 소프트웨어의 개발 환경을 다양한 종류의 개발 도구들과 다양한 종류의 운영 체제 환경을 지니고 있음
  • 제품 소프트웨어 배포를 위해 다양한 개발자들이 함께 작업함으로써 많은 개발 소스 파일들을 체계적으로 관리할 필요가 있음
  • 제품 소프트웨어에 대한 형상 관리를 하지 않고서는 소프트웨어에 대한 품질을 확신하기 힘듦
  • 수작업을 통해 이러한 것들을 체계적으로 관리하는 것은 한계가 있기 때문에 버전 관리 도구를 이용하여 관리함
  • 내부 형상 관리 지침과 버전 관리를 연계하기 때문에 버전 관리 도구를 사용함

4) 제품 소프트웨어 버전 관리 도구 유형

  1. 공유 폴더 방식(RCS, SCCS)
    • 매번 완료된 파일은 정해진 위치와 공유 폴더에 복사함
    • 전문 담당자를 두어 매번 발생하는 공유 파일들을 자신의 컴퓨터로 복사하여 정상적으로 실행되는지 확인함
    • RCS(Revision Control System)는 CVS와는 달리 소스 파일의 수정을 한 사람만으로 제한함
    • RCS는 여러 사람이 동시에 수정하지 못하도록 잠금 방식으로 제어함
  2. 클라이언트/서버 방식(CVS, SVN)
    • 중앙에서 관리하는 버전 관리 시스템이 항상 작동하게 함
    • 개발자들의 현재 작업 내용과 이전 작업 내용을 저장하기에 용이함
    • 서로 다른 개발자가 같은 파일을 작업했을 때 경고를 출력해줌
    • Trac이나 CVS View와 같은 GUI 툴을 이용하여 모니터링이 가능함
  3. 분산 저장소 방식(Git, Bitkeeper, Clear Case)
    • 컴퓨터의 저장소나 원격 저장소로 구분
    • 중앙 저장소에 존재하는 파일들이 자신의 컴퓨터에 복사되면 원격 저장소에 있던 파일들은 지워지고, 자신의 컴퓨터에만 존재하게 됨
    • 자신의 컴퓨터에서 개발이 완료된 파일을 자신의 컴퓨터 저장소에 Commit하고, 다시 원격 저장소에 반영하는 방식
    • Bitkeeper는 SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도로 개발할 수 있도록 지원함
    • Clear Case는 여러 개의 서버, 클라이언트를 두어 사용하며 서버가 부족하면 하나씩 추가하여 사용하므로 확장성이 좋음

5) 제품 소프트웨어 전체 버전 등록 순서

  1. 버전 관리 개념 숙지
    • 버전 관리의 개념 및 의미 파악
    • 버전의 정의 및 버전 관리의 필요성 파악
    • 변경 관리 및 변경에 대한 기준선의 의미 파악
  2. 버전 관리 필요성 체크
    • 버전 관리가 필요한 이유 체크
    • 버전 고나리 개념을 통해 개발자가 동시에 개발 및 수정할 상황 확인
    • 여러 가지 개발 버전에 대해 다양한 정보를 버전별로 확인할 수 있음
    • 권한 제어를 통해 인증된 개발자 이외에 접근을 제한할 수 있도록 권환 관리 작업을 학습함
  3. 버전 관리 도구 사용법 숙지
    • 버전 고나리 도구 사용법 숙지
    • 다양한 버전 관리 도구를 설치하고 해당 계정 설정
    • 버전 관리 도구의 메뉴별 다양한 기능을 숙지
    • 버전 관리 도구의 ㄱ장 기본적인 Check-out을 연습
      4, 버전 관리 Term 확인
    • 버전 관리의 기본 용어 숙지
    • 여러 가지 용어에 대해서 다양한 방법으로 기능 연습
    • 단계별 버전 등록을 관리
  4. 버전 등록
    • 실제 제품 소프트웨어의 버전을 등록하는 단계
    • 버전 관리 도구를 통해 버전 등록
    • 버전 등록 시 신규 버전을 최초로 추가 등록함
    • 최초 등록 이후 버전의 추가 Check-out 연습
    • 새로운 버전을 갱신하여 저장함
  5. Commit 및 Update
    • 버전 관리 도구를 통해 Commit 및 Update
    • 최초 추가 및 Check-out 기능 수행
    • 개발자가 추가 개발 및 수정 후 Commit함
    • Commit 작업 이후 신규로 개발한 부분을 추가로 Update함

6) 버전 관리 도구를 통한 버전 등록

  1. 추가(Add) : 개발자가 신규로 임의의 파일을 저장소에 추가함
  2. 인출(Checkout) : 추가한 파일을 개발자가 인출함
  3. 예치(Commit) : 개발자는 인출된 파일을 수정하고 설명을 붙여 저장소에 예치함
  4. 동기화(Update) : 새로운 개발자가 자신의 작업 공간을 동기화하여 기존 개발자가 추가했던 파일을 전달받음
  5. 차이(Diff) : 새로운 개발자는 수정 기록을 보면서 기존 개발자가 처음 추가한 파일과 이후 변경한 파일의 차이를 확인함

7. 제품 소프트웨어 버전 관리 도구 사용 유의점

  1. 형상 관리 지침에 의거 버전에 대한 정보를 언제든지 접근할 수 있어야 함
    • 제품 소프트웨어의 신규 개발, 배포본 수정, 버그 수정 등 기타 다양한 이유로 인해 프로젝트 단위 접근이나 파일 단위 접근 시 개발자가 원하는 때에 원하는 모습을 다시 구성할 수 있어야 함
    • 버전 관리 도구를 통해 언제든 접근 가능하도록 그리고 언제든 복구가 가능하도록 시기에 관계없이 버전 관리 도구를 사용할 준비가 되어 있어야 함
  2. 제품 소프트웨어 개발자, 배포자 이외에 권한이 없는 사용자가 소스를 수정할 수 없도록 해야 함
    • 개발 및 배포 환경의 보안은 매우 중요함
    • 버전 관리 도구를 사용 시 권한은 더욱 중요함
    • 버전 관리에 대한 권한은 버전 관리 도구를 사용 시 미리 정리되어 있지 않으면 사용시에 보안상의 문제가 발생할 수 있음
    • 권한 구분 없이 변경이 된다면 버전 관리 도구 사용 자체의 의미가 없어짐
    • 권한 문제는 버전 관리 도구를 사용 시 우선으로 고려해야 함
    • 중요한 버전 관리 도구에 관련한 권한 체크 항목은 서버에 대한 권한, 버전 관리 디렉터리의 권한, 버전 파일의 권한, 사용자 행위에 대한 권한임
    • 만일 신입사원이 허가 없이 접근하여 수정할 경우 그동안 개발된 소스 버전이 없어질 위험이 있음
  3. 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발할 수 있어야 함
    • 프로젝트 내부에서 여러 명의 개발자가 동시에 작업하는 경우가 대부분임
    • 다른 개발자에 의해서 자신이 작업한 소스가 Overwrite 될 수 있음
    • 여러 개발자의 파일을 병합한다고 해도 많은 수작업을 필요로 함
    • 특정 파일은 개발자들의 접근을 막고, 다른 파일은 개발자가 동시에 접근을 해야하고, 디레ㄱ터리를 분류하여 권한을 부여하는 정보로는 해결이 불가능함
    • 버전 관리 도구는 공유 파일을 동시에 접근하거나 차단하는데 필요한 해결책을 제시함
    • 여러 개발자가 동시에 접근하여 파일 수정이 발생하면 개발자들의 수정 내용이 통합될 수 있어야 함
  4. 오류 발생 시 최대한 빠른 시간 내에 복구
    • 제품 소프트웨어 개발 이후 배포가 완료된 시점에 발생하는 것이 오류
    • 오류 없는 완벽한 소프트웨어는 없음
    • 버전 관리 도구를 통해 빠른 시간 내에 담당자가 오류에 대한 사실을 알 수 있도록 함
    • 버전 관리 도구는 이전 버전 및 자료를 탐색하는데 걸리는 시간을 줄여줌
    • 이전 버전의 소스를 찾아 신속하게 원상 복구할 수 있어야 함

8) 제품 소프트웨어 버전 관리 도구의 활용 방안

  1. 버전 관리 백업 및 복구
    • 이전 버전으로의 복구가 필요하면 백업한 후에 복구함
    • 이전 버전의 기능을 재활용 시 백업한 후에 복구함
  2. 동일 버전 공동 작업
    • 동일 버전의 소스 코드를 두 명 이상의 개발자가 수정할 경우 공동으로 작업함
    • 분산 환경에서 두 명 이상의 개발자가 동일한 버전의 소스를 수정할 경우 분산 버전 관리 툴이 필요함
    • 동시에 소스를 수정할 경우에는 누락 없이 통합해야 함
  3. 여러 버전 솔루션 작업
    • 하나의 솔루션을 기반으로 여러 버전의 제품을 개발할 경우 브렌치 관리 기능이 필요함

9) 제품 소프트웨어 소스 및 자료 백업

  • 소스 및 자료 백업의 목적은 크게는 천재지변이나 해킹, 작게는 소프트웨어 버그 및 오동작 등으로 인한 각종 재해에 대비해 시스템을 복구 가능한 상태로 만들기 위해 준비하는 것
  • 손실의 예방 및 최소화를 우선해야 함
  • 재해 발생 시에는 최단기간에 정상 업무에 복구하도록 버전 관리 도구를 적절히 사용할 수 있어야 함
  • 버전 관리 도구의 사용 방법을 숙지하여 복구 과정의 효과적 관리가 이루어질 수 있도록 해야 함

10) 제품 소프트웨어 소스 및 자료 백업 방법

  1. 백업 정책
    • 버전 관리 라이브러리에 대한 백업 파일은 버전 관리 라이브러리가 저장된 디스크와 분리된 디스크에 저장
    • 디스크 백업은 1일 1회 실시
    • CD 백업은 1주일 1회 실시
    • 실수에 의한 삭제를 예방하기 위해 백업은 최소 D-2일분 이상을 보관함
  2. 백업 방법
    • 부분적인 백업은 복잡한 과정을 거쳐야 하고 복구 시 어려움이 발생할 수 있으므로 전체를 백업함
    • 임시/신규 요청 또는 중지 요청은 백업 작업 절차에 따라 실시
    • 백업 결과는 버전 관리를 담당하는 CMO가 주기적으로 점검하여 버전 관리 정기 보고 시 함께 보고함



03. 빌드 자동화 도구

1) 빌드 자동화 도구의 개념

  • 제품 소프트웨어의 실행 파일을 자동으로 만들어 주는 도구
  • 빌드 자동화 도구는 지속적인 통합 개발 환경에서 유용하게 활용됨
  • 실행 파일을 한번 만들어 놓고, 새롭게 추가되는 프로그램이 있으면 자동으로 실행 파일에 추가함
  • 실행 파일 생성을 자동화하기 위하여 저장소에 있는 프로그램 소스 코드를 자동으로 가져와 실행 파일을 만드는 도구
  • 자주 반복해서 최종 ㄱㄹ과물을 만들어내야 하는 개발자 입장에서는 빌드 도구는 반드시 필요한 도구
  • 빌드 자동화 도구에는 Ant, Gradle, Jenkins 등이 있음

2) 빌드 자동화 도구의 종류

  1. Jenkins
    • 가장 많이 사용하는 인터넷상의 빌드 자동화 도구
    • Java 기반의 오픈소스로 IC를 가능하게 함
    • Apache, Tomcat과 같은 웹 서버 기반에서 운영되는 시스템
    • CVS, SVN, Git 등과 같은 다양한 버전 관리 도구를 지원
    • Ant, Maven 기반의 프로젝트뿐만 아니라 임의의 쉘 스크립트와 배치 명령까지도 실행 가능함
  2. Gradle
    • 그루비(Grooby) 기반으로 한 오픈소스로 안드로이드 환경에 적합한 빌드 자동화 도구
    • Gradle은 실행할 처리 명령들을 모아 태스크(task)로 만든 후 태스크 단위로 실행함
    • 태스크는 클래스를 컴파일하거나 JAR을 생성하거나 Javadoc을 만드는 하나의 작업
    • Gradle 스크립트는 Grooby를 사용해서 만든 DSL임
    • 다양한 프로그래밍 언어의 빌드 환경을 구축할 수 있음
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!