태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

VSS, CVS, SVN 비교

2009/01/08 12:22 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
Google Trend에서 세가지 SCM(Software Configuration Management)의 경향을 살펴봤습니다. (아래 그림 참조)

CVS가 여전히 압도적인 우위를 점하고 있고, 상대적으로 SVN은 꾸준히 성장을 하고 있습니다. 물론 Google Trend가 실제 제품의 점유율을 보여주지는 않지만 그만큼 사람들의 관심사는 엿볼 수 있을 것 같습니다.
CVS의 감소는 SVN으로 대체되고 있는 듯 보입니다.
하지만 이렇게 더딘 이유는 CVS도 충분히 좋은 SCM이고 더 좋은 SCM이 나왔다고 함부로 바꿀 수 있는 것이 아니기 때문입니다.
물론 새로 시작하는 회사가 있다면 SVN을 쓰면 좋겠지만, 기존에 수년가 CVS를 쓰던 회사가 치명적인 문제도 없는데 SVN을 그냥 바꿀 필요는 없겠지요.

(3가지를 비교한 그래프입니다. SVN의 성장이 눈이 띕니다. 아래 Comment의 권남님이 제시한 그래프를 보면 SVN의 비율이 훨씬 더 높아지네요. 그리고 미국과 인도에서의 CVS 검색 비중이 아주 높고 나머지 나라에서는 SVN이 더 높은 나라가 많네요.)

(VSS는 점차 감소 추세입니다.)

(CVS는 약간의 감소추세이나 급격하지는 않네요)

(SVN의 성장 추세는 괄목할 만하네요)


제가 가장 오랫동안 사용한 SCM은 VSS입니다. 제가 사용한 VSS는 v6.0이었습니다.
물론 유료지요. 하지만 제가 종종 겪었던 가장 큰 문제는 깨지는 저장소였습니다. CS구조가 아닌 NFS 방식으로 파일을 공유하기 때문에 그런 문제가 있었던 것으로 생각합니다. 물론 VSS 2005에서 안정성(stability)를 향상하고 HTTP를 지원한다고 하지만 그 당시는 제가 SVN을 사용하고 있을 때라서 VSS가 얼마나 좋아졌는지 모릅니다. 혹시 최신 VSS를 쓰고 계신 분은 평가를 올려주시면 좋겠습니다.

하지만, 안정성이 가장 중요한 요소 중 하나인 SCM에서 자주 깨지는 저장소는 신뢰를 잃기에 충분했습니다. 
매일 백업을 받고 있었으므로 몇 시간 분량의 손실만 있을 뿐 복구는 할 수 있었지만, 개발 시간을 낭비하게 만드는 것은 아주 짜증나는 일이었습니다.

그리고 허약한 Branch기능은 부족한 기능 중에 하나였습니다.

그 뒤에 CVS를 거쳐서 SVN을 사용하게 되었는데, 제가 써본 SCM 중에서 최고는 SVN입니다.

VSS < CVS < SVN 이라고 생각합니다.

SVN은 일단 무료이며, 그 오랫동안 사용하면서 저장소는 단 한번도 깨진 적이 없습니다.
그리고 빠릅니다. 아무리 큰 디렉터리를 태깅하거나 브랜치를 해도 시간은 몇 십초 안 걸립니다.
CVS에서 엄청나게 큰 디렉터리 태깅하면서 기다려보신 분은 아실 겁니다.
그렇게 빠른 이유는 SVN은 기존의 SCM의 파일 시스템과 완전히 다른 방식을 사용하고 있기 때문입니다. 기존의 대부분의 SCM들이 RCS(Revision Control System)에서 기초한 파일시스템을 사용하는데 반해서 SVN의 파일시스템은 기존의 단점을 없애고 새로 만들었습니다. 즉 각 Revision의 Diff만 저장하는 방식입니다.
따라서 태그나 브랜치를 만들 때는 Diff가 없으므로 순식간에 이루어집니다.

그리고 SVN의 VSS와 비교한 장점 중의 하나가 협업이 훨씬 쉬워졌다는 겁니다.
SVN도 Lock기능이 있지만, 이걸 사용하지 않고도 협업에 문제가 없습니다. 왜냐하면 하나의 파일을 동시에 수정할 경우에는 Merge를 해주기 때문입니다. 이때 사용하는 3way Merge에 대해서는 제가 올린 글이 있으니 참조하세요.

기존에 VSS를 사용할 때는 물론 Multi-lock 기능이 있기는 하지만, 며칠씩 Lock을 걸어 놓고 풀지 않는 사람 때문에 보통 귀찮은 게 아니었습니다. SVN을 사용하면서 이런 문제는 싹 사라졌습니다.

VSS를 사용하면서는 IDE와 통합되는 기능이 왠지 멋져 보이고 매우 편리하다고 생각했었는데, SVN과 TortoiseSVN을 IDE와 별도로 쓰면서 불편하게 생각되어 본 적이 별로 없었습니다. SVN도 IDE와 통합해주는 Plug-in들이 있지만 이는 취향에 따라서 선택하면 되고 꼭 써야 하는 필수요소는 아닙니다.

결국 SVN의 빠른 속도, 안전한 저장소, 뛰어는 브랜치 기능, 머지기능 등은 저와 저희 팀이 즐겁게, 제대로 일하는데 많은 도움을 주었습니다.

누군가 새로 SCM을 사용하려고 한다면 SVN을 추천합니다.
저작자 표시 비영리 변경 금지

전규현 기반시스템/소스코드관리 , ,

Trackback Address: http://allofsoftware.net/trackback/50 관련글 쓰기
  1. 2009/01/13 06:00
    Traback test Tracked from 공터
  1. Blog Icon
    권남

    비교가 완벽하지는 않은 것 같습니다. svn은 svn말고 subversion으로 검색하는 비율도 높기 때문입니다.
    http://google.com/trends?q=cvs%2Csvn|subversion%2Cvss|sourcesafe|visualsourcesafe%2Cgit%2Cmercurial&ctab=0&geo=all&date=all&sort=0
    이게 더 정확한 결과 일듯 합니다.
    그리고, 저도 SVN이 더 좋습니다. 가장 좋은 점은 파일별이아닌 각 커밋별로 리비전을 관리한다는 점입니다. 불필요한 Tag를 생성할 필요를 줄여주죠.
    예전엔 eclipse용 클라이언트가 너무 후져서 거부감이 들었는데, 요즘엔 Eclipse용 클라이언트도 많이 안정화가 돼서 별다른 불편도 없네요.

  2. 권남님 안녕하세요.
    그렇게 하니 SVN의 비율이 더 높은 수치로 나오는 군요. 감사합니다.

  3. Blog Icon
    mixed

    git이나 mercurial 등의 분산형 소스코드 관리시스템의 비교는 한번 안하시나요^^;;
    잼있게 구독하고 있습니다.^^

  4. mixed님 안녕하세요.
    나중에 한번 기회가 되면 할려고 생각은 하고 있습니다. 지금 준비 중인 이슈가 많이 있어서 추후 올려보도록 하겠습니다.

  5. 재미있는 비교네요 ㅎㅎ
    다만 한가지, CVS가 압도적으로 많은건 CVS가 아직 많이 사용되기 때문이기도 하지만
    미국에 전국 대형 약국 체인중에 CVS가 있는것도 한 몫 하는것 같습니다 (이미 아실지도 모르겠지만요)
    그래서 위의 비교에서는 CVS가 실제 이상으로 많은 점유율을 차지하는것 같습니다.
    아무튼 저는 CVS밖에 안써봐서 잘 모르겠지만, 요즘 정말 SVN이 잘 나가는것 같습니다 ㅎㅎ

  6. fancyydk님 안녕하세요.
    찾아보니 www.cvs.com이 약국체인이네요. 몰랐었습니다. 그래도 여전히 CVS를 많이 쓰고 있겠죠?

  7. Blog Icon
    allting

    좋은 글 잘 보고있습니다^^

  8. allting 님 안녕하세요.
    항상 관심 가져 주셔서 감사합니다. 좋은 S/W를 개발하고 계시더군요. 앞으로도 자주 의견 주고 받고 싶습니다.

  9. 오래된 글에 리플 남기게 되네요 ㅎㅎ
    음.. 개인적으로는 SVN은 사용하고 회사에서는 CVS를 사용하지만, 관리자 측면과, 사용자 측면은 반비례 하는 편이라서 어느편이 좋다라고 하긴 애매한 감이 있습니다.

    사용자 측면에서는 속도라던가 여러모로 편리한 SVN에 손을 들에 주게 되지만,
    svn:// 방식으로 사용시에는 비밀번호가 평문으로 저장된다던가, 로그가 남지 않는다던가 하는 아쉬운 점이 있습니다.(물론 fake-security일지두 모르지만요) 그래서 대부분이 http+svn://을 사용하는 경향이 있는것 같습니다.

    아무튼 svn+ssh:// 든 svn:// 이든 svn+http 만큼의 사용자 편의는 제공하지 않는다는 점과, repository 기본 골격 구조등의 차이로 인한 관리의 어려움은 (tag / branch 디렉토리) cvs에 손을 들어주고 싶습니다.

    아마 이러한 관리상의 아쉬움을 svn이 보완한다면 svn이 완전한 대세가 되겠지만,
    사용상의 편함만으로 cvs를 버리고 svn으로 가기에는 조금 아쉬움이 있습니다.

  10. 안녕하세요. 구차니님
    SVN과 CVS, VSS를 모두 오랫동안 써온 저는 SVN에 가장 높은 점수를 줍니다. 외형적인 기능 면으로는 크게 차이가 없어보이지만 보이지 않는 부분에서 많은 차이가 납니다. SVN의 아키텍처가 가장 훌륭하죠. 그래서 속도도 빠릅니다. tag, branch가 디렉터리로 관리되는 것이 좀 어려울 수 있지만, 이것도 익숙해지면, CVS보다 더 편리하더군요. 좋은 의견 감사합니다.

  11. Blog Icon

    tfs가 최고죠-_-;;; 자바 닷넷 해보면서 tfs만큼 편한 것은 없습니다..;; 유료에 설치가 꽤 까다운 편이지만요..그담은 당연 svn입니다만..그러고 보면 ms가 툴하나는 참 잘만드는 것 같습니다..ㅎㅎ

  12. 안녕하세요.
    TFS(Team Foundation Server)는 국내 레퍼런스가 100개 미만으로 알고 있는데, 사용하고 계신가보네요.
    언제 TFS와 SVN도 비교를 해서 올려보는 것이 좋겠네요. 사실 TFS는 Rational 솔루션들이 너무 무겁다면 가볍게 나온 솔루션이지만 이것 역시 엄청나게 무겁고 개발자에게 부담을 주는 것은 마찬 가지입니다. 기능면으로 비교하면 SVN에 있는 기능은 다 있고, 여타 다른 기능들과 많이 연동이 되어 있는 종합 선물세트죠.
    한방에 해결하고 싶은 분들은 쓰면 좋을 것 같습니다. 하지만 각각의 시스템중에서 가장 좋은 것들을 골라서 서로 느슨하게 연동하고 가볍게 쓰고 싶은 분들은 다른 선택을 하시는 것이 좋겠네요.

관리자가 이런 일까지?

우리나라 SW 조직에서 관리자란 위치는 참 애매한 위치다. 물론 전문 관리자라면 얘기가 다르지만 왕년에 SW를 조금 개발해 본 경우가 애매하다. 개발팀에서 가장 경험이 많은 SW 개발자들이 주로 팀장이 되곤 한다. 이 경우와..

과거의 성공이 발목을 잡을 때

수많은 소프트웨어 회사들이 첫번째 성공을 거두고 나서 두번째 도약에 실패하고 사라져간다. 물론 첫번째 성공도 어렵지만 이미 성공의 경험이 있고 방법을 알고 있는 회사들이 두번째 또는 세번째에는 많이 실패하는 이유가 무엇일까?..

스펙을 제대로 작성하는 것은 구식이다?

'소프트웨어 개발 방법이 얼마나 발전했는데 아직도 스펙을 제대로 작성하고 개발을 하는가?' 라고 하면서 스펙 작성에 반대하는 주장을 하는 사람들이 있다. 스펙, 설계를 작성하고 구현을 하고 테스트를 하는 방식으로 개발하는 것..

내가 개발에 집중할 수 없는 이유

우리나라에서는 개발자들이 개발에 집중할 수 없는 환경인 곳이 참 많다. 정도의 차이가 있지만 거의 대부분이라고 봐도 무방하다. 그 결정적인 이유는 개발자 혼자서 북치고 장구치고 다해야 하는 상황이기 때문이다. 원래는 이렇게..

설계가 필요할까?

최근에 Software Architect의 정체에 대해서 혼란을 겪고 있는 것 만큼 Software 설계에 대해서도 혼동스러운 것은 마찬가지인 것 같다. 그래서 설계에 대해서도 깔끔하게 정의를 해보자. 흔히 설계에 관한 다음..

Software Architect를 양성하는 나라

우리나라에서는 종종 SW Architect를 양성한다고 한다. 정부에서 막대한 예산이 지원도 되며 SW Architect를 양성하는 학원도 생기고 야단법석이다. 그럼 도대체 SW Architect는 무엇인가? SW Archi..

우리에게 지금 필요한 것은? 바로 이것

우리나라 대부분의 소프트웨어 회사들에게 가장 시급하게 필요한 것은 "기초 체력"이다. 히딩크가 우리나라 국가대표 축구팀을 처음 맞았을 때 강조한 것이 기초 체력이었다. 그전까지 우리는 국가대표 축구팀이 체력은 세계 어디를 내..

프로토타입을 재활용하면 될까? 안될까?

며칠 전 프로토타입에 관해 올린 글에 대해서 프로토타입 재사용에 대해서 여러 의견이 있어서 이 내용에 대해서 조금더 설명해보려고 한다. 2011/11/03 - [프로젝트/요구사항분석] - 프로토타입이란? 소프트웨어공학의 목적..

프로토타입이란?

프로토타입 (경제/경영) 양산(量産)에 앞서 제작해보는 원형(原型)을 '프로토타입'이라 하는데, 프로토타이핑이란 개발자들과 사용자들의 의사소통상의 효과를 증진시키기 위하여 취하는 시스템개발상의 기법이다. 일반적인 분석방법을..

같이 일하려면 적어라.

"협업은 말로 하는 것이 아니라 문서로 하는 것이다." 동서고금을 막론하고 개발자들은 적는 것을 싫어하고 또 잘 적지 못한다. 우리나라 개발자들은 그 정도가 훨씬 심하다. 우리나라에서는 회사가 크던 작던 상관없이 대부분 5년..