버전관리(Version Control)
우리가 무엇인가 작업을 했는데 잘못된 길로 가버려서 다시 돌아가고 싶을 때 혹은 협업으로 인해서 프로그램이 엉망진창 꼬일 경우가 있다. 이런 것들을 관리해주는 프로그램을 버전관리(혹은 소스관리) 프로그램이라고 하며, 아직도 SI쪽에서 많이 사용되는 SVN과 최근에 오픈소스의 트렌드를 만들어 준 깃(Git)이 존재한다.
버전관리는 내가 어떠한 작업 내역을 버전관리 툴에 올리고, 해당 작업에 대해서 버전을 기록한다. 이렇게 협업으로 작업하다가 만약 프로젝트가 꼬이거나 잘못된 방향으로 개발을 할 경우 특정 버전을 지정하여 되돌아 갈 수 있다.
사실 사용하기 편리한 버전관리 프로그램을 고르자면 SVN이라 할 수 있고 매우 적은 지식만으로 SVN을 사용하는데 전혀 지장이 없다. 그래서 아직까지 대규모의 프로젝트를 하는 곳은 SVN으로 프로젝트를 하는 곳이 많으며, 만약 초급자들이 잔뜩 있는 프로젝트에서 Git으로 개발을 했다간 매일 아침 Git이 꼬여버리는걸 해결해주다가 중/고급 개발자들의 하루가 갈지도 모른다.
버전관리의 혁신, 깃(Git)
그럼에도 불구하고 깃(Git)을 써야 하는 상황이 있다면 다음과 같다. 개발자들이 Git을 매우 잘 다루는 상황이면 무조건 SVN보다 Git이 백번 천번 더 좋을 수 있다. 그리고 온라인상에서 버전관리를 추가한다면 깃허브(Github) 등으로 연계하여 사용을 한다면 집에서도 개발을 진행할 수 있는 메리트를 준다.
최근 Git이 트렌드가 되는 가장 큰 이유는 누가 뭐라고 해도 마이크로 서비스 아키텍처(Micro Service Architecture, MSA)의 영향이라 볼 수 있다. 대규모 프로젝트가 아니라 많은 사이트들이 마이크로 서비스 아키텍처로 전환하기 때문에 하나의 소스에 대규모로 붙어서 작업을 하는 경우가 줄어들었고 개발자마다 각자 맡은 프로젝트를 진행하는 경우가 많아졌기에 프로젝트당 붙는 개발자의 수가 매우 줄어들었다.
그래서 전체적인 서비스의 퍼포먼스(수많은 Rest를 콜해야 되기에...)는 떨어졌을 지언정 유지보수는 쉬워지며 초급 개발자들도 자신만의 서비스를 진행하는 경우가 많아졌다. 물론 대형 SI는 아직까지 초급 개발자들은 보통 중고급 개발자들이 주는 쿼리를 받아서 사용하고 View단을 작업하는 경우가 많지만...
이런 상황과 동시에 오픈소스 붐으로 인해서 깃허브에는 수많은 프로젝트들이 넘쳐나기 시작하였고, 이제는 개발을 하기 전에 유사한 프로젝트를 찾아서 그대로 쓰는 경우가 비일비재하게 되었다. 실제 초급 경력자중에는 엄청나게 많은 다양한 프로젝트를 하는 경우 본인들이 뭘 만들었는지 모르는 경우가 많아졌는데 개발자의 덕목 중 Know-Where의 비중이 꽤 높아지는 방증이기도 하다.
태생부터 다른 Git
Git은 태생부터가 매우 다르다. 만든 사람이 그 유명한 리누스 베네딕트 토르발스(Linus Benedict Torvalds)로 무려 리눅스를 만든 천재 개발자이다. 그는 리눅스를 만들 때 버전관리의 필요성을 느꼈고 그렇게 만든 버전관리 프로그램이 Git이다.
무료로 오픈한 OS를 만든 그 답게 Git 역시 그의 사상처럼 오픈소스의 세상을 바꾸고 있으며, 수많은 Git 기반의 사이트들이 나오기 시작했다.
깃허브(Github.com)
많은 사람들이 깃과 깃허브를 "동일한 의미"로 생각할 수 있을 것이다. 하지만 둘은 재단이 다르다 git을 만든건 리누스지만 현재 깃허브를 가지고 있는 회사는 마이크로소프트(Microsoft)이다. 깃허브를 만든 모회사는 Github Inc지만 마이크로 소프트가 2018년 6월 4일, 75억 달러에 깃허브를 인수하였다.
전세계 최대 공개 저장소 사이트로 유료로 이용할 경우 다양한 기능들을 추가로 제공해주면서 비영리 + @(영리)를 추구하는 사이트이다. 깃은 매우 투박적인 명령어 기반으로 작동하지만 깃허브는 사이트 답게 화려한 GUI(Graphic User Interface)를 제공한다.
깃랩(GitLab.com)
최근 나사(Nasa), 골드만삭스, IBM, 소니, 알리바바, 스페이스X, 유럽 입자 물리 연구소 등 100,000개 이상의 단체에서 사용하고 있는 사이트로 깃 저장소와 이슈 추적 등의 기능을 가지고 있는 매우 강력한 데브옵스(DevOps) 플랫폼이라 할 수 있다.
'아키텍처, 빌드, 관리 > 버전관리(Git, SVN)' 카테고리의 다른 글
버전 관리 시스템 이해와 Git, SVN의 비교 (0) | 2023.05.02 |
---|