버전 관리라는 단어를 살펴봅니다.


안녕하세요.
고코더 입니다.


이전 강의에서 버전관리라는 의미를 설명해달라는 분이 계서서 글을 씁니다.
IT 종사자 특히 개발자들 사이에는 버전관리는 매우 중요합니다. 그리고 자주 듣는 단어입니다.
그만큼 중요합니다. 하지만 실무 경험이 없는 학습자일 경우 약간 애매한 느낌이 있을거 같습니다.



버전관리란?


좀 더 단순하게 정의하자면 이렇습니다.

시스템에서 파일의 변화를 기록해두었다가 특정 시점으로 다시 돌아갈 수 있는걸 말합니다. 
다시 말해 데이터의 과거와 현재 상태를 괸리합니다.
그런데 버전관리는 꼭 개발자를 위한 것만은 아닙니다. 
데이터가 있는 모든 플랫폼에서 적용 가능합니다.



에버노트에도 버전관리


 제가 사용하는 노트 프로그램인 에버노트는 프리미엄을 결제한 고객에게는 버전 관리를 제공합니다. 저는 오타가 많은 편이라 글을 작성하다가 모르고 한 단락을 통으로 지우거나 잘못 편집하여 순서가 뒤죽박죽이 될때가 있습니다. 그럴땐 자신있게 변경내역에 가서 내가 원하는 시점으로 돌리고는 합니다. 서버와 동기화 할때마다 버전을 그대로 저장해둡니다. 노트 하나에 백업 파일이 많네요.



게임으로 비유한다면


우리가 하는 게임도 사용하는 방법에 따라 버전 관리를 하게 됩니다. 
RPG 싱글플레이 게임을 하다보면 수시로 세이브를 합니다. 
파일 이름은 이런식으로 하겠죠.
"1. 처음 보스 만나기전, 2020년 1월 1일"
"2. 중간 보스 만나기전, 2020년 1월 2일"
"3. 최종 보스 만나기전, 2020년 1월 3일"

무언가 퀘스트를 잘못 이루었거나 캐릭터가 죽을걸 대비하여서 여러개의 파일을 만들어놓습니다. 
이런 활동이 바로 버전 관리입니다. 



버전 관리 방식은 크게 두가지로 나뉩니다.


이전에 설명한 글이 있지만 이번에는 개발자가 아닌 분을 위해 더 쉽게 설명드리겠습니다. 

1. 서버 의존형, 서버와 클라이언트가 연결된 방법
 이 방법은 서버에 파일을 의존하는 방식입니다. 클라우드 서비스를 씁니다. 어제 찍은 사진을 온라인에 올려두고 스마트폰에서는 지웁니다. 그런데 다음날 클라우드 시스템이 망가졌다고 합니다. 그럼 이제 파일은 찾지 못합니다. 서버를 중앙에 두고 사용하는 이 방식은 분산형 이전에 많이 사용하던 방식입니다. 

2. 분산형, 모든 클라이언트가 저장소를 갖는 방법
 서버에 저장된 파일은 나에게도 동일하게 가지고 있습니다. 그리고 내 스마트폰에도 가지고 있고 학교에 있는 노트북에도 가지고 있습니다. 이런 방식을 분산 모델이라고 합니다. 3개의 장치에서 동기화 되어 있으므로 3개가 동시에 마비되지 않는 이상 파일을 잃어버릴 일은 없습니다. 



마무리


버전 관리는 많이 생각하고 알아볼수록 좋은 이론입니다. 


댓글을 달아 주세요