버전 관리 시스템이란?

VCS(버전 관리 시스템)는 소스 코드의 변경 사항을 트래킹하고 관리하는 데 필수적입니다. 아래에서 분산형, 중앙 집중형, 로컬 버전 관리 시스템 각각의 기본 사항에 대해 알아보세요.

버전 관리 시스템 소개

버전 관리는 소스 코드 및 에셋에 대한 업데이트를 트래킹하고 관리하는 체계적인 프로세스입니다. 버전 관리 시스템은 효율적인 워크플로의 바탕이 되며, 프로그래머와 아티스트, 기타 팀원을 위한 SSOT(single source of truth) 역할을 하는 동시에 모두가 공유 코드 베이스에 독립적으로 기여할 수 있도록 지원합니다. 개발 중에 치명적인 오류가 발생하는 경우 코드 업데이트를 '실행 취소'할 수 있도록 지원하여 안전망 역할도 합니다.

팀의 규모, 지역 분포와 같은 요인은 게임 개발자가 어떤 버전 관리 시스템을 선택하고 구현할지에 대한 결정에 영향을 미칩니다. 개인 개발자는 로컬 솔루션만을 사용해도 충분히 작업을 진행할 수 있지만 대규모 팀은 시간대와 지역에 구애받지 않고 협업을 진행할 수 있도록 더 견고하고 확장성이 뛰어난 버전 관리 시스템을 모색해야 합니다.

버전 관리 시스템을 사용해야 하는 이유

버전 관리 시스템은 DevOps의 핵심으로, 프로젝트의 소스 코드에 대해 팀이 협업하고 빠르게 반복 작업을 할 수 있도록 지원합니다.

버전 관리를 사용하면 항상 백업이 존재하게 됩니다. 개별 프로젝트 업데이트는 메인 소스 코드로 병합되기 전에 '커밋'이라고 하는 단일 그룹에 주기적으로 수집됩니다. 업데이트로 인해 오류가 발생하는 경우 프로젝트를 이전 버전으로 되돌린 다음 커밋을 검사하여 문제를 진단할 수 있습니다.

프로젝트 전체 이력에 액세스하고 실수를 되돌릴 수 있는 버전 관리 시스템을 사용하면 버그 트래킹 과정을 간소화하고 이전에 삭제한 기능을 손쉽게 복원할 수 있습니다.

중앙 집중형 버전 관리 시스템

분산형 버전 관리 시스템

분산형 버전 관리 시스템을 사용하면 메인 서버에 연결하지 않고도 체크인, 브랜치, 병합을 할 수 있습니다. 각 기여자는 클라우드에 저장된, 복제된 저장소에서 작업합니다. 주된 장점은 팀원이 네트워크이나 VPN의 속도 저하에 대한 걱정 없이 별도로 신속하게 작업할 수 있다는 점입니다. 오프라인에서도 프로젝트에 대한 작업을 진행할 수 있지만, 업데이트를 내보내거나 가져오려면 인터넷 연결이 필요합니다.

분산형 버전 관리 시스템을 사용할 때는 대기 시간이 길어질 수 이으며, 특히 변경 이력이 많은 대규모 프로젝트에서 전체 프로젝트 이력을 다운로드해야 하는 경우라면 그럴 가능성이 더 높습니다. 이러한 파일이 빠른 속도로 여유 공간을 차지할 수 있으므로 대규모 바이너리 파일을 사용하는 스튜디오에서는 스토리지 사용을 주의 깊게 모니터링해야 합니다.

유연성을 높이고 잠재적으로 생산성을 끌어올리고자 하는 스튜디오라면 분산형 버전 관리를 고려하는 것이 좋습니다.

로컬 버전 관리 시스템

로컬 버전 관리 시스템은 가장 간단한 버전 관리 형태이며 팀 단위보다는 1인 개발자가 주로 사용합니다. 로컬 버전 관리의 경우 모든 프로젝트 데이터가 단일 컴퓨터에 저장되며 프로젝트 파일에 대한 변경 사항은 패치로 저장됩니다. 각 패치에는 이전 패치 이후에 구현된 업데이트만 포함됩니다. 프로젝트의 특정 버전에 문제가 발생하는 경우 문제를 진단하려면 전체 패치 컬렉션을 검사하여 적기에 특정 시점의 프로젝트 파일 상태를 짜 맞춰야 합니다.

모든 데이터가 컴퓨터 하나에 연결되어 있으므로 로컬 버전 관리 시스템은 분산형 및 중앙 집중형보다 본질적으로 유연성이 낮습니다. 팀원 간의 협업이 쉽지 않으며, 만약 데이터베이스가 손상되어 손실된 정보를 복원하지 못하면 곤란한 상황에 처할 수 있습니다.

일반적으로는 로컬 버전 관리로 시작해도 무방하지만, 규모가 커지기 시작하면(한 명에서 단 두 명으로 팀이 커진 경우에도) 분산형 또는 중앙 집중형 방식을 사용하는 것이 좋습니다.

분산형 버전 관리 시스템

중앙 집중형 버전 관리 시스템

중앙 집중형 버전 관리 시스템은 체크인/푸시 워크플로를 사용하여 메인 서버에 연결됩니다. 소스 코드의 변경 사항 또는 업데이트는 새 버전으로 저장소에 자동 저장됩니다. 중앙 집중형 버전 관리 시스템은 강력한 브랜치 및 병합 기능을 제공하며 저장소를 여러 시스템으로 복제할 필요가 없습니다. 이러한 측면에서 보면 더욱 안전합니다.

중앙 집중형 버전 관리 시스템에는 네트워크 연결이 필요합니다. 팀이 하나의 서버에 저장된 단일 프로젝트 버전에 종속되므로 서비스 중단이 발생하면 속도가 크게 저하될 수 있습니다. 중앙 집중형 버전 관리의 또 다른 단점은 확장성이 떨어질 수 있다는 것입니다. 프로젝트에 기여하는 개발자가 많을수록 안정적인 환경에서 변경 사항을 내보낼 기회가 줄어들며 이로 인해 병합 충돌과 같은 문제가 발생할 수 있습니다.

설정과 사용이 쉬운 버전 관리 시스템에 관심이 있다면 중앙 집중형 워크플로를 고려해 보는 것도 좋습니다.

로컬 버전 관리 시스템

로컬 버전 관리 시스템은 가장 간단한 버전 관리 형태이며 팀 단위보다는 1인 개발자가 주로 사용합니다. 로컬 버전 관리의 경우 모든 프로젝트 데이터가 단일 컴퓨터에 저장되며 프로젝트 파일에 대한 변경 사항은 패치로 저장됩니다. 각 패치에는 이전 패치 이후에 구현된 업데이트만 포함됩니다. 프로젝트의 특정 버전에 문제가 발생하는 경우 문제를 진단하려면 전체 패치 컬렉션을 검사하여 적기에 특정 시점의 프로젝트 파일 상태를 짜 맞춰야 합니다.

모든 데이터가 컴퓨터 하나에 연결되어 있으므로 로컬 버전 관리 시스템은 분산형 및 중앙 집중형보다 본질적으로 유연성이 낮습니다. 팀원 간의 협업이 쉽지 않으며, 만약 데이터베이스가 손상되어 손실된 정보를 복원하지 못하면 곤란한 상황에 처할 수 있습니다.

일반적으로는 로컬 버전 관리로 시작해도 무방하지만, 규모가 커지기 시작하면(한 명에서 단 두 명으로 팀이 커진 경우에도) 분산형 또는 중앙 집중형 방식을 사용하는 것이 좋습니다.

Benefits of version control

Modification Tracking

Easily track modifications and merge across the project

File Comparison

Enables file comparison and identifies the differences between files

Troubleshooting

Easy troubleshooting due to the full archive of changes recorded within the VCS

Central Repository

The central repository allows seamless collaboration without impacting individual performance or code changes

File Sharing

Free up space and time by seamlessly sharing files with developers and stakeholders without having to constantly save copies of code adjustments

Distributed Development

Distributed development allows developers to work anywhere at their convenience

Version Control e-Book

Should you work centralized or distributed? Each has its advantages and disadvantages – learn which approach to version control will work best for your team in this free e-book.

관련 자료

리소스를 더 살펴보고 버전 관리 시스템과 기타 DevOps 툴 및 프로세스에 대해 알아보세요.

애자일과 DevOps 비교

애자일과 DevOps는 주기적인 릴리스 일정을 통해 고객 가치를 제공한다는 점에서 동일한 목표를 가지고 있지만, 접근 방식에서 다소 차이가 있습니다. 애자일과 DevOps를 함께 사용하는 방법을 알아보세요.

DevOps 원칙

모든 게임 스튜디오에서는 제작 시간을 단축하면서 시간의 압박으로부터 해방되고자 하며, DevOps는 이를 실현하는 최적의 방법입니다. DevOps 방법론의 핵심 원칙을 알아보고 시작하세요.

DevOps의 이점

DevOps 방식을 구현하면 개발 파이프라인을 간소화하고 팀과 사용자의 만족도를 향상할 수 있습니다. DevOps를 사용하면 어떤 도움이 되는지 알아보세요.

게임 개발용 버전 관리

Unity의 버전 관리 시스템을 사용하여 분산형 혹은 중앙 집중형으로 작업하세요. 파일 및 체인지 세트 기반 워크플로를 사용해 큰 바이너리 파일을 관리할 수 있습니다. 모든 엔진에서 작동하는 안전한 버전 관리 시스템으로 소스 코드와 에셋을 저장하고 변경 사항을 트래킹합니다.

Unity에서는 최적의 웹사이트 경험을 제공하기 위해 쿠키를 사용합니다. 자세한 내용은 쿠키 정책 페이지를 참조하세요.

확인