티스토리 뷰
AWS CodeGuru 서비스가 beta 오픈되었다. https://aws.amazon.com/ko/codeguru/
CodeGuru에는 Reviewer와 Profiler 두 가지 기능이 있는데, 기능 설명을 한번 보자. "Amazon CodeGuru는 자동화된 코드 검토 및 애플리케이션 성능 권장 사항을 제공하는 기계 학습 서비스입니다.", "Amazon CodeGuru 프로파일러는 항상 애플리케이션 성능 최적화를 검색하고, 가장 “비경제적인” 코드 줄을 식별하며, 이러한 코드를 수정하여 CPU 사용률을 줄이고 컴퓨팅 비용을 절감하고 애플리케이션 성능을 개선할 방법을 권장합니다."
기능 설명만 보면 개발자와 엔지니어가 더 이상은 필요없을 것만 같다. 특히 코드리뷰가 서비스의 핵심 중 하나인 Nextstep 입장에서는 이 도구를 앞으로 어떻게 활용하는 것이 좋을지 호기심이 가던차에, 이번 AWS Community Day에 아이스크림에듀의 우여명님께서 이 주제로 발표를 하신다기에 다녀왔다. 결론부터 말하면, 올해는 우리 서비스에서 이 기능을 활용하지는 않을 것 같다.
CodeGuru Reviewer는 github repository를 associate하면 자동으로 webhook이 설정된다. 이 후 Pull Request를 보내면 코드를 읽은 후 10여분 후에 associate할때 인증했던 github 계정으로 리뷰를 달아준다. 이 때 Reviewer가 다루는 영역은 크게, '올바른 AWS API를 사용하는지', '동시성 구조를 올바르게 구현했는지', '리소스 처리를 제대로 했는지(DB 연결 해제 등)', '민감 정보가 유출되는지' 등이다. 객체지향 설계, 클린코드, 리팩토링, ATDD, DDD 등 도메인 설계 내지 소프트웨어 아키텍처를 미션으로 부여하고 리뷰하는 Nextstep에서는 당분간 사용할 일은 없겠다. 오히려 이 기능은 Production 환경에서 개발자들이 보다 비즈니스 로직에 신경 쓸 수 있도록 돕는데에는 유의미하다고 생각한다. 비즈니스 로직에 대한 코드리뷰를 해줄 가능성이 없는지에 대한 물음에는 발표자 분이 AWS 관계자가 아니어서 답하기 곤란하다고 하셨다. 사실 이 기능이 되는줄 알고 어떻게 학습시켰을까 궁금해서 갔던 거였는데..
그렇다면, Nextstep 플랫폼에 적용해보는 것은 어떨까? 우선 Reviewer만 쓸 경우에 Sonarqube와 CodeGuru가 차이가 없을 것으로 보이는데, 혹시 현업에서 둘 다 쓰고 있냐는 물음에 둘다 쓰고 있지 않다고 답하셔서 다소 당황쓰.. 우선 그냥 봐도 비용이 상당히 높다. https://aws.amazon.com/ko/codeguru/pricing/
게다가 발표자분의 이야기에 따르면, AWS SDK 사용과 관려한 부분은 잘 잡지만 동시성과 관련한 부분은 아직 아쉬운 부분이 있다고 한다. (오히려 IntelliJ가 더 잘 잡아준다고..) 그리고 아직 리뷰의 시작과 종료에 대한 알림이 없는 등 부족한 부분들도 있다. 학습과 관련한 부분, 부족한 기능은 추후에 개선될 것이라 생각되지만, 비용 대비 (진정) 효과가 있을 것인가에 대해서는 실제로 사용해보지 않고서 판단하기 어려울 거 같다. 90일간 무료로 사용가능하니, Production Code를 테스트해보고 판단하는 것도 괜찮을 듯 싶다.
CodeGuru Profiler의 경우 Web console에서 활성화한 이후, gradle 설정과 main method에 코드를 추가하면 된다. 특정 기능의 예상 CPU /Mem 사용률 내지 비용을 확인해주므로 배포파이프라인, 운영상에서 비용 편익 분석을 해보는 것도 유의미할 것 같다.
CodeGuru를 보러 갔다가, EKS에 흥미를 느끼고 온 하루였다.
https://www.facebook.com/yongho1037/posts/1226552910886443