DRAMA&COMPANY
We're Hiring!
No Result
View All Result
DRAMA&COMPANY
We're Hiring!
No Result
View All Result
DRAMA&COMPANY
No Result
View All Result

CODE GURU REVIEWER를 사용하여 코드리뷰 받기

승준 사 by 승준 사
2021년 11월 8일
in Tech
Reading Time: 4 mins read
0

안녕하세요. 리멤버 서버/웹 팀 서버 개발자 사승준입니다.

얼마 전에 AWS에 CodeGuru라는 기능이 새롭게 나왔습니다.

Amazon CodeGuru는 코드 품질을 높이고 애플리케이션에서 가장 비경제적인 코드 줄을 찾아낼 수 있도록 지원하는 권장 사항을 제공하는 지능형 개발자 도구입니다. CodeGuru 기능 안에서도 프로덕션에서 애플리케이션을 모니터링하여 CPU를 많이 차지하고 있는 메서드, latency가 오래 걸리는 등 비경제적인 코드를 찾아내는 CodeGuru Profiler와 기계 학습 및 자동화된 추론을 사용하여 애플리케이션 개발 중 심각한 문제, 보안 취약성 및 찾기 힘든 버그를 식별하고 코드 품질을 높일 수 있도록 코드리뷰를 제공하는 CodeGuru Reviewer가 있는데요. 이 글에서는 CodeGuru Reviewer에 관해서 이야기해보려고 합니다.

CodeGuru Reviewer는 어떤 기능인가요?

기계 학습 및 자동화된 추론, AWS 및 보안 모범 사례, 그리고 수천 개의 오픈 소스 및 Amazon 리포지토리에서 수백만 건의 코드 검토을 통해 학습한 트레이닝 데이터 기반으로 코드 리뷰를 자동화합니다. 코드에서 찾기 어려운 결함과 취약성을 탐지하고 코드 품질 개선을 위해 실행할 수 있는 권장 사항을 제공합니다.

위 설명은 AWS에서 공식적으로 설명하고 있는 내용입니다. 나와 있는 것처럼 말 그대로 코드 리뷰를 자동화해주는 기능입니다. 기계학습을 한 똑똑한 프로그래밍 언어의 전문가가 한 명 더 있어 Pull Request 단계에서 코드 리뷰를 해준다고 생각하시면 됩니다. 현재는 Java와 Python만 지원하고 있습니다.

AWS CI/CD pipeline with CodeGuru & UnitTest - DEV Community

왜 필요한가요?

대부분의 모든 개발자는 기능을 머지하기 전 버그, 코드 퀄리티 등의 이유로 리뷰를 진행합니다. 저희 팀에서도 기능을 개발하고 나면 슬랙을 통해 적극적으로 코드 리뷰를 요청하고 있는데요.

CodeGuru Reviewer를 사용했을 때 제가 생각하는 장점은 아래와 같습니다.

1. 수백만 개의 코드 검토를 한 기계 학습의 리뷰

개발하면서 좋은 코드를 개발하기 위해 다들 노력하지만, 이 코드가 Best Practice인지 판단을 명확하게 하지 못하는 경우가 많습니다. 하지만 이 기능은 수천 개의 오픈소스 및 Amazon 리포지토리에서 수백만 개의 코드를 기계 학습하였고 앞으로도 더 많은 코드를 학습할 것이기 때문에 CodeGuru Reviewer가 리뷰해주는 게 100% 정답은 아니겠지만 정답에 가까운 권장 사항을 남겨줄 수 있습니다.

2. 코드 기능의 정확성 및 결함을 찾기 어려운 부분을 보완

보통의 코드 리뷰를 할 때는 비즈니스 로직에 대한 피드백이 많다고 생각합니다. CodeGuru Reviewer는 프로그래밍 언어의 전문가가 있는 거와 다름이 없으므로 기능의 정확성 및 결함 측면의 초점을 둔 리뷰를 받을 수 있습니다.

알고리즘 및 비즈니스 로직에 대한 리뷰는 CodeGuru Reviewer에서 하지 않습니다.

3. 보안 취약성 해결

프로덕션에 보안이 취약한 코드가 배포가 나가기 전에 예방하는 게 가장 좋겠지만 자신이 짠 코드가 보안 취약성이 있는지 확인하기에는 어렵다고 생각합니다. 하지만 이 기능을 사용하면 해소할 수 있습니다. CodeGuru Reviewer는 보안 탐지기가 있어서 KMS, EC2 API, Java 암호화, 웹앱 보안취약점 등 보안 문제에 관한 모범 사례를 따르는지 확인 후 문제가 있을 때 권장 사항을 알려줍니다.

AWS의 보안 경험을 바탕으로 코드 보안을 개선한다고 합니다.

어떤 것들을 리뷰해주나요?

AWS 공식 문서에 따르면 대표적으로 다음과 같은 항목에 대해서 리뷰를 해준다고 합니다.

  • AWS 모범 사례(AWS API의 올바른 사용, 오래된 API를 사용하는지 등)
  • 동시성
  • 보안 분석
  • 리소스 누출
  • 민감한 정보 유출(키값이 코드에 하드코딩 되어있는지 등)
  • 코딩 모범 사례
  • 리팩토링
  • 입력 유효성 검사
  • 코드 유지보수 감지 (메서드 라인 수, 불필요하게 다른 모듈을 불필요하게 많이 호출하는지 등)

실습

해당 내용은 결함이 있는 코드를 이미 브랜치에 push 했다고 가정하고 진행합니다. CodeGuru Reviewer를 테스트하기 위해 AWS에서는 Sample App를 제공합니다. 만약 해당 기능을 사용하는데 테스트할 리포지토리가 존재하지 않는다면 아래 링크의 리포지토리를 fork 하여 테스트해 보시면 좋을 것 같습니다.

참고: 아래 실습도 Sample App를 기반으로 작성하였습니다.
https://github.com/aws-samples/amazon-codeguru-reviewer-sample-app

1. 리포지토리 연결

CodeGuru 서비스에 들어간 후 Reviewer → Repository 탭에 들어간 후 리포지토리 연결 버튼을 눌러줍니다.

현재는 BitBucket, CodeCommit, Github, Gihub Enterprise Sever 총 네 가지의 소스 공급자를 제공하고 있습니다. 자신에게 맞는 소스 공급자를 선택 후에 연결 버튼을 눌러줍니다.

실습에서는 Github 기준으로 작성하였습니다.

연결되기까지는 평균 1분 정도의 시간이 걸리며 아래와 같이 연결된 걸 확인하실 수 있습니다.

2. Pull Request 생성

연결이 완료된 후 Pull Request를 생성합니다. CodeGuru Reviewer에 레포지토리를 연결하면 해당 Pull Request 요청 알림을 구독합니다. 개발자가 Pull Request 요청했을시 요청 알림이 CodeGuru Reviewer로 전송되고 해당 서비스를 스캔 후 분석합니다.

3. 리뷰 확인

리뷰가 달리기까지에는 코드의 양에 비례해서 시간이 소요되겠지만 평균 5분 정도 걸린다고 합니다. 분석이 완료되면 아래 사진에 보시는 것과 같이 Lamda 함수의 성능을 향상하게 하기 위한 방법이나 AWS의 오래된 API를 사용하지 말라는 등 문제가 될 수 있는 코드에 리뷰가 달린 걸 확인하실 수 있습니다.

Github의 Pull Request 말고도 CodeGuru Reviewer에 코드 검토 탭에서도 리뷰 결과를 확인하실 수 있습니다.

마무리

해당 기능을 사용할 때 여러모로 이점이 많아 보인다고 생각합니다. 앞으로도 계속해서 기계학습을 통해 더 발전된 리뷰를 남겨줄 수 있을 테고 위에 언급한 것처럼 팀 내에서 코드에 대해서 어떤 코드가 더 좋은 코드인지에 대한 고민이 있을 때 큰 도움을 줄 수 있을 것 같습니다.

완전히 해당 기능으로 사람이 하는 코드리뷰를 대체할 수는 없겠지만 리뷰에 대한 리소스와 부담을 줄일 수 있다고 기대합니다. Java나 Python을 사용한다면 사용 가치가 있을 것 같습니다.

참고

  • https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html

이 글 공유하기:

  • 트위터로 공유하기 (새 창에서 열림)
  • 페이스북에 공유하려면 클릭하세요. (새 창에서 열림)

관련

Tags: AWScode review개발문화코드리뷰

Related Posts

🏆 AWS 대회에서 1등 했습니다!
Tech

🏆 AWS 대회에서 1등 했습니다!

지난 6월 7일 진행된 AWS GameDay에서 저희 리멤버 팀이 1위를 차지했습니다! 🥳 좋은 성적을 거뒀다는 사실도 만족스럽지만, 게임 자체의 퀄리티가 너무 좋아서 저희 모두 정말 시간 가는 줄 모르게 재미있는 경험을 했습니다. 이번 글에서는 AWS GameDay가 낯선 분들을 위해 간략하게나마...

2021년 6월 15일
리멤버 서버/웹 팀은 어떻게 일을 하는가?
Tech

리멤버 서버/웹 팀은 어떻게 일을 하는가?

이번 글에서는 리멤버 서비스들의 웹 사이트와 API, 인프라를 담당하고 있는 서버/웹 팀이 일하는 모든 방식을 다루고 있습니다. 추상적인 글을 넘어서 실제 스크릿샷 등을 포함하여 저희가 어떻게 일을 하고 있는지 낱낱이 보여 드리고자 합니다.

2020년 12월 21일
[인터뷰] “6개월 전의 코드가 부끄럽고 아쉬웠어요.”
Tech

[인터뷰] “6개월 전의 코드가 부끄럽고 아쉬웠어요.”

‘성장’을 갈망하는 4년차 개발자 인터뷰Server/Web팀 강태화님, 이민구님이 리멤버를 선택한 이유.   강태화님 : 4년차 개발자이자 리멤버 서버 개발자. ‘세상을 변화시키는 작은 조직’에 동참하고 싶다는 그는 사진앱을 개발하다, IoT 회사의 펌웨어 개발자를 거쳐 리멤버 서버 개발자로 합류 이민구님 : 4년차 프론트...

2020년 11월 30일
Next Post
리멤버에서 Pull Request 편리하게 사용하는 법

리멤버에서 Pull Request 편리하게 사용하는 법

디자인팀 입사자가 바라본 드라마앤컴퍼니

디자인팀 입사자가 바라본 드라마앤컴퍼니

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

DRAMA&COMPANY

© 2021 DRAMA&COMPANY

Sites

    Follow Us

    No Result
    View All Result
       

      댓글 로드중...