이번 아키텍처 개선에 코드래빗을 적용해보기로 하였습니다. 코드래빗을 알게 된 계기는 인프런의 포스팅을 통해 처음 알게 되었는데, 도입해볼만한 도구라고 생각합니다.
https://tech.inflab.com/20250303-introduce-coderabbit/
코드래빗이란?
CodeRabbit은 AI 기반 코드 리뷰어로, PR(Pull Request)에 대해 문맥을 이해한 피드백을 몇 분 안에 제공하여 수동 코드 리뷰에 필요한 시간과 노력을 줄여줍니다.
즉, 저희 팀은 아키텍처 개선에 유용하게 사용될 것 같아 도입하였습니다.
저희의 목적은 컨벤션을 지정하고, 저희가 지정한 컨벤션과 아키텍처에 맞는지에 대한 리뷰의 도움을 받고자 하였습니다.
Github에 코드래빗 적용하기
코드래빗을 적용하기 위해서는 우선 코드래빗에 들어가서 로그인해야 합니다.
Github으로 로그인이 가능하고, 이를 통해 Organization이나 Repository에 바로 권한을 부여할 수 있습니다.
이후 해당 Repository를 선택하면 다음과 같은 화면이 보이게 됩니다.
위 메뉴의 General, Review, Chat, Knowledge Base, Code Generation 등을 통해 상세한 옵션을 설정할 수 있습니다. 언어, 리뷰 스타일 등 제공되는 다양한 스타일을 설정할 수 있습니다.
이후 PR을 올리게 되면, 다음과 같이 PR 내용에 대한 요약도 제공됩니다. coderabbit.yaml을 등록한 PR을 예시로 들어보겠습니다.
그리고 PR의 댓글로 변경사항에 대해 더 자세한 정보를 제공합니다.
혹시 세팅이 적용되지 않는다면, Organization Settings이 적용된 것일 수도 있습니다.
Organization Settings와 Repository Settings가 따로 있기 때문에, 이를 확인해야 합니다.
설정 방식에는 총 3가지가 있습니다.
1. YAML 설정
2. 각 Repository에 대한 UI 설정
3. Organization에 대한 UI 설정
위 우선순위로 적용됩니다.
팀만의 특별한 규칙
단순히 코드의 정적 품질에 대한 리뷰는 소나큐브에서도 제공됩니다.
저희는 단순히 이에 대한 리뷰보다는 팀 규칙에 대한 리뷰를 원했기에 코드래빗을 사용했습니다.
팀의 특별한 규칙을 설정하기 위해 .coderabbit.yaml 파일을 작성하였습니다.
path_instructions:
- path: "**/*.java"
instructions: >
As a team convention, we are following the Clean Architecture principles.
Most important rule is that dependency direction should be inward.
There are rules to follow:
... // 생략
위처럼 저희만의 코드 컨벤션을 작성하였습니다. 이를 통해 저희가 정한 컨벤션에 부합하는지 확인하기 수월합니다. 또한 여러 팀원들의 리뷰를 받기까지 시간이 소요될 수 밖에 없는데, 이전에 미리 수정 포인트들을 확인할 수 있다는 점에서 유용하다고 생각합니다.
참고로 저희는 옵션 설정들을 두 곳에서 나뉘어 관리하는 것보다, 한 곳에서 관리하는 것이 더 효율적이라 판단하였기에, 코드래빗 사이트 UI를 통해 적용할 수 있는 내용들도 .coderabbit.yaml 에 추가하였습니다.
뒤늦게 안 내용이지만, UI에 설정한 내용들을 코드래빗에서 직접 .coderabbit.yaml 로 바꿔주는 기능을 제공합니다.
@coderabbitai configuration 를 이용하면, 직접 설정을 찾아가며 작성할 필요 없이, 코드래빗에서 파일을 작성하여 제공합니다.
코드래빗 설정 및 가이드 내용은 공식문서에서 자세히 나와있어, 비교적 수월하게 사용할 수 있습니다.
단순히 코드 품질 및 코드 컨벤션 외에도 다양하게 적용할 수 있습니다.
맨 위에 소개한 인프런의 경우, DDL 컨벤션, 최적화된 비동기 작업을 유도하는 등 다양한 방식으로 열려 있습니다.
마치며
단순한 오타, 잘못된 공백 등 이에 대한 리뷰가 아니라, 팀의 규칙을 이해하고 이에 대해 리뷰를 남긴다는 것이 상당히 중요한 것 같습니다. 코드래빗이 기존의 팀원간의 코드 리뷰를 완전히 대체할 수는 없지만, 코드 리뷰 과정을 더 효율적으로 만들어주기에 충분한 도움이 될 수 있음을 느꼈습니다.
개인 프로젝트에도 코드래빗을 적용하여, 리뷰가 힘들다는 단점을 보완할 수 있을 것 같습니다.
'데브코스' 카테고리의 다른 글
카프카와 Virtual Thread를 이용한 알림 서버 분리하기 (0) | 2025.05.28 |
---|---|
인덱스를 통한 받은 편지 조회 개선하기 (0) | 2025.03.21 |
알림 기능의 필수 여부 확인하기 (0) | 2025.02.08 |
모니터링 서버 구축하기 (1) | 2025.01.27 |
FCM을 통한 백엔드에서의 푸시 알림 전송 (0) | 2024.12.10 |