관리 메뉴

DevBlackCat

정보처리기사: 버전 관리 와 백업과 복구와 빌드 자동화 완전 정복!! 본문

정보처리기사/소프트웨어 개발

정보처리기사: 버전 관리 와 백업과 복구와 빌드 자동화 완전 정복!!

DevBlackCat 2024. 11. 1. 11:55
728x90

소프트웨어 버전 관리 도구

소스 코드의 다양한 버전을 관리

 

① 공유 폴더 방식 (RCS)

  • 공유폴더에 복사후 담당자가 일일이 체크

② 클라이언트 서버 방식

  • 중앙서버에 항상 버전 관리 시스템 운영
  • CVS,SVN,Clear,Case등

③ 분산 저장소 방식

  • 로컬과 원격저장소를 가짐
  • 로컬에서 작업후 원격저장소에 반영
  • Git,Betkeeper

tip:

GIT은 스냅샷 방식으로 공간을 절약

특정 컴포넌트의 일련의 버전을 코드라인이라고한다

베이스라인은 특정 시점이나 목적을 의미한다.

버전 관리 도구 특징

① CVS

  • 오랜기간 사용된 형상 관리도구로 다양한 운영체제를 지원
  • 중앙에 위치한 Repository에 파일을 저장하고, 인가된 모든 사용자가 접근 가능
  • 과거 이력 확인 가능 커밋중 오류가 발생하면 롤백되지않음
  • 덮어쓰기 방지 있고, 속도가 느리고, 디렉토리 변동이 불편

② SVN (CVS 보완 버전)

  • 최초 1회 파일원본을 저장하고 그이후에는 실제 파일이 아닌 원본과 차이점을 저장
  • 커밋 실패시 롤백가능
  • 언제든지 원하는 시점으로 복구 가능
  • Trunk,Branche,Tag의 폴더로 구성해서 관리

③ Git

  • 리눅스 커널 개발을 위해 만듬
  • 성능이 SVN,CVS보다 우수
  • 팀개발을 위한 분산 환경 코딩에 최적화
  • 원격 Repository에 장애가 있어도 버전 관리가 가능

 

주요 용어

용어 설명
Repository 저장소
Checkout Repository 에서 로컬로 프로젝트를 복사 (작업전 최초로 git에서 pull 하는거)

Commit
로컬의 변경을 Repository 에 저장 (내컴퓨터에서 프로젝트 수정후 git 서버로 커밋)
Add 로컬에서 새로운 파일이 추가될떄 Repository 에 등록 
Trunk Root 프로젝트 (Git에서 main 브랜치)
Branch Root 프로젝트에서 파생된 프로젝트  
Merge 브랜치에서 진행하던걸 root와 합침 (git에서 mian 브랜치랑 다른 브랜치랑 합치는거)
Diff 파일의 비교

 

 

 

백업과 복구

 

재난 복구 전략 시 성과 지표

용어 설명
RTO - 업무 중단 부터 복구 및 재가동이 목표
- 업무 중단을 얼마나 허용할지 시간 (시간)
RPO  - 재해 발생후 데이터 손실 범위
- 데이터 손실을 얼마나 감당할지 시점 (데이터)
MTD - 업무 중단의 최대 시간

 

RTO는 복구할수있는 목표시간이고, MTD는 장애를 허용하는 최대 시간으로 비슷하지만 기준이 조금 다름

그외 RP가 있는데 RP는 실제 업부 기능 복구 까지 걸리는 시간이다.

 

백업과 복구를 위한 전략

용어 설명
풀 이미지 백업 - 전체 데이터 백업
차등 백업  - 마지막 풀 이미지 백업 이후, 모든 변경사항을 백업
증분 백업-   - 마지막 풀 이미지 백업 이후, 점차적으로 변경된 사항 백업
실시간 백업 - 변경사항을 즉시 백업, 분리된 스토리지에 실시간 복사 (장비 두대)
합성 백업 - 기본백업 + 후속 증분 백업으로 전체 백업 구성/통함

 

 

풀 이미지 백업

차등 백업

증분 백업

 

차등백업은 최초 풀 이미지 백업이후 변경사항을 하나로 저장하지만

증분 백업은 각각 하루 별로 변경사항을 저장한다.

 

절차

  • 작성 지침 정의
  • 구성 요소 정의
  • 구성 요소별 내용 작성
  • 사용자 메뉴얼 검토

작성 항목

  • 기본사항
  • 고객 지원 방법 및 FAQ
  • 준수 정보 & 제한 보증

 

빌드 자동화 도구

빌드 자동화의 개념

소스 코드를 실행 가능한 소프트웨어로 변환하는 과정

지속적인 통합을 지원

 

특징

  • 자동 빌드 , 테스트 배포 수행
  • 소스코드 컴파일후 실행가능한 애플리케이션 자동 생성

① 빌드

  • 개발자가 저장소에 코드를 커밋한다.
  • 운영 환경과 동일한곳에 커밋

② 테스트

  • JenKins 이나 Ansible 같은 배포 자동화 툴에서 새로운 코드를 인식하고 테스트를 수행한다.
  • 테스트 총과시 운영환경으로 배포 할수있다.

 배포

  • 사용자에게 배포

빌드 자동화 도구 종류 ★★

종류 설명
Make - 유닉스 계열에서 주로 사용
- 파일 간의 종속성 기반
Ant - Java 기반, XML 스크립트로 개발
- 빌드 스크립트 재사용이 어려움
Maven - Dependency 관리
- 정해진 라이프 사이클에 따라 작업
Jenkins - 지속적 통합 서비스 제공
- 다양한 형상 관리 도구와 연동 가능
Gradle - Groovy 기반, 안드로이드 개발 환경에 주로 사용
- 다양한 언어에 대한 빌드 지원
728x90