버전 관리

Violet_Evgadn·2023년 9월 2일
0

Git

목록 보기
1/33
post-custom-banner

버전 관리

버전 관리란?

아마 게임을 해본 사람이라면 "v1.5.2"와 같이 버전이 존재하는 것을 알 수 있다.
게임은 이러한 버전 관리를 통해 3가지 업무를 수행한다.

  1. 이전에 존재했던 게임 내용의 보존
  2. 이전 버전에 존재했던 문제(버그)의 해결
  3. 새로운 버전에 새롭게 추가된 콘텐츠 추가

그리고 컴퓨터 프로그래밍 쪽에서 말하는 버전 관리 또한 이와 다르지 않다.

컴퓨터 프로그래밍에서의 버전 관리는 "내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것"을 의미한다.
그리고 이러한 버전 관리를 도와주는 툴(Tool)을 "버전 관리 시스템"이라고 한다.

당연히 내가 원하는 시점으로 이동하기 위해선 해당 시점에 코드가 어떤 형태로 존재했는지 저장되어 있어야 할 것이다.
따라서 버전 관리 시스템은 파일이 변경될 때마다 이를 기록함으로써 특정 시점 파일이 어떤 상태였는지를 저장하고 있어야 한다.

그래서 버전 관리를 다르게 말하자면 "파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 파일을 다시 꺼내올 수 있는 시스템"이라고도 말할 수 있다.

게임으로 보는 버전 관리

위에서 설명했듯 프로그래밍에서의 버전 관리와 게임의 버전은 큰 차이가 없다.
그렇다면 롤로 한번 비교해보자.

내 코드가 12.2 패치에서 12.3 패치로 업그레이드되었다고 가정하자.
이 패치에는 3개의 큰 패치가 있었다.
1개의 아이템 삭제(기능 제거), 1개의 챔피언 추가(기능 추가), 그리고 사일러스라는 챔피언의 버프(기능 변경)가 그것이다.

또 이전 버전에 우물에서 광클하면 아이템이 2번 사지는 버그가 있어 이를 해결했다. (오류 수정)

그런데 게임을 하다 보니 사일러스 버프가 너무 심해서 빠르게 롤백시켜야 할 필요가 생겼다. 이때 사일러스 캐릭터만 12.2 패치 버전으로 백업시킬 수도 있어야 한다. (부분 백업/핫픽스)

마지막으로, 롤이라는 게임은 프로 리그가 존재하는데 프로 리그 버전은 현 버전보다 조금 느리다.
따라서 프로게이머들은 선수끼리 연습을 할 때 해당 버전으로 연습을 할 필요가 있을 것이며 그들은 게임할 때 12.1패치로 되돌린 후 게임을 할 필요가 있다.(전체 백업)

여러 버전 관리 기능 중 핵심 기능만 몇 개 말해봤는데, 다른 기능도 매우 많다.
만약 "버전 관리 시스템으로 이것이 될까?"라는 의문을 가진다면, "게임 유지보수 시 이런 기능이 존재할까?"라고 생각해보자.

만약 게임 유지 시 있을 것 같은 기능이라면, 100% 버전 관리에도 있는 기능일 것이다.


Git

Git

아마 Github라는 말은 개발자가 아니더라도 들어봤을 것이다.
너무 유명한 말이라 그런지 Github = Git, 혹은 Github 에서 개발한 시스템이 Git이라고 생각하는 사람도 있을 것이다.(왜냐면 제가 처음에 그랬거든요.)

하지만 이는 순서의 역전이라고 볼 수 있다.

Git은 소스코드 버전 관리 시스템(VCS)로써 위에서 말했던 버전 관리 시스템 중 하나라고 할 수 있다.
특히 여러 버전 관리 시스템 중 "소스코드"의 버전 관리에 집중하는 시스템이 바로 Git이다.

그리고 Github는 이런 Git 시스템을 조금 더 편하게 사용할 수 있게 도와주는 여러 호스팅 사이트 중 하나인데, 어떻게 도와주는지 알기 위해선 형상 관리 툴 종류 중 "Client/Server 타입"과 "분산 저장소 타입"에 대해 알 필요가 있다.

Client/Server VS 분산저장소

항목Client/Server 타입분산저장소 타입
버전 관리 방식중앙 시스템(서버)에 버전 관리 자료 저장하나의 원격 저장소와 분산된 개발자 PC마다 존재하는 로컬 저장소에 자료 저장
버전 관리 위치서버에서만 가능개발자 로컬 PC와 원격 저장소 어디에서나 가능
서버 장애 발생서버에서만 버전 관리가 가능하므로 복구되기 전까진 협업 및 버전 관리 불가개발자 로컬 PC에서도 버전 관리가 가능하므로 끊김이 없는 버전 관리 가능
협업 안정성중앙 시스템에서만 버전관리를 수행하므로 충돌이 나거나 문제가 생길 가능성이 높음개발자 PC에서 한 번 문제를 해결하고 원격 저장소에 Push 할 수 있으므로 Commit 실수가 바로 모든 개발자에게 영향을 주진 않음
대표 ToolSVNGit

둘의 차이점을 설명하려 만든 표인데 어쩌다 보니 분산 저장소 타입의 장점을 열거한 표가 되어버렸다.
위에서 볼 수 있듯 분산 저장소 타입은 중앙 시스템에 큰 영향을 받지 않는다는 장점과 협업을 조금 더 유연하게 해준다는 장점 때문에 많이 활용되고 있다.

Git 호스팅 사이트

이러한 분산 저장소 타입(Git)도 결국 원격 저장소를 가지고는 있어야 한다. 그래야지만 다른 개발자들과 나의 코드가 최신 버전으로 업데이트될 수 있기 때문이다.

이러한 원격 저장소를 Git에서는 Git Repository라고 부르며 이러한 Repository에 대한 원격 액세스를 제공하는 사이트들이 바로 Git 호스팅 사이트이다.
그리고 이 호스팅 사이트 중 대표적인 것이 Github이다.

Git 호스팅 사이트에는 Github 말고도 다양한 사이트가 존재하는데, 그중 가장 많이 활용되는 Github, GitLab, Bitbucket에 대해 알아보자.

아래 설명은 https://disbug.io/en/blog/github-vs-gitlab-vs-bitbucket 를 기반으로 정리했습니다.

Github

  • 가장 대중적으로 활용되는 툴

    • 가장 많이 활용된다는 것이 무시 못 하는 장점인 것이, 많이 활용된다는 것은 그만큼 정보가 많다는 것이다. 즉, 배우기도 쉽고 문제를 해결하기도 쉬우며 실제로 현업에서 사용할 가능성도 크다는 의미이다.
  • 깃허브 이슈를 통해 프로젝트 추적/관리가 쉬움

  • 깃허브 위키를 통해 다른 개발자와 정보를 공유할 수 있음

  • (개인적인 느낌) Pull Request 창이 가장 체계적으로 되어 있어 협업이 쉬워지고 요구사항이 명확해짐

  • 깃허브 마일스톤을 통해 진행 상황을 다른 개발자와 공유할 수 있음

GitLab

  • GitLab의 기반은 CI/CD 자동화이므로 다른 GIT 저장소와 다르게 전체 DevOps 주기를 지원

  • 에픽, 그룹 및 마일스톤을 사용하여 포트폴리오 계획 및 관리 가능

  • JIRA 티켓 및 버그를 가져올 수 있음

  • Gitlab 문제는 첨부 파일로 이메일을 통해 전달할 수 있고 CSV 파일로 내보낼 수 있음

  • 코드 품질 보고, 취약성 관리, 코드 보안 스캐닝 등을 통해 보안 솔루션을 활용할 수 있음

  • 협업 계획 도구를 사용하여 프로젝트를 효율적으로 관리할 수 있고 비즈니스 성과를 감독할 수도 있음

Bitbucket

  • Jira, Trello 및 Confluence를 개발한 Atlasian에서 만든 서비스

  • 한 때 무한하고 비용이 들지 않는 개인 리포지토리를 제공하는 유일한 회사였기에 시장에서 두각을 나타냄

    • Github는 2019년부터 Private 레포를 무료 구독자에게 풀었으며 Gitlab은 2014년에 발표됨
  • Git과 유사한 버전 관리 툴인 Mercurial(머큐리얼)을 사용할 수도 있음

  • 모회사 서비스(Jira, Confluence, Trello, Bamboo 및 Opsgenie)와의 자연스러운 인터페이스를 통해 CI/CD 배포 및 모든 내부 프로세스를 진행할 수 있어 프로젝트 관리에 큰 강점을 가짐

    • UI로 인해 많은 기업에서 선호하는 Git 호스팅 사이트

한 눈에 비교해보는 호스팅 사이트

항목GithubGitlabBitbucket
오픈 소스XOX
서비스 간 통합Marketplace 수백 개의 애플리케이션 연동 가능Jira 및 기타 문제 추적기와 연동 가능모회사 서비스와의 통합 가능
커뮤니티사용하기 쉽고 Git 사용 시 처음 접하는 툴이다 보니 커뮤니티가 강력함오픈 소스이지만 Github보단 적음기업용으로 많이 사용되어 커뮤니티 코어 X
배포조직 수준에서의 배포그룹 프로젝트 배포 지원(그룹 구성원에게 프로젝트 코드에 대한 액세스 및 공유 권한 부여)팀 수준에서의 배포까지 가능
DevOpsMarketplace와의 통합을 통해 발전 중선두권모회사 서비스와의 통합을 통해 발전 중
가격(달러)0, 4, 210, 9, 990, 15, 30
profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!
post-custom-banner

0개의 댓글