버전관리(Version Control) 이해 및 Git, SVN

    버전관리의 개념

    우선 버전관리는 여러명이 해야 할때와 혹은 혼자서 개발해야 할때의 목적이 다를 수 있다.

     

    버전관리(Version Control) 이해 및 Git, SVN


    기본적인 개념

    버전관리의 기본적인 개념은 프로그램을 짠 코드의 상태를 버전이라 칭하고, 치명적인 오류가 발생하거나 이전 상태로 되돌려야 하는 경우 해당 버전으로 쉽게 롤백(RollBack) 시켜주는 것을 버전 관리라고 한다.

     

    혼자서 개발

    혼자서 버전관리를 사용하는 이유는 다음과 같다.

    • 여러 환경에서 동시에 개발을 진행하여 하나의 저장소가 필요하게 되는 경우
    • 프로그램을 체계적으로 개발하여, 버전을 관리해야 하는 경우

     

    여러명이 동시 개발

    여러명이서 하나의 프로젝트를 개발하는 케이스는 혼자서 개발하는 것보다 더 다양한 이유를 가지고 있다. 우선 혼자서 개발하는 케이스는 기본으로 따라오며 아래와 같은 이유로 인해서 사용하게 된다.

    • 동일한 코드를 동시에 수정을 한 경우 충돌이 발생할 수 있는데 버전관리를 사용한 경우, 어느 부분이 충돌이 났는지 쉽게 인지할 수 있고, 관리를 할 수 있게 됨
    • 남들이 개발한 코드를 쉽고 빠르게 갱신할 수 있어서 프로그램의 변화를 쉽게 알 수 있음
    • 프로젝트를 배포하는 과정이 수월해질 수 있음
    • 초급 개발자가 짠 코드를 고급개발자가 알 수 있기 때문에 프로그램의 오류를 쉽게 알 수 있으며, 코드 리뷰를 하기에 용이해진다

     

    이와같이 버전관리를 사용하는 케이스는 다양한 잇점이 있다. 최근에는 마이크로 아키텍쳐가 대세가 되면서 한사람이 독립적인 프로젝트를 개발하는 경우가 많아지면서 여러명이 하나의 프로젝트를 동시에 개발 하는 케이스가 비록 줄어들곤 있지만 혼자서 개발을 하더라도 저장소에 코드를 올릴 수 있기 때문에 인수인계 및 버전관리 등이 되기에 필수라 생각하면 된다.

     

     

    버전관리 프로그램 종류

    버전관리는 크게 2개로 나뉠 수 있다. 이전에는 CVS까지 포함하여 3가지로 말할 수 있지만 실질적으로 깃(git)과 서브버전(Subversion) 2가지만 생각하면 된다. 서브버전을 모르는 사람들이 많을텐데 아직도 중앙집권식 프로젝트에서는 SVN을 사용하는 곳이 많다.

     

    깃(Git)

    깃허브(github)와 같은 사이트가 대두되었고 워낙 다양한 기능을 내포하게 되면서 현재 버전관리의 대명사가 되어버렸다. 불과 5년전만 하더라도 현재와 같은 위치까지는 아니었지만, 지금은 압도적인 1위라 볼 수 있다.

     

    git

     

    다만 SI와 같이 외부에 공개를 하면 안되는 프로젝트와 공공기관의 경우 SVN을 사용하는 경우가 많은데 깃의 경우 사용하기가 힘이 들고, 충돌이 날 경우 SVN보다 해결하기가 힘이 들 수 있기 때문이다. SVN의 경우 별도의 공부없이 쉽게 습득이 가능하지만, 깃의 경우 별도의 공부를 하지 않을 경우 제대로 사용하기 힘이 들 수 있다.

     

    서브버전(SubVersioN, SVN)

    한 때 CVS를 밀어내며, 버전관리의 대명사가 되었으나 오픈소스(Open Source)의 시대가 된 현재에서는 마찬가지로 역사의 뒤안길로 사라지는 중이다. 서브버전은 깃과 다르게 중앙집중형 구조에 적합하기에 내가 만든 프로그램을 외부에 공개하는 구조가 아니다. 다만 깃과 달리 사용이 매우 쉽고 private한 구조에 특화되었기 때문에 아직도 많은 private 프로젝트는 서브버전을 사용하는 경우가 많다. (물론 이렇게 서브버전을 쓰게 되면 깃을 찬양하는 개발자들이 매우 불만을 가진다)

     

    svn

     

    게다가 깃의 경우 여러명이 동시에 작업을 할 때 들어가는 비용이 있지만, 서브버전은 그런것 없이 그냥 레파지토리(Repository) 설치하고 아이디 관리하면 끝이다. 


    깃과 서브버전의 장단점이 분명 있지만, 이제 서브버전은 점차 사장이 되어가고 있기 때문에 신규 개발자들은 사실상 서브버전은 별도로 공부할 필요 없고 깃만 공부하면 된다. 서브버전의 경우 잠깐만 시간내서 러프하게 배워도 프로젝트를 하는데 전혀 문제 없기 때문이다.

    반응형

    댓글

    Designed by JB FACTORY