본문 바로가기
잡담/웹개발(SI) 일지

SVN VS GIT 장단점 및 차이

by flatsun 2021. 2. 9.
반응형

예전에는 거의 모든 SI 프로젝트에서 SVN을 사용했지만

요즘은 GIT 비율도 슬금슬금 늘어나는 추세다

 

아마 시간이 지날수록 GIT 비율이 늘어나는게 추세겠지만

그래도 대부분의 프로젝트는

GIT보다는 SVN을 훨씬 많이 쓴다

 

일단 SVN와 GIT의 결정적인 차이는

SVN이나 GIT이나 서로 온갖 기능이 있다고 하지만

 

SVN은 한 저장소(Repository)를 가지고

모든 개발자가 동시에 작업을 수행한 뒤

개발 종료 후 그 저장소를 가지고 배포를 하게 되고

 

GIT은 동일한 저장소에서

각각 Branch를 따간 후 필요한 부분을 개발하고

Master Branch에 합친 뒤(Merge)

Master Branch를 배포하는 식으로 사용하게 된다

 

일단 대부분의 프로젝트에서는 GIT보다 SVN이 훨씬 유리한데

SVN에도 엄청나게 많은 기능이 있다고는 하지만

99%는 Commit, Update, Override and Update

마지막 1%는 SVN 에러났을 때에

sqlite를 이용한 svn locked, svn cleanup first

에러만 해결할 줄 알면

 

어떤 프로젝트를 가건

SVN 가지고 작업을 하기에 문제가 없다

 

SVN은 생초보도 10분이면 다 배우지만

GIT은 10분으로는 어림도 없다는 걸 생각해보면

바로 투입해서 바로 개발해야 하는 SI 프로젝트에는

SVN이 훨씬 경제적이다

 

그리고 대부분의 프로젝트는

지속적으로 계속 개발할 필요가 없는데

지속적으로 개발하려면 돈도 지속적으로 나가기 때문이다

 

따라서 요건을 모두 받아놓은 후

그것만 한번에 다 개발해 놓으면

그 이후에는 에러 유지보수 정도를 제외하고는

프로젝트 자체에 손댈 일이 없다는 얘기다

 

에러도 오픈 후 2-3주면 웬만한 오류가 다 잡혀서

오픈 후에는 개발자 소수에 PM만 빼고

대부분의 개발자가 모두 철수하게 된다

 

이제 자연스럽게 SVN의 장점이 보일텐데

많은 SI 프로젝트에서는 오픈하면

추가적으로 손이 가지 않는 경우가 대부분이기 때문에

사용하기도 쉽고 직관적인 SVN이 많이 쓰이게 된다

 

반면 GIT은 변경사항이 많고, 배포가 잦을 경우에 주로 사용되는데

대부분의 SI 프로젝트는 한번 만들어 놓으면 그걸로 끝이지만

포털, 쇼핑몰, 서비스 이런 분야는

 

변경사항도 많고 배포도 엄청나게 잦아서

대부분은 매주 여러번 배포를 하게 된다

 

SI 프로젝트는

배포를 몇 달에 한번 하는 걸 생각해보면

엄청나게 차이가 나는거다

 

그리고 이용자 수 자체가 엄청나게 많고

소스 에러나면 영향이 큰데

 

SI는 중요한 몇 파트만 제외하면

에러나면 어? 에러났네 이러고 고친 뒤에

점심먹을 때 교체하거나 퇴근 시간에 올리거나

화면단의 경우에는 대놓고 교체해도

눈치채는 사람도 적고 영향도 적은데

 

포털에서 뭐 하나 바꿀려고

네이버를 내렸다고 하면 그날로 해고 확정이다

(물론 이런데는 서비스를 몇십~몇백개로 쪼개 사용하는 MSA방식이다)

 

GIT은 개발할 부분이 있으면

master branch를 잘라와서

내 branch를 만들고 그걸 개발해서 검증받은 후

master branch에 합치고

그걸 배포하는 식으로 사용하게 되는데

 

검증 과정이 붙는 이유가

GIT을 사용하는 경우에는 서비스 규모가 크고

에러나면 영향이 크기 때문에 

DBA, QC, 소스 리뷰 등 각종 검증을 거치게 된다

 

그리고 branch 단위로 합치기 때문에

특정 branch를 합친 후 에러가 발생했다면

그 branch만 다시 떼어놓으면 버전 관리도 간단하다

 

SVN의 경우에는 대부분 한번에 왕창 개발해서 배포하지만

GIT의 경우에는 요건을 나눠서

지속적으로 개발하면서 배포를 하게 된다 

 

이게 SVN과 GIT을 기술적으로 분리하려고 하면

엄청 어렵게 받아들이게 되는데

단순하게 요약해보자면

 

한번 개발하고 한동안 추가 개발 없음 - SVN

지속적으로 개발, 코드 안정성 필요 - GIT

이게 결정적인 차이가 되겠다

 

기술적인 차이가 어쩌고 저쩌고 하지만

솔직히 SVN은 위에 말해둔 4개만 할줄 알면 만점이고

GIT도 하는 동작만 계속 반복하기 때문에 핵심만 알아두면

나중에 누가 물어봐도 물 흐르듯 대답할 수 있을거다

반응형

댓글