개발자

“깃을 넘어…” 데브옵스를 위한 버전 제어 시스템의 발전 동향

Bob Violino | InfoWorld 2024.04.17
소스 코드, 프로그램, 문서 또는 기타 정보 모음에 대한 변경을 관리하는 툴은 버전 제어, 리비전 제어, 소스 제어 또는 소스 코드 관리 등 다양한 이름으로 불리지만, 가리키는 대상은 동일하다. 어떤 이름으로 지칭하든 이런 시스템은 소프트웨어와 데이터가 필수 요소인 지금 세계에서 갈수록 중요해지고 있다.
 
ⓒ Getty Images Bank


버전 제어 시스템에 대한 수요

버전 제어 시스템(version control system, VCS)은 소스 코드에 대한 모든 변경을 추적하는 데 사용되며, 개발팀 등이 시간 경과에 따라 변경을 관리하는 데 도움이 된다. 시장의 압력으로 인해 제품 출시 속도를 높이려는 개발 노력이 가속화됨에 따라 과거에 비해 버전 제어의 중요성이 훨씬 더 커졌다.

포레스터 리서치의 수석 애널리스트 크리스토퍼 콘도는 "전통적인 소프트웨어, 또는 코드형 인프라, 코드형 정책, 로우 코드로 생성된 코드와 같은 새로운 수요 증가 영역을 불문하고 소프트웨어에 대한 수요가 증가하고 있으며, 이는 버전 제어에 대한 수요에 직접적인 영향을 미친다"라고 말했다.

이어 콘도는 "모든 코드는 버전 제어가 필요하므로 소프트웨어에 대한 모든 수요 증가는 버전 제어 시스템의 수요 증가로 이어진다"라고 덧붙였다.

시장조사 업체 아큐멘 리서치 앤 컨설팅(Acumen Research and Consulting)은 보고서에서 더 많은 기업이 애자일 개발 방법론을 채택하고 협업과 코드 관리의 중요성이 높아지면서 버전 제어 시스템 시장이 성장할 것으로 예상했다. 

보고서는 이 같은 유형의 제품에 대한 시장은 연평균 12% 성장해서 2030년에는 그 규모가 26억 8,000만 달러(약 3조 7,000억 원)에 이를 것으로 추정하며, 클라우드 기반 버전 제어 시스템의 도입 증가도 시장 성장을 촉진하고 있다고 전했다.

IDC의 소프트웨어 개발, 데브옵스 및 데브섹옵스 부문 프로그램 부사장 짐 머서는 "버전 제어 또는 소스 제어 관리는 원래 개발자 소스 코드용으로 설계됐다. 그러나 코드형 인프라, 코드형 보안, 코드형 네트워킹 등 모든 것이 코드형으로 제공되는 접근 방식으로 업계가 발전하면서 버전 제어의 소비자가 더 많아졌다"라고 말했다.

또한 머서는 "모든 것이 코드로 제공되면서 깃 버전 제어를 사용해 전체 애플리케이션 인프라와 구성을 버전 제어에서 코드로 관리하는 개발 및 배포 방법론인 깃옵스(GitOps)의 기반이 마련됐다. 또한 코드가 현대 디지털 비즈니스의 핵심이 된 만큼 버전 제어에도 코드를 지원하고 보호하기 위한 더 많은 기능과 강력한 보안이 필요하다"라고 지적했다.


VCS에서 확인해야 할 사항

버전 제어 시스템은 변화하는 기술 환경과 시장 수요를 충족하기 위해 발전하고 있다. 콘도는 기본적인 수준에서 버전 제어 시스템은 개발자가 소스 코드와 구성, 기타 시간이 지나면서 변경되는 아티팩트의 다양한 버전을 관리할 수 있게 해준다고 말했다. 또한 팀은 조직의 규모와 우선 순위에 따라 다양한 부가적인 기능을 원한다.

대표적인 기능이 확장성이다. 머서는 버전 제어 시스템은 여러 도메인과 플랫폼에 걸쳐 코드를 관리해서 조직 내의 개발자와 다른 인력이 동일한 버전 제어 시스템을 사용할 수 있도록 해야 한다고 강조했다. 특히 확장성은 개발 이니셔티브를 확장하면서 성장 중인 기업에 중요하다.

성능은 또 다른 중요 벤치마크다. 머서는 버전 제어 소프트웨어는 조직 내의 어디에서 사용되든 우수한 성능을 제공해야 한다고 말했다. 

버전 제어 시스템에는 브랜치 기능도 있어야 한다. 브랜치를 사용하면 버전 제어 대상 객체를 복제하고 그 이후부터 각 객체를 개별적으로, 병렬로 수정할 수 있다.

콘도는 "작업을 수행하면서 주 브랜치의 작업에 지장을 초래하지 않도록 새로운 작업을 위한 임시 브랜치를 만드는 것은 일반적인 관행이다. 마찬가지로, 새로운 작업을 주 브랜치에 병합할 준비가 되면 브랜치를 트렁크로 병합하는 기능이 중요해진다"라고 덧붙였다.

현대 버전 제어 시스템에서는 협업도 필수적이다. 개발팀은 각기 다양한 지역에서 작업하는 경우가 많으며, 프로젝트에서 효과적으로 협업해야 한다. 협업은 단일 코드베이스든 여러 브랜치든 모든 개발자가 동일한 소스에서 작업하도록 보장한다.

API를 통한 확장성도 확인해야 할 또 다른 기능이다. 콘도는 "버전 제어 시스템이 테스트, 배포, 프로덕션 릴리스를 트리거하는 자동화를 조율하기 위한 기록 시스템으로 사용되는 경우가 증가하고 있다. 따라서 지속적인 제공을 달성하려면 버전 제어를 배포 및 릴리스 관리 툴과 통합할 수 있는 안전한 API가 필요하다"라고 설명했다.

마지막으로, 머서는 버전 제어 시스템은 데이터 무결성 및 이력을 제공해야 한다고 언급했다. 사용자는 코드 버전 이력에 의존해서 필요에 따라 롤백 또는 롤포워드할 수 있어야 한다.


깃과 데브옵스를 중심으로 한 방향 설정

머서에 따르면, 지난 20여년 동안 서브버전(Subversion), 클리어케이스(ClearCase), 머큐리얼(Mercurial)을 비롯한 많은 버전 제어 시스템이 개발됐다.

그러나 머서는 "대부분 팀은 깃 오픈소스 프로젝트 기반의 깃 기반 솔루션을 선호하므로 주 옵션은 깃허브, 깃랩, 비트버킷이다. 깃이 지배적 지위를 가진 만큼 다른 대부분의 버전 제어 시스템에는 깃 연결 브리지 또는 깃 통합 기능이 있다"라고 말했다.

머서는 깃랩과 깃허브를 포함한 버전 제어 시스템 대부분은 그동안 기능을 추가해 완전한 데브옵스 플랫폼으로 발전했다면서 "그 외에 확장성, 성능, 보안, 그리고 소스 코드를 코드 유출로부터 보호하기 위한 정책 생성 기능, 디지털 출처 시행 등을 중심으로 개발이 이뤄지는 추세"라고 설명했다.

시장조사 업체 가트너의 선임 애널리스트 토마스 머피는 "깃허브, 깃랩, 비트버킷은 비약적으로 발전하면서 '현대 개발자 환경'에 가까워졌다. 빌드를 실행하고 프로젝트를 관리하고 문서를 관리하고 소프트웨어를 패키징, 테스트, 배포할 수 있다"라고 언급했다.


빠질 수 없는 생성형 AI

머피는 버전 제어 플랫폼이 이제 생성형 AI 어시스턴트를 사용해 코드 생성과 업데이트 및 기타 작업을 수행하는 데 도움을 제공한다고 말했다. 종종 복잡해질 수 있는 커밋 메시지 작성, 브랜치 및 병합과 같은 일반적인 작업에서 AI 기반 비서가 도움이 된다는 설명이다. 

콘도는 깃허브가 버전 제어 시스템 혁신에 있어 리더라고 언급했다. 깃허브 코파일럿은 깃허브의 데이터를 사용해서 LLM을 학습시키는 생성형 AI 애플리케이션이다. 이렇게 학습된 LLM은 코딩 제안으로 개발자를 보조할 수 있다. 콘도는 깃랩도 비슷한 접근 방식의 AI 기반 비서를 추진하고 있으며, 깃허브와 차별화하기 위해 많은 노력을 기울이고 있다고 말했다.

콘도는 그러나 일부 기업에서는 생성형 AI의 등장과 LLM이 학습되는 방식을 우려한다면서 "알려진 바와 같이 깃허브 코파일럿과 같은 툴은 호스팅하는 공개 버전 제어 시스템의 소스 코드를 사용해서 자체 모델을 학습시킨다. 구매자는 그래도 괜찮은지, 아니면 자신의 코드가 그러한 용도로 사용되지 않는 편이 좋을지를 결정해야 한다"라고 조언했다.

콘도는 민감한 알고리즘이 있거나 지적 재산(IP)의 유출을 우려하는 기업은 IP가 학습 데이터로 사용되지 않도록 보호할 안전 장치가 있는지 확인해야 한다면서 "다만 목표가 IP를 오픈소스 프로젝트로 공유하는 것이라면 결정권이 고객에게 있다는 전제하에 괜찮을 수도 있다"라고 덧붙였다.


클라우드 기반 버전 제어

아큐멘 리서치 앤 컨설팅 보고서 집필팀은 최근 몇 년 사이 나타난 또 다른 추세로 클라우드 기반 버전 제어 시스템을 향한 전환을 꼽으며 이런 서비스는 실시간 협업, 어디서나 가능한 편리한 접근성, 온프레미스 시스템 대비 낮은 초기 비용과 같은 이점을 제공한다고 전했다.

콘도는 깃허브, 깃랩, 기타 온라인 리포지토리는 자체 호스팅되는 버전 제어 시스템 운영에 따르는 번거로움 없이 서비스형 소프트웨어 제품을 사용할 수 있도록 한다면서 "분산된 팀은 이를 통해 여러 지역에 걸쳐 더 쉽게 협업할 수 있다. 자체 호스팅되는 시스템에서는 하기 어려운 부분"이라고 말했다. 

콘도에 따르면 자체 온프레미스 버전 제어 시스템을 선택하는 기업에도 나름의 우려 사항이 있으며, 성공적이고 안전하게 운영하기 위해 필요한 기술과 리소스가 있다. 

콘도는 "다른 지역에 있는 팀의 액세스와 협업을 실현하면서 안전한 VCS를 효과적으로 운영하기 위한 리소스가 있어야 한다. 사무실이 미국에만 있고 비즈니스도 미국에서만 운영하는 기업이라 해도 이 부분을 고려해야 한다. 원격 개발자를 사용하거나 다른 지역에 개발자를 둔 시스템 통합업체를 활용하는 경우가 증가하고 있기 때문"이라고 덧붙였다.

또한 콘도는 버전 제어 시스템을 운영하는 것은 변화에 보조를 맞춘다는 것을 의미한다면서 "버전 제어 플랫폼은 지속적으로 발전하고 업데이트된다. 이를 유지할 대역폭이나 기술이 부족하다면 아무 소용이 없다"라고 설명했다.


인기 있는 버전 제어 시스템

현재 주요 버전 제어 시스템은 무엇이고 각각의 특징은 무엇일까? 간단히 살펴보면 다음과 같다.
 
  • 아파치 서브버전(SVN) : 아파치 서브버전(Apache Subversion, SVN)은 아파치 라이선스에 따라 오픈소스로 배포되는 소프트웨어 버전 및 리비전 제어 시스템이다. 개발자는 SVN을 사용해서 소스 코드, 웹 페이지, 문서를 포함한 파일의 현재 및 과거 버전을 유지할 수 있다.
  • 비트버킷 : 깃 기반의 소스 코드 리포지토리 호스팅 및 협업 서비스 비트버킷(Bitbucket)은 아틀라시안이 소유하고 있다. 비트버킷은 상용 요금제와 무료 계정, 2가지 모두 제공하며 비공개 리포지토리의 수는 무제한이다. 주로 코드 및 코드 리뷰에 사용된다. 
  • : 가장 널리 사용되는 버전 제어 시스템인 깃(Git)은 소스 코드 관리에 사용되는 무료 오픈소스 데브옵스 툴이다. 작은 개발 프로젝트부터 초대형 개발 프로젝트까지 처리할 수 있다. 깃을 사용해 소스 코드의 변경을 추적하면 여러 개발자가 비선형적 개발 프로젝트에서 협업할 수 있다.
  • 깃허브 : 마이크로소프트의 자회사인 깃허브(GitHub)가 만든 플랫폼으로, 개발자가 코드를 만들고 관리하고 공유할 수 있게 해준다. 깃허브는 깃의 분산 버전 제어와 함께 액세스 제어, 버그 추적, 작업 관리 및 기타 기능을 제공한다. 대규모 오픈소스 리포지토리를 제공하며 소프트웨어 프로젝트와 커뮤니티를 관리하기 위한 툴이 있고 추가 기능을 통해 깃허브를 지원하는 광범위한 파트너를 보유했다.
  • 깃랩 : 깃을 기반으로 하는 깃랩(GitLab)은 협업 및 버전 제어에 사용되는 오픈소스 리포지토리 관리자다. 팀은 깃랩을 사용해 프로젝트를 관리하고 문제를 추적하고 코드를 검토할 수 있다.
  • 머큐리얼 : 소프트웨어 개발자를 위한 무료 분산 소스 제어 관리 툴인 머큐리얼(Mercurial)은 모든 규모의 프로젝트에 사용할 수 있다. 플랫폼 독립성을 염두에 두고 만들어졌다.
  • 퍼포스 : 퍼포스(Perforce)는 깃을 지원하지만 독자적인 제품인 헬릭스 코어(Helix Core)를 제공한다. 개발자를 위한 버전 제어 플랫폼으로, 소스 코드, 디지털 자산, 대용량 바이너리 파일의 변경을 추적 및 관리한다.
  • 팀 파운데이션 버전 컨트롤(TFVC) : 마이크로소프트의 팀 파운데이션 버전 컨트롤(Team Foundation Version Control, TFVC) 플랫폼은 깃과 같은 분산 버전 제어와 반대로 중앙 집중식 버전 제어 시스템이다. TFVC를 사용하면 세분화된 권한을 적용하고 파일 수준까지 액세스 제한을 적용할 수 있다.
editor@itworld.co.kr
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.