서브버전 서버 선택하기

전절에서 설명한 서브버전 아키텍처에서 보았듯이 서브버전은 저장소 엑세스 레이어를 추상화하도록 설계되었다. 그러므로 client 는 저장소가 서브버전 서버에서 어디에 위치하고 저장소가 어떤 파일 시스템을 쓰는지 OS 가 무엇인지등을 몰라도 정해진 API 나 client 프로그램을 통해 서브버전 서버와 연결하고 저장소에 파일을 올리고 내리고 버전을 관리할 수 있다.

 

서브버전 서버를 네트워크을 통해 연결할 경우 크게 2가지 방법으로 연결할 수 있다.

 

첫 번째는 9장에서 설명한 apache httpd 를 통해서 사용하는 방법이다. 서브버전 의 패키지에는 mod_dav_svn 이라는 apache httpd 의 확장 모듈이 포함되어 있다. 이 모듈을 설치하면 apache httpd 는 WebDAV/DeltaV 프로토콜을 사용하여 서브버전 의 저장소에 연결할 수 있게 된다. 이렇게 하면 apache http의 유연하고확장성 있는 모든 기능을 사용할 수 있으며 보안이 필요할 경우 mod_ssl 모듈로 HTTPS 를 적용하여 네트워크을 통해 오가는 모든 소스코드와 id/패스워드를 암호화할 수도 있다.

서브버전 저장소에 대해 인증(Authentication)과 권한부여(Authorization)가 필요하면 기존 apache httpd 에 있는 다양한 인증 모듈(mod_auth_basic, mod_authn_dbm, mod_auth_ldap)을 사용할 수 도 있다.

그리고 apache httpd 의 VirtualHost 기능을 사용하여 단일 서버에서 서브버전 서비스, Issue 관리 서비스, artifact 관리 서비스 등을 모두 구동 할 수 있다. (빌드 서버는 자원이 많이 필요한 특성상 별도의 서버를 사용하는 것을 권장한다). 

두 번째는 svnserve 라는 전용 프로토콜을 사용하는 서버를 이용하는 것이다. svnserve 는 가볍고 빠른 서버고 서브버전 전용 프로토콜은 HTTP와는 다르게 상태를 유지하는 프로토콜이므로 네트워크 부하를 적게 하지만 apache httpd 처럼 확장 모듈을 사용할 수 없고 유연함이 부족한 단점이 있다.  또 데이타 보안 기능이 없으므로 ssh 와 혼용하여 사용하거나 ldap 등을 통해 외부 인증을 해야할 경우 사용할 수  없다. 설정이 쉽다고는 하지만 apache httpd 를 설치하고 설정해야 하는 Windows 나 타 Unix 계열에서 해당되는 내용이고 apache httpd 가 패키지로 제공되고 설정 파일이 잘 정리된 CentOS 에서는 http 기반으로 서브버전 을 설정하는 것이 훨씬 더 쉽다.


서브버전 저장소 연결 방식

저장소 엑세스 레이어가 추상화되었지만 저장소에 연결할 때는 사용하는 프로토콜에 맞게 명시적으로 URL 을 기술해야 한다. 서브버전 은 저장소 엑세스 레이어의 종류에 따라 3가지 방식의 URL 을 지원한다.

  • file:///var/svnroot/myrepos - Network 이 아닌 local 에 있는 저장소에 연결할 때 쓰이는 URL 이다. 팀으로 작업하지 않고 개인적으로 작업을 할 경우 손쉽게 설정할 수 있으므로 추천하는 방법이다. 주의할 점은 file 뒤에 슬래쉬가 3개라는 것이고 저장소는 절대 경로로 작성해야 하는 것이다.
  • svn://svn.example.com/myrepos - svn 패키지에 내장된 독립형 실행 서버인 svnserve 를 사용할 경우의 URL이다. svnserve 는 데이타 암호화 기능이 없으므로 네트워크을 통해 svn 로그인 암호나 소스가 평문으로 전송될 수 있다. 보안을 위해서는 svnserve 에 ssh 로 tunneling 을 하여 사용하는 게 좋다.  ssh 로 tunnerling 할 경우의 URL 은 svn+ssh 가 된다.
  • http://svn.example.com/myrepos - Web Server 의 모듈로 동작할 경우의 URL 이다. WebDAV(Web Distributed Authoring and Versioning) 라는 HTTP 기반의 프로토콜로 동작한다. web server 를 SSL 을 지원하게 설정했다면 저장소도 https 로 연결하여 보안성을 확보할 수 있다. 설치와 설정이 간편하고 기존에 있는 web server 를  재활용할 수 있는등 장점이 많으므로 추천하는 방식이다. 이 방식을 지원하는 패키지 명은 mod_dav_svn 이다. 현재 서브버전은 아파치 웹서버용 모듈만 제공하고 있으므로 http/https 를 사용하려면 아파치 웹서버가 꼭 필요하다. 

이 책에서는 mod_dav_svn 을 사용하여 apache httpd 기반으로 서브버전 서버를 구성하는 방법을 설명한다. 작업 절차는 다음과 같이 8단계에 나눠서 진행할 예정이니 중간마다 설정이 제대로 되었는지 확인하는 단계를 거친후에 다음 단계로 넘어갈 것이다.