AWS Community Day 후기

AWS Community Day에서 인공지능/딥러닝의 세션들을 들었는데, 개인적으로 가장 인상깊었던 세션인
자동으로 코드 리뷰를 자동화해주는 AI 서비스 CodeGuru에 대해 정리해보고자 한다.

자바를 잡아주는 GURU가 있다구?

우여명(백엔드 엔지니어, 아이스크림 에듀)

CodeGru

개발자들의 코드 리뷰를 자동화해주는 서비스

  • 현재 프리뷰 상태인 서비스

  • 아마존에서 현재 사용중인 서비스

  • 현실에서 코드 리뷰의 어려움

    현실 세계에서의 코드 리뷰는 잘 안되는게 현실이다.


코딩 자동화 도구들

CodeGru의 특징

  • PR 기반의 코드 리뷰 도구인 CodeGuru Reviewer
  • 에이전트가 수집한 데이터를 기반으로 성능(CPU) 관련 시각화 및 해결책을 제안하는 CodeGuru Profiler
  • 아마존이 수십년간의 지식과 경험을 기반으로 학습한다.
  • 확인된 문제를 고칠 수 있는 실행 가능한 구체적인 방법을 제공
  • 현재 Java 언어만 지원
  • 현재 Preview 상태
  • 현재 Github과 AWS CodeCommit 소스 코드만 가능
  • 실제 사람인 코드 리뷰어와 코드 그루 리뷰어 둘 다 코드 리뷰를 할 수 있다.
  • 사람이 하는 코드 리뷰를 보완해준다.(사람이 하는 코드 리뷰를 대체하는 게 아님)
  • 현재 사용가능한 리전: us-east-1, us-east-2, us-west-2, ap-southeast-2, eu-west-1

CodeGuru Reviewer가 다루는 영역


  • AWS 모범 사례: AWS API 사용

    • 잘못 사용할 경우, 성능(ex) 폴링) 또는 정확성 및 안전성(ex) 페이징 처리) 문제 발생
  • 동시성: 동시성 구조의 올바른 구현

    • 잘못 사용할 경우, 정확성(ex) 동기화 누락) 또는 성능 문제(ex) 과도한 동기화)가 발생하여 가용성에 영향
  • 리소스 누수: 올바른 리소스 처리

    • 잘못 처리할 경우( ex) 데이터 베이스 연결을 해제하지 않음) 속도가 느려지고 가용성에 영향
  • 민감 정보 유출: 개인 식별 정보 유출

    • 민감한 정보가 유출되면(ex) 신용 카드 번호 기록) 컴플라이언스 이슈 발생
  • 마이닝 데이터로 발견된 코드 결함: 찾기 어려운 결함들

    • 문제를 해결할 경우(ex) 각 람다 호출마다 클라이언트를 만들지 않음) 코드 품질이 향상

리뷰어에 대한 아마존 개발자들의 피드백

  • 중요한 코드에 숨어있는 오랜 레이스 컨디션을 파악할 수 있었다.
  • 일반적으로 사용하지 않는 방식으로 Amazon DynamoDB 테이블을 사용하고 있었고 코드 리뷰에서 이를 놓쳤다.
    리뷰어는 작업이 전체 결과 대신 페이징된 결과를 반환하고 있음을 확인하여 문제를 잘 잡았고 좋은 해결책도 주었다.
  • 리뷰어는 (DB 커넥션 같은) 리소스를 닫기 위해서 try-with-resources 구문을 사용할 것을 추천했고, 즉시 구현했다.

CodeGuru Profiler

  • 해결 가능성이 높은 성능 최적화 해결책을 찾도록 학습
  • 긴 응답시간 & 낮은 처리량
  • 높은 CPU 사용률
  • 어떻게 코드를 고칠 지 제안
  • 아마존에서 수년 동안 축적된 성능 엔지니어링 경험으로 학습된 지능형 프로파일러

프로파일러에 대한 아마존 개발자들의 피드백

Chris Butterfield, SDE

  • 프로파일러가 제안한 해결책으로 CPU 시간의 55.97%를 사용하는 스레드 경합이 제거되었다.
  • 수정 후 단일 호스트는 이전보다 최대 7.5배 더 많은 트래픽을 처리할 수 있다.
  • 동일한 트래픽을 처리하면서 인스턴스 수를 75%까지 줄였다.

Rajesh Konatham, SDE

  • 프로파일러가 제안한 클론을 삭제하는 해결책으로 CPU 사용량이 크게 감소했다.
  • 동기 플릿의 경우 40%, 비동기 플릿의 경우 67%가 감소했다.

CodeGuru Profiler DEMO


AI 기반 도구가 개발자에게 끼칠 영향

  • 개발자의 삶에 스며 들고 있는 AI
  • 유용하게 활용한다면 유의미한 생산성 증가 기대
  • 코드 어시스턴트를 활용하여 코드 생산성 증가 기대
  • 코드 리뷰 도구를 활용하여 실수와 성능 및 보안 문제 해결 기대
  • 개발자가 좀 더 비즈니스 로직의 구현에 집중

현재 아쉬운 점

  • 리뷰의 시작과 종료에 대한 알림이 없다.
  • 댓글이 없을 경우, 리뷰가 정상적으로 진행된 것인지 확인하기 어렵다.
  • 사용성 측면에서 개선 여지가 많다.

AWS Community Day를 다녀오며 느낀점

개인적으로는 서울 리전에서는 아직 프리뷰 상태라는 게 아쉽다.
키노트 시간에 언급된 이야기 중 인상깊었던 부분이 있었다.
아직 우리나라에서는 이제 막 도입하고 사용하고 있는 분위기인데,
미국에서는 서버리스와 컨테이너가 당연하다고 한다.
미국 최앞단의 시간과 우리나라에서의 IT의 시간은 다른 속도로 흐르는 것 같다.
이미 아마존에서는 이 CodeGuru 서비스를 도입하고 실제 업무에서 사용하면서
개발자들이 직접 하는 코드 리뷰를 보완하고 있다고 한다는 점이 놀라웠다.
특히 리뷰어는 서울 리전에서 사용할 수 있게 되면, 직접 도입해서 사용해 보고 싶다는 생각이 들었다.