구글doc에서 이전 버젼으로 돌아가는 기능을 한번 보았던 것 같은데요. 여러 사람이 공동 작업할 때만 가능한 것으로 알았습니다.(사용한 적은 없읍니다) 그런데 이번 기회에 확실히 알게 되었네요.
이 강의에서 드랍박스에 대해 나왔는데요.
구글Doc에서는 어떻게 하냐하면요.(구글쉬트도, 다른 구글문서도 다 될 것 같습니다)
구글Doc문서 편집모드에서 제목줄 아래 메뉴의 오른쪽 끝 메뉴(도움말) 오른쪽 옆에 "몇초, 몇분, 몇일에 수정했습니다"라는 부분이 있습니다. 그곳을 클릭하면 과거에 수정했던 목록이 오른쪽에 나옵니다. 돌아가고 싶은 곳을 클릭한 후에 메뉴줄 부분에 '버젼복원'이라는 버튼을 클릭하면 복원이 됩니다. http://imgur.com/a/6HIFH <-- 구글버젼관리 방법 (그림을 한번더 클릭하면 큰그림이 나옵니다)
그러고 보니
git처럼 많은 기능을 구현할 수 없지만
구글doc으로도 협업/버젼관리가 가능할 것 같습니다.
지금부터 버전 관리시스템이라고 하는 것이 무엇인가에 대해서 살펴보겠습니다. 버젼관리 시스템이라는 말을 처음 들어보시는 분도 있을 거고요 이 말에서 뭔가 위협적인 느낌을 받으시는 분도 있을 겁니다. 버젼 관리시스템 옆에 제가 흐릿하게 적어둔 것처럼 버전 콘트롤 시스템이라고도 불러요. 줄여서 vcs라고도 하고 또는 형상관리라고도 하고, 소스관리라고도 합니다. 다양한 이름으로 불리지만 버전관리시스템이라 말을 저는 주로 사용을 합니다. 자 그럼 버전관리시스템을 도대체 무엇이냐 하는 것을 우리가 살펴보기에 앞서서, 다시말해서 구체적인 버전관리시스템 소프트웨어 머 git이라든지 서브버젼이라 든지 머큐리얼 뭐 CVS 이런 여러가지 제품들이 있습니다. 이런 것들이 다 버젼관리시스템에 속하는 제품들이라고 할 수가 있는데요. 구체적인 제품에 대한 얘기는 이번시간에 나오지않습니다. 이번 시간에는 여러분들이 그런 구체적인 제품들을 익히기 전에 버전 관리라는 것이 도대체 무엇인가를 이해 할 수 있는 내용으로 이번 시간은 구성을 해봤습니다. 일종의 오리엔테이션이라고 할 수가 있어요.
버전이 무었인가를 한번 생각해볼까요? 쉽진 않아요. 버전이라고 하는 것이 딱 한 마디로 정의하기는 좀 어려운 말이지만, 전 이렇게 얘기하고 싶습니다. 어떠한 의미있는 변화들 자, 여기에서 중요한 것은 의미있는 변화라는 것이 중요합니다. 자 여기서 의미있는 변화들이 무엇일까요? 그리고 의미없는 변화는 무엇일까요? 예를 들어서 여러분이 프로그램을 만든다라고 했을때 거기에 있는 주석에 아주 의미없는 그런 내용들을 수정하는 거는 별로 의미가 없어요. 또는 여러분이 어떤 내용을 고치고 있는데 고치다가 화장실이 급해가지고 어디 나갔다. 완전히 완결 되지 않은 작업들 이런 것도 의미있는 변화라고 할 수 없죠. 의미있는 변화라는 것은 기능의 개선 또는 버그를 수정 했다든지 아니면 어떤 고객이 요구하는 사항에 맞게 여러분들이 만드는 소프트웨어를 커스터마이징해서 제공했다라든지. 자! 이런 것들이 바로 의미있는 변화들 다시말해서 버전이라는 것이죠. 그리고 버전관리시스템이라고 하는 것은 바로 이러한 변화들을 관리하는 체계, 소프트웨어 또는 방법론 이런 것들을 우리가 버젼관리 시스템이라고 부릅니다.
자! 그런데 버젼관리 시스템이라고 하는 이러한 정의만으로는 여러분이 뭔가 제가 하는 얘기가 굉장히 뜬구름 잡는 듯한 이야기처럼 들릴 수 밖에 없어요. 그건 당연합니다. 그런데 여러분한테 버전관리시스템을 확 들이밀게 되면, 어렵게 느껴질 수가 있 습니다. 그래서 버전관리시스템이라는 것이 별게 아니다. 여러분들이 낳설게 느낄 것이 전혀 아니다라는 것을 제가 보여 드리기 위해서 유사 버전관리시스템들을 제가 소개해드리는 것이 이번 시간에 목표입니다. 현실에서 우리가 어떻게 버젼관리를 이미 하고 있었는지 한 번 살펴볼까요?
자! 여기 ‘제품 설명서.txt’라는 파일이 있습니다. 이 파일은 켜고 쓰고 끈다라는 내용으로 내용이 적혀 있어요. 저 안에는 그래서 여러분이 만든 제품에대한 사용설명서라고 할 수가 있 습니다. 그런데 여러분이 이 내용을 좀 바꾸고 싶었어요. 좀 더 좋게 만들고 싶어서 이렇게 바꾼 거예요. 잘 켜고 막 쓰고 꼭 쓴다. 이런 식으로 기존의 제품설명서를 좀더 풍부 하게 여러분이 만들 어서 고객이나 또는 직장상사한테 컨펌을 요청한 거죠? 그랬더니 고객이 “돌려놔” 옛날 게 훨씬 좋아요. 이거 너무 장황하잖아요. 이런 얘기가 나오는 거죠. 자! 어때요? 힘드시죠. 회사 그만두고 싶을 수 있습니다. 이런 일이 항상 일어난다면 어떻겠어요. 그럼 여려분들은 고민을 하는 거죠. 회사를 그만둘 것인지 아니면 어떤 방법을 찾을 것인지. 그래서 여러분이 좀 더 긍정적인 사람이고 뭔가 방법을 찾는 것을 잘 하는 사람이라면, 아마도 이런 방법을 강구 하게 될겁니다. 보시는 것처럼 제품 설명서라고 하는이 파일의 이름에 다가 이렇게 숫자를 붙이는 거죠. 그리고 그 내용은 켜고 쓰고 끈다라는 내용입니다. 그리고 여러분이 새로운 내용을 바꿀 때는 고객이 이 내용을 옛날로 돌리라고 분명히 할 것이기 때문에 우리가 아무리 잘 해도 고객은 우리한테 우리가 하려고 하는 걸 하지 말라고 하는 가능성이 굉장히 크죠? 그렇기 때문에 아에 여기 있는 이 파일을 카피해서 새로운 파일을 만든 다음에 그 이름은 제품설명서2로 바꾸는 거죠. 그리고 거기에다가 이렇게 추가된 내용을 작성을 한다음에 그것을 클라이언트 또는 여러분의 상사에게 보여주는 거죠. 그러면 그 분이 좋다라고 하면 문제 없겠지만, 옛날 게 더 좋네요라고 하면, 그때 여러분은 그 앞에서는 정말 이거 다시 돌리는게 힘들 것 같다라는 표정을 짓고 그리고 돌아와서는 회심의 미소를 지으면서 제품설명서 1.txt 파일에 내용을 다시 돌려 주는 것이죠. 이렇게 문제를 해결 하는 것이 바로 버전관리를 이미 우리가 손으로 하고 있는 거라고 할 수가 있습니다.
자 그러면 버전관리시스템에 조금 더 근접한 사례를 살펴보면, 위키피디아를 들 수가 있을 것 같습니다. 위키피디아 잘 하시죠? 전세계 수많은 사람들이 협업을 해서 집단지성을 발휘해서 어떤 백과사전을 만드는 아주 중요한 이 시대 아주 중요한 프로젝트라고 할 수가 있 습니다 이것은 위키피디아에서 한국을 찾아서 보여주는 페이지인데요. 여기 있는 이 내용은 어떤 한 사람이 작성한 게 아니에요. 굉장히 많은 내용이 담겨 있 습니다. 이것은 아주 많은 사람들이 그 안에는 심지어 익명의 사람도 포함이 되어있죠. 로그인 하지 않은 사람이란 뜻입니다. 아주 많은 사람들이 협업을 해서 이 내용을 완성 했고, 완성하고 있고, 앞으로도 계속 계속이 내용을 개선을 하게 될 겁니다. 그중에서도 우리의 눈길을 끄는 부분이 뭐냐면, 여기는 있는 역사보기라는 부분입니다. 여기 있는 역사를 따른 말로 하면, 버전 보기라고 할 수가 있어요. 자! 역사보기를 클릭해보겠습니다. 클릭하면 이렇게 여러 행들이 나옵니다. 여기 있는 행 하나가 바로, 하나하나의 버전이라고 할 수가 있어요. 그리고 누군가가 대한민국이라고 하는 페이지의 내용을 수정 할 때마다 저기 있는 한 줄이 생기는 거에요. 다시말해서 버전이 하나가 생기는 것이죠. 그래서 이 대한민국 페이지에는 이렇게 많은 버젼들이 존재해요. 수백 개의 수정 사항들이 있었다라는 것이죠. 그래서 여러분이 여기 있는 이 버전에서 만약에 가장 최근의 내용과 이걸 선택해요? 그리고 이전에 있었던 내용 뭐 2014년도 9월 2일 뭐 한 10전에 작성했던 내용을 선택 해서, ‘선택한 판을 비교하기’ 버튼을 클릭 하면, 어떠게 되냐 하면, 최신 버전과 이거 최신버전입니다. 그리고 예전에 9월 2일에 작성 했던 버전 사이에 어떤 차이점이 있는 가를 이렇게 시각적으로 보여줍니다.
이전에는 보시는 것처럼 그냥 18대 라고만 되어 있었는데, 그 앞에 대한민국 제18대라고 내용을 변경한 것을 이렇게 우리가 쉽게 알아낼 수가 있다는 겁니다. 그래서 만약에 누군가가 작성한 내용이 악의적으로 편집된 내용이거나 또는 누군가가 치명적인 실수를 해서 내용을 홀랑 날려 버렸다고 하더라도 우리는 이런 비교할 수 있는 기능 또 과거로, 과거의 버전을 현재 버전으로, 최신 버전으로 다시 되돌릴 수 있는 기능, 이런 기능들을 이용해서 잘못 된 내용을 되돌릴 수 있다라는 겁니다. 그리고 이런 위키피디아 같은 컴퓨터 또는 웹이라고 하는 공간에 십분 활용한 이러한 시스템에게 있어서 버전관리라고 하는 것은 정말 본질적인 기능이라고 할 수가 있어요. 왜냐 누군가가 악의적으로 편집 하는 거에 대책이라고 할 수가 있는 것이죠. 그런 경우에 만약에 버젼관리스템이라고 하는 것이 위키피디아에 포함되어있지 안다면 위키피디아는 이런 시도조차 이런 시도를 할 생각을 하지 못 했을 겁니다.
또 다른 사례를 하나 살펴보고 이번 시간 마치겠습니다. 드랍박스라는 것이 있어요. 드랍박스 라는 서비스를 아시는 분은 아실 거고 모르시는 분은 모르실텐데, 혹시나 구글드라이브 라든지 또는 네이버 N 드라이브, 또 다음 클라우드 이런 서비스들은 다 비슷한 서비스입니다. 드랍박스는 일종의 클라우드 스토리지 서비스, 여러분이 자신의 컴퓨터에다가 파일을 만들면 그 파일이 자동으로 드롭박스의 서버로 전송이 돼서 여러분의 딸은 장치들 컴퓨터에 저장된 내용을 노트북에도 똑같이 복사해 놓는다든지, 자 이러한 기능들을 제공하는 것이 드롭박스가 하는 일입니다.
재미 있는 것은 드롭박스 사업계획서를 제가 옆에다 옮겨 놨는데요. 사업계획서의 내용을 보면, 서브버전에 대한 언급이 나옵니다. 서브버전은 버전관리시스템의 대표적인 제품 중에 하나라고 할 수가 있어요. 요기 있는 내용은 이 서브버전과 같은 버전관리 시스템이 가지고 있는 가장 중요한 장점들만 모아서 소규모의 그룹이나 일반인들도 사용할 수 있도록 만든 제품이 드롭박스다 라는 내용이 대충 들어가 있는 내용죠? 보시는 것처럼 제가 만든 사용설명서.txt라는 파일이 드롭박스 서버에 올라가 있는 상태입니다. 그리고 제가 여기 이 파일을 선택하면 자 무브밑에 프리비어스 버전스라고 하는 항목이 있어요. 요거는 이전 버전을 보고 싶다는 뜻이죠. 자! 요것을 선택을 하면 보시는 것처럼 버전 원투쓰리가 이렇게 나타 납니다. 그 중에서 커런트는 현재 상태 즉, 잘 켜고, 막 쓰고, 꼭 끈다라는 내용이죠. 그리고 버전 쓰리는 보시는 것처럼 켜고 쓰고 끈다라는 내용이고 버전2는 내용이 없습니다. 그리고 만약에 여러분이 예전 상태 버전 쓰리 상태로 이 파일에 내용. 사용설명서.txt 파일 내용을 원복 하고 싶다면 여기 있는 리스토어 버튼을 클릭 하기만 하면, 이 내용이 옜날 상태로 돌아가게 된다라는 것이죠.자 클릭해 볼게요. 자 그러면 사용 설명서 내용이 켜고 쓰고 끈다로 바뀐 것을 알 수가 있죠.
자! 여기서 여러분들에게 이야기 하고싶은 거 두가지가 있습니다. 자! 첫번째는 여러분이 앞으로 버전관리시스템을 배우게 될 건데, 버전관리 시스템은 약간의 수련이 필요 합니다. 하지만 그 수련은 분명히 말씀드리지만 할만하고 여러분이 제대로 프로젝트 하기 위해서는 반드시 필요합니다. 그런데 그 수련을 지금할 시간이 없거나 또는 좀 너무 어렵게 느껴진다거나, 그럴 수 있어요. 그런 경우에는 여러분들이 버전관리 시스템을 시스템이 없이 프로젝트를 할 것이 아니고, 드랍박스 구글드라이브와 같은 이러한 이 버젼관리 기능을 가지고 있는 클라우드서비스를 이용해서 여러분의 소스코드를 반드시 안전하게 보관했으면 좋겠다는 겁니다. 그리고 그 소스코드가 어떤 문제가 생겼을 때, 이러한 기능들 이전 상태로 돌아갈 수 있는 이런 기능을 이용해서 심각 한 경우에는 옜날 상태로 원복 할 수 있는 그런 기능들을 기본적으로 아주 편리하게 제공하는 기능 들이기 때문에, 혹시 여러분들이 버전관리시스템을 사용하지 않는다손 치더라도 최소한 이런 써비스를 여러분들이 꼭 썼으면 좋겠다는 겁니다. 제가 소규모 기업들 에대해서 컨설팅 같은 거를 나가보면, 버전관리시스템을 쓰고 있지 않은 경우가 많이 있어요. 이를테면 cto분이 초창기에 혼자서 개발을 했었던 코드인데, 자신의 노트북에서만 작업을 한 거예요. 그리고 이게 어디 딴 곳에 복사되어있지 않은 상태에서 2년 정도 프로젝트를 한 거에요. 저는 그걸 보고 깜짝 놀랬어요. 만약에 컴퓨터가 고장 났다든가 분실되거나 침수 된다면 회사가 2년 동안 공들여 왔던 그 솔루션이 사라지게 되는 겁니다. 그럼 회사 문 닫아야 되는거죠. 자! 이것은 굉장히 중요한 문제기 때문에 아주 심각한 위험속에 노출되어 있는 거기 때문에 여러분들이 버전관리시스템 그리고 어떤 소스코드를 안전하게 보관 하기 위한 의미로서의 버전관리시스템, 이런 것들 에대해서 여러분들이 꼭 중요하게 생각할 필요가 있습니다. 그래서 다시 말씀드리지만 사용하기 어렵다 그러면 드랍박스라도 쓰세요. 구글드라이브라도 꼭 쓰시길 바랍니다.
자! 이렇게 해서 제가 버전관리시스템이 무엇인가? 버전관리시스템을 왜 사용해야 되는가? 또는 그것의 대체재는 무엇인가?에 대해서 제가 말씀을 드리렸고요. 다음 시간에는 버전관리시스템에 대한 구체적인 제품들에 대해서 다음 시간에 살펴보도록 하겠습니다.