왜 페이스북은 Git을 사용하지 않을까 - 대부분의 개발자는 Git을 사용할까 (번역글)

Nevgiveup·2025년 2월 6일
0

트렌드 번역

목록 보기
3/3
post-thumbnail

Facebook, by solomon7 via Shutterstock

페이스북의 내부 개발은 처음에 Subversion을 사용하고 Git 미러를 운영하는 방식으로 시작했으나, 이후 소스 코드 관리를 위해 Mercurial로 전환했다. 이에 대해 페이스북에서 일했던 일부 개발자들은 "압도적으로 최고의 개발 도구"라고 평가했지만, 대부분의 개발자는 여전히 Git을 사용하고 있으며, 이러한 흐름이 바뀔 가능성은 낮다.

Graphite라는 코드 리뷰 도구 회사의 공동 창립자이자 CTO인 Greg Foster는 지난 3월 페이스북이 Git을 사용하지 않는 이유에 대해 글을 작성했다. 그는 페이스북에서 근무한 적은 없지만, Graphite 도구들이 페이스북 내부 개발 환경에서 영감을 얻었다고 밝혔다. 그는 페이스북이 왜 Git을 사용하지 않는지를 조사했다.

그 이유는 규모의 문제였다. 페이스북은 방대한 코드베이스를 가지고 있으며, 모든 코드가 하나의 저장소에 포함되는 모노레포(monorepo) 방식을 사용하고 있다. 엔지니어들은 코드베이스가 계속 증가할 경우 어떤 문제가 발생할지 예측했고, 기본적인 Git 명령어 실행에 45분 이상이 소요된다는 사실을 발견했다.

페이스북은 Git 유지보수팀에 해결책을 문의했지만, 답변은 코드베이스를 여러 개의 저장소로 나누라는 것이었다. 그러나 페이스북은 Mercurial 팀과 논의했고, Mercurial은 협력할 의사를 보였다. 그 결과 페이스북은 Mercurial의 성능을 개선하는 데 기여했고, 대규모 모노레포를 관리하는 데 가장 적합한 버전 관리 시스템이 되었다고 Foster는 전했다.

어떤 개발자는 Reddit에서 "여러 회사를 다녀봤지만, 메타(Meta)의 개발 도구가 단연 최고였다"고 말했다. 또 다른 개발자는 "나는 지금 메타에서 일하고 있는데, 솔직히 시스템이 너무 특이하지만 실제로는 잘 작동한다"고 평가했다.

그렇다면 다른 개발자들도 Mercurial을 사용해야 할까? 가능성은 있지만, Foster는 "10년이 지난 지금, Git도 모노레포를 더 잘 지원하도록 상당한 개선이 이루어졌다"고 지적했다.

다만, 페이스북은 일반적인 사례와 다르다. 페이스북은 방대한 자원을 투자해 자체 개발 도구를 최적화할 수 있기 때문이다. 현재 페이스북은 Git을 완전히 배제한 것은 아니며, Sapling SCM이라는 Git 호환 도구를 일부 사용하고 있다. 이 도구의 CLI는 원래 Mercurial 기반으로 개발되었으며, EdenFS라는 가상 파일 시스템을 포함하고 있다. EdenFS는 메타의 프로덕션 환경에서는 사용되지만, 오픈소스 환경에서는 빌드되지 않으며 외부에서 사용할 수 없다. 즉, 페이스북 내부에서는 효과적이지만, 일반 개발자들이 사용하기에는 적합하지 않은 맞춤형 도구인 것이다.

Git은 복잡하고 직관적이지 않은 경우가 많다. 예를 들어, 특정 파일을 .gitignore 목록에 추가하더라도 이미 추적 중인 파일은 자동으로 Git에서 제외되지 않는다. Stack Overflow에서 9,000개 이상의 추천을 받은 답변에 따르면, 추적을 중지하려면 다음과 같이 명령어를 실행해야 한다.

git rm --cached <file>

하지만 이 명령어를 실행하면, 다른 개발자가 git pull을 할 때 해당 파일이 삭제된다는 문제가 있다. 개발자가 로컬에서 해당 파일을 유지하면서 Git에서만 제외하려면 추가적인 조치가 필요하다.

그럼에도 불구하고 Git의 성장세는 멈출 기미가 보이지 않는다. 2020년 Atlassian은 Bitbucket Cloud에서 Mercurial 지원을 중단하고, Git을 기본 버전 관리 시스템으로 채택했다. 2022년 Apple의 Safari에 사용되는 WebKit 오픈소스 프로젝트가 Subversion에서 GitHub로 이동했다. 2023년 Mozilla는 Firefox 개발을 Mercurial에서 GitHub로 이전했다.

Git usage share according to a 2022 StackOverflow survey

현재 Stack Overflow의 설문조사에 따르면, Git은 93.87%의 점유율을 차지하고 있으며, 그다음으로 많이 사용되는 Subversion은 5.18%에 불과하다.

개발자들이 Git을 선택하는 이유 중 하나는 Git이 이미 표준이 되었기 때문이다. Git의 단점에도 불구하고, 대부분의 개발자가 Git을 알고 있기 때문에 새로운 개발자를 빠르게 온보딩할 수 있다. 또한, GitHub와 GitLab 같은 플랫폼이 제공하는 이슈 관리, 토론 기능, 보안 기능, CI/CD(지속적 통합 및 배포) 지원 등이 Git의 가치를 더욱 높이고 있다.

출처 : https://devclass.com/2024/07/17/why-facebook-does-not-use-git-and-why-most-other-devs-do/

profile
while( true ) { study(); }

0개의 댓글