 
1. 범위
1.1.	개요
본 문서는 Direct Backup Solution(이하 DBS)의 프로그램 요구사항에 대해서 기술한다. DBS는 PEE(Packet Exchange Engine)를 기반으로 작동하지만 PEE에 대해서는 이 문서에서 기술하지 않는다. 이 문서는 독자가 PEE에 대해 이해하고 있는 것으로 간주하고 작성되었다.

DBS는 Server – Client 방식의 백업 프로그램으로서1차적으로 기존의  쉘스크립트 방식의 메일 및 호스팅 서버 백업을 대체하기 위해 개발한다. DBS의 사용으로 얻을 수 있는 이점은 백업 성공 여부를 확인 할 수 있고, 실패 시 자동으로 관리자에게 통보 할 수 있으며 웹을 통해서 백업 스케줄, 백업 상태 확인, 복구 등을 쉽게 할 수 있다는 점이다.

2. 참고 문헌
	http://www.amanda.org/
	PEE 명세서

3. 요구사항 
3.1.	외부 인터페이스 요구사항
3.1.1	사용자 인터페이스  
- CLI

커맨드라인에서 마스터서버의 IP와 대상서버의 IP 및 백업 대상 디렉토리 및 파일명을 입력해서 백업을 수행 할 수 있는 환경을 구축한다. 입력된 데이터는 데이터베이스 인터페이스를 통해 DBS에 전달된다.

# trigger –m 222.112.137.106 –a 222.112.137.105 –t f –c /data

- GUI
웹을 통해서 백업 스케줄을 지정 할 수 있도록 인터페이스를 제공한다. 입력된 데이터는 데이터베이스 인터페이스를 통해 DBS에 전달된다.

<원하는 화면에 대한 그림 첨부>

3.1.2	 하드웨어 인터페이스  
 없음
3.1.3	소프트웨어 인터페이스  
없음

3.1.4	통신 인터페이스  
- Socket
Socket을 통해서 시스템 내/외부로부터 백업 명령을 수신한다. 주로 CLI command에 의해 사용된다.

- Database
스케줄러를 포함한 웹 인터페이스를 통해 입력되는 백업 명령들은 Database에 우선 저장되고 DBS에 의해 처리된다.


3.2.	내부 인터페이스 요구사항
기본적으로 Server-Client 모델을 사용해야 한다. 즉, Server 역할을 하는 Master server가 존재하며 Storage 역할도 같이 수행한다. Client 측에서는 Agent server가 실행되어서 Master server와 통신한다. DBS는 PEE 엔진을 사용하기 때문에 멀티 쓰레드 형태로 작성되어야 한다.

3.3.	기능 요구사항
- 백업, 복구, 복사, 삭제 기능이 구현되어야 한다.

- 백업 요청은 특정 소켓에 접속해서 보낼 수도 있고, 지정된 DB에 백업 요청을 추가해서 처리 할 수도 있다.

- 백업은 기본적으로 TAR 포멧을 사용하며 Full, Incremental로 나뉜다. TAR 포멧을 사용하는 경우에는 패킷 압축 여부를 선택할 수도 있다. 이미 TAR로 묶인 파일을 처리하기 위해 단순 Copy mode도 지원한다.

- 지정된 파일을 삭제할 수 있는 기능도 포함해야 한다. 이 기능은 백업된 파일들을 일정 기간이 지나면 삭제하기 위해 사용한다.

- Incremental mode는 자동으로 직전의 Full backup 시점을 찾아서 그 지점부터의 Incremental을 적용한다.

- TAR 포멧은 GNU Longname Extension을 처리할 수 있어야 한다.

- 백업 요청은 유일한 등록번호를 부여 받아서 추적이 가능하도록 한다.

- TAR 포멧으로 백업 할 때는 전송되는 패킷에서 TAR 헤더를 추출해서 파일 정보를 DB에 기록한다.

- 백업을 할 때 기본적으로 대상 서버에 임시파일(예를 들어 TAR 아카이브)을 만들면 안된다.

- 백업 요청은 동시에 여러 디렉토리 또는 파일을 포함 할 수 있다.

- 사용자의 요구에 따라 백업을 진행하면서 대상 서버에 백업결과의 복사본을 만들 수도 있다.

- 사용자의 요구에 따라 대상 디렉토리를 하나의 백업결과 파일로 만들지 않고 포함하고 있는 디렉토리 별로(depth가 1인 경우만) 따로 백업결과 파일을 만들어서 백업 할 수 있다. 이 경우 생성되는 모든 파일은 하나의 등록번호로 관리되어야 한다.

- 백업 진행 중 에러 발생시상대방 호스트에 통보해서 상대방이 cleanup을 할 수 있도록 한다.

3.4.	성능 요구사항
-	FTP 전송 속도의 80% 이상으로 백업을 진행 할 수 있어야 한다.
-	Master는 최소 256대 이상의 Agent를 처리 할 수 있어야 한다.


3.5.	설계 및 구현 제약 사항
-	Cygwin을 사용해서 윈도우 시스템으로 포팅이 가능하도록 구현해야 한다.
-	Master와 모든 Agent간의 통신은 모두 PEE 엔진을 통해서 이루어져야 한다.


3.6.	요구사항의 우선 순위 및 중요도
전송속도와 윈도우 포팅이 가능하도록 구현하는 것이 프로젝트에서 가장 중요한 부분이다.


3.7.	기타 요구사항
3.7.1	품질 요구사항
- 추후 유지보수 및 기능 추가가 용이하도록 기능별 단위 모듈로 개발을 진행한다.

3.7.2	안전 요구사항
- 파일 삭제 기능 구현 시 다른 파일을 지우는 문제가 발생하지 않도록 주의해서 구현한다.

3.7.3	보안 요구사항
- Socket 인터페이스를 통해 백업 명령을 전달하는 호스트가 지정된(안전한) IP 대역에 있는 경우에만 접근을 허락하도록 한다.

3.7.4	컴퓨터 자원 요구사항 
- 백업 대상의 용량이 테라 단위 급이기 때문에 신속한 백업을 위해 Master와 모든 Agent는 Gigabit Ethernet을 통해 연결되는 것을 권장한다.

4. 기타 
DBS를 추후 백업 이외의 용도 (자동 업데이트, 지정 명령어 일괄실행 등)로도 사용 할 수 있는 가능성을 고려해서 개발을 진행하도록 한다.
