버전 관리
- 동일한 소스코드의 다양한 버전을 관리
- 디지털 문서 변경을 버전으로 표기해 추적 가능
버전 관리도구 방식⭐️
공유 폴더 방식
- 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식
- 개발자들을 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사함
- 담당자는 공유 폴더의 파일을 자기 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)
- 업무 중단의 허용 최대 시간
- 비즈니스 연속성 관리의 중요지표
백업과 복구를 위한 전략
풀-이미지 백업
- 전체 데이터 백업
- 복구 시, 가장 빠른 복구시점 생성
차등 백업
- 마지막 풀-이미지 백업 이후의 모든 변경사항 백업
- 복구 시, 마지막 풀-이미지 백업 + 최신 차등백업 필요
증분 백업
- 마지막 풀-이미지 백업 이후 점차적으로 변경된 사항 백업
실시간 백업
- 모든 변경사항을 즉시 백업
- 분리된 스토리지에 지속적으로 복사
합성 백업
- 기본 백업 + 후속 증분 백업으로 전체 백업 구성/통합