[소프트웨어개발] 버전 관리

thingzoo·2024년 2월 3일
0
post-thumbnail

버전 관리

  • 동일한 소스코드의 다양한 버전을 관리
  • 디지털 문서 변경을 버전으로 표기해 추적 가능

버전 관리도구 방식⭐️

공유 폴더 방식

  • 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
  • 개발자들을 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사함
  • 담당자는 공유 폴더의 파일을 자기 PC로 복사해 컴파일한 후 이상유무 확인
  • 파일 변경 사항을 데이터베이스에 기록하며 관리
  • 예: RCS, SCCS, PVCS, QVCS 등

RCS(Revision Control System)

  • 단일 사용자 파일 수정 제한, 파일 잠금 방식
  • 체크아웃 및 체크인 기능을 사용해 동시에 소스를 수정하는 것 방지

클라이언트/서버 방식

  • 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
  • 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사해 작업 한 후 변경된 내용을 중앙 서버에 반영
  • 모든 버전 관리는 서버에서 수행
  • 하나의 파일을 서로 다른 개발자가 작업할 경우, 경고 메시지 출력
  • 서버에 문제발생 시, 다른 개발자와의 협업 및 버전관리작업은 중단됨
  • 예: CVS, SVN(Subversion), Clear Case 등

SVN(Subversion)

  • CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년 발표
  • 서버는 주로 유닉스(Unix) 사용
  • 오픈소스로 무료사용 가능
  • CVS의 단점인 파일/디렉터리 이름변경, 이동 등 가능

분산 저장소 방식

  • 하나의 원격저장소와 분산된 개발자 PC의 로컬저장소에 함께 저장되어 관리되는 방식
  • 개발자별로 원격 저장소의 자료를 자신의 로컬저장소로 복사해 작업한 후 변경된 내용을 로컬저장소에서 우선 반영(Commit)한 다음 이를 원격저장소에 반영(Push)
  • 원격저장소에 문제 발생 시, 로컬저장소의 자료 이용해 작업 가능
  • 로컬저장소에서 작업을 수행할 수 있어 처리속도가 빠름
  • 예: Git, Bitkeeper

Git⭐️

  • 리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지보수되고 있음
  • 원격저장소는 여러 사람들이 협업을 위해 버전을 공동 관리하는 곳으로, 자신의 버전 관리 내역을 반영(Push)하거나 다른 개발자의 변경내용을 가져올 때(Fetch) 사용
  • 로컬저장소는 개발자 본인의 실제 개발을 진행하는 장소로 버전관리가 수행됨
  • 브랜치(Branch)를 이용하면 기본 버전 관리틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅 가능
  • 파일의 변화를 스냅샷(Snapshot)으로 저장
  • 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름 파악 가능

백업과 복구

재난 복구 전략 시 성과 지표

RTO(Recovery Time Objective)

  • 업무 중단부터 복구 및 재가동까지의 시간 목표(복구 시간 목표)
  • 업무 중단을 얼마동안 허용할 것 인지의 시간

RPO(Recovery Point Objective)

  • 재해 발생 후 데이터 손실의 허용 범위(복구 시점 목표)
  • 데이터 손실을 얼마나 감당할 것인지의 시점

MTD(Maximum Tolerable Downtime)

  • 업무 중단의 허용 최대 시간
  • 비즈니스 연속성 관리의 중요지표

백업과 복구를 위한 전략

풀-이미지 백업

  • 전체 데이터 백업
  • 복구 시, 가장 빠른 복구시점 생성

차등 백업

  • 마지막 풀-이미지 백업 이후의 모든 변경사항 백업
  • 복구 시, 마지막 풀-이미지 백업 + 최신 차등백업 필요

증분 백업

  • 마지막 풀-이미지 백업 이후 점차적으로 변경된 사항 백업

실시간 백업

  • 모든 변경사항을 즉시 백업
  • 분리된 스토리지에 지속적으로 복사

합성 백업

  • 기본 백업 + 후속 증분 백업으로 전체 백업 구성/통합
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글