티스토리 뷰

버전 관리 시스템이란?


카테고리가 VCS여서.. 이게 뭐지? 라고 생각하신 분들도 계실겁니다.
버전관리시스템의 영문 약자인데, 카테고리 이름에 바이트제한이 있어서 그렇게 했습니다...

그럼 버전관리시스템에 대해 간략히 알아보겠습니다.

버전관리시스템은.. 정말 단어 그대로 '버전'을 '관리'하는 '체계' 입니다.
우리가 무언가 개발을 하거나 단순히 문서작업을 하더라도 업데이트를 합니다.
프로그램을 안해보셨더라도 논문이나 리포트, 자소서 같은걸 써보신 분들은 잘 이해하실 겁니다.
즉, 우리가 수정, 업데이트를 한다고 해서 반드시 그 결과물이 나아진다는 보장이 없습니다.
오히려 전보다 못한 경우도 있죠. 그래서 우리는 위 같은 문서작업을 할 때, 날짜별로 새롭게 저장하거나 합니다. 날짜 대신에 Ver.1 , Ver.2 이렇게 썼다고 생각해보세요. 이게 버전관리인 것입니다.

대표적으로는 Git, SNV, Mercurial, Subversion 등이 있습니다.



의미있는 변화


위에서 간단한 예를 들었는데,

단순히 무언가를 갱신했다고 해서 무조건 버전관리라고 하기에는 무리가 있습니다.
특허에서도 '기존것과 비교해 특정한 개선점이 있는 경우'를 특허등록 조건 중 하나로 제시합니다. 즉, 단순히 글자하나를 추가했다고 해서 새로운 버전이라고 하기엔 본 취지에 맞지 않는다는 것이죠.
무언가 명확한 변화가 있거나, 확실한 차이가 존재해야 합니다.
이런 변화를 '의미있는 변화' 라고 표현해보겠습니다.

가끔 이러한 버전 관리를 보신적이 있을 겁니다. 1.1.1 , 1.1.2 , 2.0.0 ...
보통 가장 앞의 숫자가 변하면 많은 변화나 개선이 이루어진 것이고, 뒤의 내용 같은 경우는 세부적인 사항이 바뀔 때 표기하고는 합니다. 게임을 좋아하시거나 이런저런 프로그램을 사용해보신 분들은 자주 보셨을 겁니다. 'Beta 2.1.4 버전' 뭐 이런식의 표현도 있구요.
즉, 이 문맥에서 하고 싶은 말은 버전관리란 '의미있는 변화'가 동반되어야 한다는 것입니다.





왜 필요한가?


이미 서두에서 다루었지만, 버전관리가 필요한 이유는 단순하게
1. 자료의 보존
2. 과거 자료의 활용
+. 협업

정도가 되겠습니다. 물론 세부적으로 더 많은 이유가 존재하겠지만, 기본 목적은 1,2번입니다.
+로 협업을 넣었는데, 버전관리시스템의 강력한 기능중 하나이기 때문입니다.

먼저 유사사례를 알아보겠습니다.
버전관리시스템과 유사한 내용으로 Wikipedia가 있습니다.
전세계 사람들이 어떠한 주제에 대해 자신들의 기술/정보를 입력하여 공유할 수 있는 강력한 기능이지요. 현대사회가 추구하는 집단지성의 힘을 보여주는 강력한 사례입니다.
하지만 위키는 누구나 수정을 할 수 있습니다. 그런데 누군가가 악의를 가지고 고의적으로 잘못된 정보를 입력했다고 생각해보죠. 아마 많은 사람들이 혼란에 빠지게 될 것입니다.
그래서 위키에서도 버전관리를 사용하고 있습니다. 즉, 이전의 정보들도 저장이 됨으로써 문제가 발생했을 때 원래대로 복구시킬 수 있는 것이지요. 혹은 이상하다는 생각이 들때 참조하고 수정/신고도 가능하겠습니다.

N드라이브같은 클라우드 서비스도 마찬가지로 버전관리시스템과 유사합니다.
이는 사용해보신 분들은 잘 아시듯이, 동기화만 해두면 매번 변화에 따라 저장이되어 자동 백업이 이루어지기때문이죠.

좀 더 현실적으로 접근해 보겠습니다.

1. 자료의 보존
개인 혹은 회사에서 프로젝트를 진행하고 있습니다. 거기에 필요한 수많은 데이터와 자료, 성과물들이 존재할 것입니다. 그런데 '백업'을 전혀하지 않았습니다. 이런 상황에서 작업을 하던 컴퓨터가 도난을 당한다던지 바이러스에 걸려 자료가 날라갔다던지 했다고 생각해보죠. 개인/회사가 지금까지 이룩해놓은 것들이 한번에 사라져버리게 됩니다. 그 내용과 규모에 따라서는 피해가 엄청나겠죠. 설령 복구가 가능하다치더라도 그 비용이나 물질/정신적 손실은 보상받을 수 없습니다.

2. 과거 자료의 활용
업데이트 내역이 개선점만 가지고 있으면 좋겠습니다만, 현실은 그렇게 녹록치 않습니다. 그래서 과거의 자료가 필요할 때가 있죠. 예를들어, 회사제품을 업데이트했습니다. 그런데 고객이 컴플레인을 걸어옵니다. 과거 버전이 훨씬 좋다고 다시 돌려달라구요! 혹은 누군가 실수/악의로 잘못된 수정을 했다고 합시다. 그런데 과거의 내용이 기억이 나지 않습니다. 이런 난감한 상황에 직면했을 때, 버전관리를 철저히 해왔다면 우리는 재빠르게 대처할 수 있을 것입니다.

+. 협업기능
1,2번의 경우는 솔직히 클라우드 서비스나 백업만 여기저기 잘 해두면 가능한 내용들입니다.(물론, 시스템을 이용하면 더 편리하다는 장점이 있지만요!) 여기서 버전관리시스템은 한가지 강력한 기능을 제공합니다. 즉 협업하기에 용이합니다. Git의 경우 브라우저에서도 접근할 수 있고 수정할 수 있습니다. 우리는 이걸 Commit이라고 합니다. 이러한 것들이 가능하기 때문에 아무리 멀리 떨어진 사람들이라도 편리하게 접근해서 서로 수정보안을 하며 의견을 주고 받는, 협업을 할 수 있습니다.

이 외에도 클라우드 기반이기때문에
어디서나 접속해서 프로그램을 다운받고 수정할 수 있다는 특징도 있겠습니다.




마무리


현대사회에서 집단지성, 자료의 보존 및 활용은 매우 중요합니다. 그 중요한 세 박자를 버전관리시스템을 사용하신다면 편리하게 할 수 있습니다. 혹시 개인적으로나 회사에서 개발을 진행하고 계신 분들은 버전관리시스템 서비스를 제공하는 플랫폼들 중에 하나를 선정하셔서 소중한 자산을 더 효과적으로 다루시길 바라며, 사용하기 어려우시다면 백업이라도 철저히 해서 소중한 자산을 잃어버리는 일이 없길 바라는 바입니다.

감사합니다.




공유하기 링크
TAG
댓글
댓글쓰기 폼