매일 4만건 이상 코드를 커밋하는 구글의 개발 방법
Tech

매일 4만건 이상 코드를 커밋하는 구글의 개발 방법

매일매일 수만 건의 코드가 배포되는 빅테크들이 안정적이고 빠르게 시스템을 운영하는 방법이 궁금 하신가요?

Lydia
,
Product Marketer
콘텐츠 공유

트렁크 기반 개발 방식은 브랜치 모델의 한 종류로 머지의 복잡성을 줄여서 코드와 협업 프로세스를 효율적으로 관리할 수 있어서 빠른 사이클로 움직이는 개발 조직에 적합한 방법론입니다. 대표적으로는 구글,  아마존, 페이스북, 넷플릭스 등 빅테크 기업들이 주로 사용하는 것으로 알려져 있어요.        

트렁크 기반 개발(Trunk-Based Development) 방식이란? 

트렁크 기반 개발의 개념을 소개하는 웹사이트 Trunk Based Development 에서는 아래와 같이 설명하고 있습니다. 

[원문] 

A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after. 

(출처: https://trunkbaseddevelopment.com/)

[국문 번역] 

트렁크 기반 개발 방식은 소스 제어 브랜치 모델의 한 종류 입니다. 개발자들은 ‘트렁크(trunk)’라고 부르는 단일 브랜치에서 협업하여 코드를 관리 하는데, 문서화된 기술(일종의 기술 규약)을 만들어 따름으로서 장기적으로 유지되는 다른 개발 브랜치가 생성되지 않도록 합니다. 이런 방식으로 코드 머지 지옥 (merge hell)을 피하고, 빌드를 깨트리지 않고, 행복하게 살아갈 수 있습니다. 

트렁크 기반 개발에서는 ‘단일 브랜치’라는 키워드가 중요한데요. 

단일 마스터 브랜치에서 모든 코드를 관리함으로써 다음과 같은 장점이 있습니다. 

* 마스터 브랜치에 모든 개발자들이 코드를 머지하기 때문에 더 자주, 간편하게 많은 인원이 협업할 수 있습니다. 
* 브랜치 관리와 머지의 복잡성을 줄여 줍니다.  
* 코드를 브랜치 관리에 투입되는 리소스를 절약할 수 있습니다.  
* 코드를 최신 상태로 유지할 수 있습니다. 

반면 단점들도 있습니다. 프로세스가 잘 관리되지 않으면 코드 충돌(code conflict)에 직면하기 쉽고, 모든 코드에 대한 리그레션 테스트(regression test)가 이루어지는 것이 아니기 때문에 버그 발생 확률이 올라 갑니다.  

이런 단점들을 보완하기 위해 트렁크 기반 개발 모델을 도입할 때에는 명료하고 상세한 협업 프로세스 구축과 장애/버그 등 문제 상황에 대한 확실한 대비책을 마련하는 것이 무엇보다 중요합니다. 

구글을 비롯하여 트렁크 기반 개발 방식을 사용하는 빅테크 기업, 그리고 실리콘밸리의 많은 테크 기업들은 상세한 가이드와 자체 구축한 개발 프로세스 관리 시스템으로 예방하고 있습니다. 개발 프로세스 관리 시스템의 대표적인 피처(feature)가 바로 기능 플래그인데요. 

트렁크 기반 개발에 기능 플래그를 어떻게 사용하는지 살펴 보겠습니다. 

STEP 1. 기능 플래그를 OFF한 상태에서 코드를 커밋 합니다.  

STEP 2. 완성되지 않은 코드가 배포 되더라도 기능 플래그가 OFF 상태이기 때문에 실행될 위험은 없습니다. 

STEP 3. 이런 식으로 작은 단위의 커밋들을 빠르고 지속적으로 머지할 수 있습니다. 

 

STEP 4. 모든 코드들이 준비가 되면 기능 플래그를 ON 상태로 바꿔서 즉시 출시할 수 있습니다. 

이렇게 기능 플래그로 코드의 배포와 출시를 분리함으로써 배포 프로세스를 가속화 하고 장애의 영향을 최소화 할 수 있습니다. 

빅테크들은 기능 플래그와 A/B 테스트를 조합한 관리 시스템을 갖추고, 변화하는 내부 상황에 맞게 개선 시키며 개발 프로세스를 애자일하게 발전시켜 나가고 있지만 대부분은 관리 시스템을 갖추기 위한 시간과 리소스, 유지 보수 등 현실적인 문제에 부담을 느끼고 새로운 방법론을 시도도 하지 못하는 경우가 대부분 입니다.  

더 빠른 성장과 안정성 확보를 위한 새로운 개발 방법론을 시도해 보고 싶지만 이런 고민 때문에 망설이고 있다면 핵클에 문의 하세요. 고객들이 핵심 개발에만 집중하며 프로세스를 개선하실 수 있도록 SDK 연동 한번으로 배포/모니터링 관리 기능들을 지원해 드립니다. 

트위터에 공유하기
제품 주도 성장에 필요한 모든 기능을
All-in-One 플랫폼 핵클과 함께 시작해보세요!
무료 체험 시작하기
콘텐츠 공유
인터뷰에 나온 회사처럼,
빠르게 성장하고 싶다면 핵클과 함께 하세요!
핵클 드림팀 신청하기

성장의 시작, 핵클이 함께합니다!

비대면 바우처를 통해 70% 할인된 금액으로 핵클을 시작해보세요.
자세히 알아보기

👀 이런 콘텐츠는 어때요?