피드로 돌아가기
코드 리뷰 in 뱅크샐러드 개발 문화
뱅크샐러드 기술블로그뱅크샐러드 기술블로그
Backend

코드 리뷰 in 뱅크샐러드 개발 문화

뱅크샐러드가 작은 PR 규칙(1,000줄 제한)과 실험 플랫폼을 조합해 메인 브랜치 병합 충돌 없이 월 6만 줄 규모 코드를 약 800 커밋으로 운영

2020년 11월 24일12intermediate

Context

코드 리뷰 초기에 PR 라인 수 제한이 없어 수백~10,000줄 이상의 PR이 생성되었고, 리뷰어의 집중도 저하와 병목 현상이 발생했다. 팀 규모 확대(4명→8명)와 동시 실험 50개 운영 상황에서 메인 브랜치 병합 충돌 위험이 증가했다.

Technical Solution

  • PR 라인 수 제한: 1개 PR을 1,000줄 이하로 제한하고, 테스트 코드(Mock JSON 포함)는 라인 제한 제외
  • 커밋 단위 세분화: Pull Request와 Commit을 최소 기능 단위로 분할해 메인 브랜치 병합
  • 실험 플랫폼 연동: 고객 OS(iOS/Android)와 앱 버전에 따라 실험군/대조군 구분하는 조건문 기반 UI 제공
  • Git Flow 전략 변경: 단일 메인 브랜치에서 실험 플랫폼 조건으로 칸막이하며 동시 개발 진행
  • 코딩 스타일 자동화: SwiftFormat을 빌드 Phase에 실행시켜 자동 스타일 적용
  • CI 자동화: Jenkins를 이용해 PR Opened 및 Commit Changed 시 유닛 테스트 자동 실행 및 Merge Block
  • 저문맥 커뮤니케이션: GitHub PR Template 도입으로 제품 기획, 기술 구현 계획, 변경점, 디자인, 테스트 목록 명시
  • Pn 태그 시스템: D-0(긴급), D-2(2일 이내), D-3~D-5(일정 여유)로 리뷰 우선순위 명시

Impact

  • PR 리뷰 완료 시간: 1~2일 이내로 단축
  • 평균 PR 라인 수: 200~300줄로 정규화
  • 뱅크샐러드 2.0 프로젝트: 2020.04.01~2020.06.01(2개월) 기간 +6만줄 -3만줄 변경을 약 800 커밋으로 세분화
  • 유닛 테스트 자동화: 월 800회 테스트 실행 = 약 8,000분(133시간) = iOS 개발자 1명의 월 업무시간(160시간) 상당
  • 팀 확장성: iOS 챕터 구성원 4명→8명 증가 후에도 병목 없는 성장 지속

Key Takeaway

대규모 팀에서 리뷰 병목을 제거하려면 PR 라인 수 제한과 함께 기능 플래깅(Feature Flag) 방식의 실험 플랫폼을 조합해 메인 브랜치 단일 개발을 유지하되, SwiftFormat과 Jenkins CI로 자동화 가능한 부분을 최대한 자동화해 리뷰어의 리소스를 인건비 최적화에 집중시켜야 한다.


모바일 앱 또는 마이크로서비스 개발팀이 PR 병목을 겪을 때, 1단계: PR 라인 수를 1,000줄 제한하고 커밋 단위를 최소 기능 단위로 세분화, 2단계: 실험 플랫폼이나 Feature Flag로 조건부 UI/로직 제공해 메인 브랜치 단일 개발 유지, 3단계: SwiftFormat/ESLint 같은 코딩 스타일 도구와 CI 자동화로 리뷰 대상을 아키텍처/로직에 집중시키면 리뷰 완료 시간을 1~2일로 단축하고 팀 확장에도 선형 비용 증가를 방지할 수 있다.

원문 읽기