1. Background

프로젝트 개발 과정에서 중요한 몇 가지 요구사항이 있다.

  • 하나의 프로젝트를 여러 명의 개발자가 동시에 개발을 할 수 있어야 한다.
  • 개발 중 문제가 발생하면, 문제의 전후 상황을 파악하여 특정 시점의 버전으로 돌아갈 수 있어야 한다.
  • 각 버전 별로 소스 코드가 관리되어야 하며, 버전 간의 번경 내역을 추적할 수 있어야 한다.
  • 다양한 개발 시스템이 연동되어야 한다.

2. Version Control Systems (VCS)

버전 관리 시스템 (Version Control Systems, VCS)형상 관리 시스템 (Configuration Management Systems)이라고 불리고 Source Data와 그에 따른 변경 이력을 관리하는 도구이다.

  • 이를 통해 협업, 작업 추적, 복구 등이 가능하다.

2.1 Local Version Control Systems (내부 버전 관리 시스템)

초창기에는 개발자들이 개인 컴퓨터에서 소스 코드를 관리했으며, 이는 주로 단일 개발자가 프로젝트를 개발하고 관리할 때 사용되었다. 하지만 이러한 시스템은 몇 가지 중요한 단점을 가지고 있었다.

  • 개발자의 개인 컴퓨터에만 소스 코드와 버전 이력이 저장되어 있기 때문에 컴퓨터의 하드웨어 손상이나 장애 시에는 데이터 손실이 발생할 수 있다. 이는 전체 코드가 사라지는 큰 문제점으로 이어질 수 있다.

  • 여러 명의 개발자가 동시에 작업하고 변경 사항을 공유하는 것은 어려웠기 때문에 효율적인 협업에 어려움이 있었다.

2.3 Centralized Version Control Systems (Centralized VCS, 중앙 버전 관리 시스템)

  • 제한적인 협업이 가능하다. 한 사람이 수정하면 다른 사람들은 수정할 수 없다.
  • Commit 하는 즉시 서버에 적용되어 다수의 사용자에게 버그를 유발할 수 있다.
  • 인터넷 연결이 없으면 작업이 불가능하다.
  • 개인적인 version history를 가지기 어렵다.
  • 대표적으로 CVS, SVN 등이 있다.

1) CVS (Concurrent Version System)

  • 1980년대에 만들어진 형상 관리 도구이다.
  • Commit 중에 오류가 발생하면 rollback이 제대로 되지 않는 등의 문제가 있었다.
  • 이후 SVN(Subversion)으로 대체되었다.

2) SVN (Subversion)

  • 2000년대에 만들어졌고 현재까지 사용되고 있다.

2.4 Distributed Version Control Systesm (Distributed VCS, 분산 버전 관리 시스템)

  • Commit한 변경 사항이 개인 저장소에 적용된다.
  • 필요한 시점에 배포(push)가 가능하다.
  • 오프라인에서도 작업이 가능하다.
  • 개인적인 version history를 가질 수 있다.
  • 대표적으로 Mercurial, Git 등이 있다.

1) Git (Global Information Tracker)

  • SVN 보다 빠른 속도와 많은 기능을 제공한다.
  • 현재 대부분의 기업들은 Git을 사용하고 있다.
profile
거북선통통통통

0개의 댓글