개요

빅테크에서 필수로 시행하는 코드리뷰 프로세스에 대한 간략한 설명을 정리해둔다.

사실 빅테크에 다니면 조금 당연히 알게 되는 부분이긴 한데 생각보다 git 나아가 코드리뷰에 대해 생소한 사람들은 모를수 있는 내용이라 정리해둔다.

코드리뷰 장점

  • 빨간펜 학습지와 같은 족집게 역량 향상
  • 코딩은 개발/분석가의 핵심 역량중 하나이자 나아가 비지니스 이해도, 시스템 이해도 등이 수반되는 종합 영역
    • 고로 다각도의 논의 및 피드백 교류가 필수적
  • 코딩역량은 몸값으로 직결됨
    • 빅테크 채용 필수항목이란것은 필요충분조건임을 의미

프로세스

미리 알아둘 것

  • 코드리뷰의 핵심 대상자 2명 을 아래와 같이 표현한다.
    • committer : 코드 작성 및 리뷰를 요청하는 사람
    • reviewer : 코드를 리뷰해주는 동료
  • turn by turn
    • 코드리뷰는 reviwer -> committer -> reviwer turn의 반복으로 프로세스가 구성된다고 볼 수 있다. 이점을 염두해 두고 아래 설명을 참고하면 된다.

이슈 작성: committer

  • 작업은 시작은 항상 이슈 작성 부터 이다.
  • 보통 아래와 같은 커뮤니케이션 관례를 따른다.
    • 슬랙 : 실시간 질의 응답이 효율적인 경우
    • 이슈 : 히스토리가 필요한 기술문서의 작성
    • PR 코멘트 : 코드 수정 관련으로 한정

PR 올리기: committer

  • committer
    • branch checkout from main
    • ex : feature/AAA
    • code 작성
    • commit
    • 커밋명은 동사 + 명사 + #이슈번호로 작성
    • ex: Change requests to aiohttp #1
    • feature/AAA repo로 push
    • PR 생성
    • target branch ‘main’
    • reviewer 지정

코드리뷰 reviewer turn #1

  • reviewer
    • 작성된 코드를 보고 원하는 코드라인에서 +를 눌러 코멘트를 작성한다.
    • 방식은 크게 2가지 이다.
    • single comment
      • 개별 코멘트를 남기는게 간단하나 작성할때 마다 알람이 전송됨
    • start review
      • 코멘트를 쭉 다 로컬에서 남긴 뒤 review changes를 눌러 한방에 알림을 보낸다.
      • 대개 이걸로 진행함
        > 브라우저 로컬에 결과가 저장되어 있어 브라우저 껐더라도 다시 들어가면 코멘트가 살아있다.
  • 피드백 선택
    • 아래 중에서 선택하여 보낸다.
    • approve
    • 코드에 문제가 없어 승인한다.
    • comment
    • 수정을 요구할 정도는 아니고 코멘트 한다.
    • request change
    • 코드가 승인되기 위해서 수정이 필요하다.

코드리뷰 committer turn #1

  • committer
    • 수정된 코멘트를 기반으로 코드를 수정하여 같은 브랜치에 커밋 후 push 올림
    • ex : feature/AAA
    • 케이스 설명
    • 지적받은대로 코드를 수정하였으면 알아서 코드리뷰에 resolve 반영됨
      • 관련하여 코멘트를 할지 말지는 optional
    • 논의가 필요한 경우 코드 수정 없이 코멘트만 작성
      > 웬만하면 resolve 처리는 reviewer 가 진행함

코드리뷰 reviewer turn #2

  • reviewer
    • 기존 이슈
    • 확인 후 resolve 처리
    • 새로운 이슈
    • review turn #1 처럼 추가 리뷰 작성
    • 피드백 선택
    • approve, comment, request change를 상황에 맞게 진행
      > 만약 approve면 이후 merge가 나오는데 자명한 경우가 아니면 merge는 comitter가 누른다.

코드리뷰 committer turn #2

  • 코드 approve가 2개 이상 떴으면 코드를 merge 한다.
  • 만약 conflict가 발생하면 해결 후 merge 한다.
  • 이후 feature 브랜치는 delete 한다.

코드리뷰 종료

  • 코드 폐기(close) 또는 코드 merge로 코드리뷰를 종료한다.

조직 내 코드리뷰 규칙 정하기

  • PR은 open 후 3일 이내 종료를 목표로 한다.
    • PR은 turn은 1일 이내 피드백을 해야하고 이를 넘길 시 미리 양해를 구해야 한다.
    • 여의치 않으면 대무자를 구하자.
  • 코드리뷰는 2점을 획득하여야 merge가 가능하다.
    • 약한 approve : 1점
    • 강한 approve : 2점
    • 기본적으로 사람 1명의 approve는 1점, 상황의 긴급하거나 확신있는 approve는 1명이 2점 가능
  • 리뷰어 포인트를 관리하자.
    • everybody pays the price, 누구나 바쁘다.
  • 아래와 같은 마인드가 필요하다.

코드리뷰 프로세스 고도화

  • 슬랙 #github-notification 으로 관련 알림을 받을 수 있음
  • 슬랙에서 아래와 같이 최초 1회 셋팅해두면 내 github 계정과 슬랙 계정이 자동 연동된다.