All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다.
RSS Feed
Google Trend에서 세가지 SCM(Software Configuration Management)의 경향을 살펴봤습니다. (아래 그림 참조)
CVS가 여전히 압도적인 우위를 점하고 있고, 상대적으로 SVN은 꾸준히 성장을 하고 있습니다. 물론 Google Trend가 실제 제품의 점유율을 보여주지는 않지만 그만큼 사람들의 관심사는 엿볼 수 있을 것 같습니다.
CVS의 감소는 SVN으로 대체되고 있는 듯 보입니다.
하지만 이렇게 더딘 이유는 CVS도 충분히 좋은 SCM이고 더 좋은 SCM이 나왔다고 함부로 바꿀 수 있는 것이 아니기 때문입니다.
물론 새로 시작하는 회사가 있다면 SVN을 쓰면 좋겠지만, 기존에 수년가 CVS를 쓰던 회사가 치명적인 문제도 없는데 SVN을 그냥 바꿀 필요는 없겠지요.
(CVS는 약간의 감소추세이나 급격하지는 않네요)
제가 가장 오랫동안 사용한 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와 비교한 장점 중의 하나가 협업이 훨씬 쉬워졌다는 겁니다.
기존에 VSS를 사용할 때는 물론 Multi-lock 기능이 있기는 하지만, 며칠씩 Lock을 걸어 놓고 풀지 않는 사람 때문에 보통 귀찮은 게 아니었습니다. SVN을 사용하면서 이런 문제는 싹 사라졌습니다.
VSS를 사용하면서는 IDE와 통합되는 기능이 왠지 멋져 보이고 매우 편리하다고 생각했었는데, SVN과 TortoiseSVN을 IDE와 별도로 쓰면서 불편하게 생각되어 본 적이 별로 없었습니다. SVN도 IDE와 통합해주는 Plug-in들이 있지만 이는 취향에 따라서 선택하면 되고 꼭 써야 하는 필수요소는 아닙니다.
결국 SVN의 빠른 속도, 안전한 저장소, 뛰어는 브랜치 기능, 머지기능 등은 저와 저희 팀이 즐겁게, 제대로 일하는데 많은 도움을 주었습니다.
누군가 새로 SCM을 사용하려고 한다면 SVN을 추천합니다.
전규현
기반시스템/소스코드관리
cvs,
svn,
VSS
전규현님 덕분에 개발에있어 다른 시각으로 접근하는 시야를 갖게되었습니다 감사합니다.
svn사용이익숙해지면 Git도 한번 사용해봐야겠네요
오산돌구님 안녕하세요.
그렇게 생각해주시니 고맙습니다. 개발자분들이 좀더 좋은 환경에서 일하게 되는 것이 제 바람입니다.
안녕하세요. rss추가 해놓고 맨날 눈팅 하던중 주옥 같은 글을 발견 하였네요.
감사합니다. ^^
안녕하세요. 이승철님
반갑습니다.
음.. 문득 다른분들은 svn 서버를 어떻게 구성해서 사용하는지가 궁금해지네요
http / https / svn / svn+ssh 이런 여러가지 설정방법이 있다 보니 말이죠 ^^;
안녕하세요. 구차니님
SVN 서버를 구성하는 방법은 간단하기도 하지만, 제대로 하려면 매우 복잡합니다.
1. 말씀하신 것과 같이 Protocol을 정해야 합니다.
2. Repository를 어떻게 나눌 것인지 정해야 합니다.
3. Repository 내의 디렉터리를 어떻게 구축해야 하는지 정해야 합니다.
4. 각 Repository내의 디렉터리에서 권한을 어떻게 부여해야 할지 정해야 합니다.
이 중에서 가장 어려운 것이 2,3번입니다. 특히 3번은 잘못 구축하는 경우가 태반이고, 한번 잘못 구축하면 다시 복구하는 것은 대단히 어렵습니다.
디렉터리의 구조는 빌드 스크립트와 연관이 있어서 다시 고치는데는 대단히 노력과 비용이 듭니다.
디렉터리 구조는 회사마다 다르며 잘못 구축하면 비효율성이 계속되며 비용을 지불해야 합니다.
제대로 디렉터리를 구축하려면 SVN의 사용방법도 제대로 알아야 하고 회사의 미래 개발 전략도 어느정도 이해를 해야 가능합니다.
이중에서 1번인 프로토콜은 꽤 쉬운 편입니다. 왜냐하면 나중에 요구사항이 바뀌면 바꾸기가 쉽기 때문입니다.
SVN은 기본적으로 자체서버에서 svn://을 지원합니다. 그리고 웹서버와 연동해서 http:// https://를 지원합니다.
그리고 ssh에 svn을 얹어서 쓸 수도 있습니다.
웹브라우저로 보기도 원하는지? 철저한 보안을 원하는지? 편리하고 간단하게 쓰고 싶은지? 속도가 매우 중요한지?에 따라서 정하면 됩니다.
저도 개인 피씨에 보관하던 사람이었죠 ㅎㅎ
블로그 글 덕분에 버전 시스템을 알게 되었고, 설치하여 프로젝트에 많은 도움이 되고 있습니다.
하지만, 스포츠에 비유한다면, 이제 겨우 기초 체력을 갖추기 시작한 거라 해야 할까요
진짜 경쟁은 지금부터겠죠
여하튼 앞으로도 좋은 글 많이 부탁 드립니다.
안녕하세요. csj님
맞습니다. 기본적인 시스템을 갖추지 않고 개발을 하는 것은 사냥을 맨몸으로 하는 것과 같습니다. 창이나 활, 총을 갖춰야죠.
이제 무기는 생겼습니다. 무기를 갖추는 것은 시간이 얼마 안걸립니다. 하지만 무기를 잘 쓰는데는 시간이 좀 걸립니다.
또한 사냥을 더 잘하려면 무기를 잘 쓰는 방법 뿐만 아니라 자연을 이해야 하고 동물의 습성등 다른 기술들도 필요하고 팀웍도 필요합니다.
이제 기초를 갖추신 겁니다. 비록 요소기술이 뛰어나다고 해도 소프트웨어 공학에서 다루는 프로세스, 툴, 분석, 리뷰, 설계 등의 실력을 갖추지 않으면 소프트웨어를 개발하기가 점점 어려워 집니다.
앞으로 좋은 정보를 많이 공유하도록 하죠.
전규현님 안녕하세요. 이번주에 git에 대해서 팀내 발표를 하게 되었습니다.
제가 어떻게 하는지에 따라서 팀내 적용을 할지 말지 정하는 상황입니다.
현재 팀내 분위기는 git을 사용하기 위해 배우는 비용과 git 사용함으로써 생기는 이득을 따져서 적용해보자~ 하는분위기입니다.
근데 한가지 문제점은 제가 git이나 svn을 사용하는데 저 혼자만 사용해서 여럿이 사용할때의 이점을 제대로 깨닫지 못한 상태입니다. 그저이론적으로만 알고있죠. . .
사용하면서 어떤 예로 이득을 보는지 알고싶습니다. 아직 처음 단계라 경험이 부족해이런 질문 드린거 죄송합니다;;
오산돌구님 안녕하세요.
제가 쓴 "소프트웨어 개발의 모든 것"의 개정판에 중앙집중식SCM과 분산SCM의 비교가 있으니 참조하시면 좋을 것 같습니다.
특별히 분산 관리의 목적이 아니라면 SVN이 더 관리하기 편합니다.
서로 연동도 되니 필요에 따라서 연동해서 사용하는 방법도 있습니다.