일반

Q: Amazon CodeGuru란 무엇입니까?

Amazon CodeGuru는 코드 수준을 향상하고 애플리케이션에서 가장 비경제적인 코드 줄을 찾아내는 데 유익한 지능형 권장 사항을 제공하는 개발자 도구입니다.

Q: Amazon CodeGuru로 무엇을 할 수 있습니까?

Amazon CodeGuru는 크게 두 개의 구성 요소로 이루어져 있습니다. 하나는 Amazon CodeGuru 리뷰어이고 다른 하나는 Amazon CodeGuru 프로파일러입니다. Amazon CodeGuru 리뷰어는 기계 학습 및 자동화된 추론을 사용하여 애플리케이션 개발 중 심각한 문제와 찾기 힘든 버그를 식별하여 코드 품질을 높입니다. Amazon CodeGuru 프로파일러는 프로덕션에서 실행 중인 애플리케이션의 성능을 최적화하고 가장 비경제적인 코드 줄을 식별하여 운영 비용을 크게 절감합니다.

Q: Amazon CodeGuru를 시작하려면 어떻게 해야 합니까?

Amazon CodeGuru는 이제 정식 버전으로 사용 가능합니다. Amazon CodeGuru 콘솔에서 바로 시작할 수 있습니다.

Amazon CodeGuru 리뷰어를 시작하려면 Amazon CodeGuru 리뷰어 콘솔에 로그인하고 GitHub, GitHub Enterprise, Bitbucket 또는 AWS CodeCommit의 기존 코드 리포지토리를 연결하면 됩니다. 1회성 설정을 완료하면 Amazon CodeGuru 리뷰어가 풀 요청 또는 코드 리포지토리 내에서 직접 코드를 분석하고 코드 개선 권장 사항을 제공하기 시작합니다.

몇 분 내에 애플리케이션 프로파일링을 시작할 수도 있습니다. Amazon CodeGuru 프로파일러를 시작하려면 Amazon CodeGuru 프로파일러 콘솔에 로그인하고 애플리케이션용 프로파일링 그룹을 구성하면 됩니다. 명령줄의 프로파일링 에이전트를 사용하여 애플리케이션을 시작하거나 설명된 사용자 정의 메서드 중 하나를 사용해 단계를 따릅니다. Amazon CodeGuru 프로파일러를 지속적으로 실행하여 라이브 애플리케이션의 성능 문제를 찾을 수 있습니다.

Q: Amazon CodeGuru를 사용할 수 있는 AWS 리전은 어디입니까?

지원되는 AWS 리전을 보려면 모든 AWS 글로벌 인프라에 대한 AWS 리전 표를 참조하세요. 자세한 내용은 AWS 일반 참조에서 리전 및 엔드포인트를 참조하십시오.

Amazon CodeGuru 리뷰어

Q: Amazon CodeGuru 리뷰어란 무엇입니까?

Amazon CodeGuru 리뷰어는 Java 및 Python 코드에서 중요한 결함과 코딩 모범 사례와의 차이를 식별하는 자동화된 코드 검토 서비스입니다. 풀 요청 내에서 코드 줄을 스캔하고 주요 오픈소스 프로젝트 및 Amazon 코드베이스에서 학습한 표준을 기반으로 지능형 권장 사항을 제공합니다. Amazon CodeGuru 리뷰어는 GitHub, GitHub Enterprise, Bitbucket 및 AWS CodeCommit를 포함하여 널리 사용되는 소스 제어 시스템의 기존 코드 검토 워크플로와 원활하게 통합되며 코드 품질 개선을 위해 실행할 수 있는 권장 사항을 제공합니다.

Q: 지원되는 프로그래밍 언어 및 소스 코드 리포지토리는 무엇입니까?

Amazon CodeGuru 리뷰어는 현재 GitHub, GitHub Enterprise, Bitbucket 및 AWS CodeCommit 리포지토리에 저장된 Java 및 Python 코드를 지원합니다.

Q: Amazon CodeGuru 리뷰어는 어떤 유형의 문제를 감지합니까?

Amazon CodeGuru 리뷰어는 동시성 문제, 잠재적 경합 조건, 삭제되지 않은 입력 또는 악성 입력, 중요한 데이터(예: 자격 증명)의 부적절한 처리, 리소스 유출을 확인하며 동시 코드의 경합 조건 및 교착 상태도 감지합니다. 또한 AWS, Java 및 Python 모범 사례를 권장하고, 더 나은 코드 유지 관리를 위해 통합 가능한 복제 코드를 탐지합니다.

Q: Amazon CodeGuru 리뷰어를 시작하려면 어떻게 해야 합니까?

Amazon CodeGuru 콘솔로 이동하여 코드 풀 요청 내에 직접 Amazon CodeGuru 리뷰어 권장 사항을 통합하면 됩니다. Amazon CodeGuru 콘솔에서 AWS CodeCommit, GitHub, GitHub enterprise 및 BitBucket 리포지토리를 연결하는 단계를 수행하여 Amazon CodeGuru 리뷰어의 권장 사항을 수신할 수 있습니다. Amazon CodeGuru 리뷰어를 활성화하면 연결된 리포지토리의 풀 요청에 대한 설명이 생성되는 대로 자동화된 지능형 권장 사항이 제공됩니다.

Q: Amazon CodeGuru 리뷰어가 내 코드에 액세스할 수 있습니까?

Amazon CodeGuru 리뷰어는 코드에 대한 권장 사항을 생성할 목적으로 읽기 전용 액세스 권한으로만 코드에 액세스합니다. AWS에서는 고객의 신뢰, 개인 정보, 콘텐츠의 보안을 최우선으로 하고 있으며 콘텐츠에 대한 무단 액세스 또는 유출을 방지하기 위해 전송 중 암호화를 비롯한 적절한 제어를 구현하고 고객과의 약속을 충실히 준수합니다. 자세한 내용은 데이터 프라이버시 FAQ를 참조하세요.

Q: Amazon CodeGuru 리뷰어에 내 코드 복사본이 유지됩니까?

아니요. Amazon CodeGuru 리뷰어는 사용자의 소스 코드를 저장하지 않습니다.

Q: Amazon CodeGuru 리뷰어는 지능형 권장 사항을 제공하기 위해 어떻게 학습됩니까?

Amazon CodeGuru 리뷰어는 로지스틱 회귀와 신경망 조합을 사용하는 규칙 마이닝 및 지도형 기계 학습 모델을 사용하여 학습됩니다.

예를 들어 AWS 모범 사례와의 차이를 교육하는 동안 Amazon CodeGuru 리뷰어는 검색 기술 및 로컬리티 인식 모델을 사용하여 Amazon 코드베이스에서 AWS API 호출이 포함된 풀 요청을 마이닝합니다. 코드의 품질을 개선하기 위한 코드 변경을 살펴보고 설명서 데이터를 교차 참조로 사용합니다. 여기서 결과적으로, Reviewer가 코드를 검토할 때 사용자에게 모범 사례로 권장하는 새로운 규칙 집합이 생성됩니다.

리소스 및 중요한 데이터 유출에 대한 학습 중에는 리소스 또는 중요한 데이터를 사용하는 코드 경로에 대해 전체 코드 분석을 수행하고, 이를 나타내는 기능 집합을 생성한 다음, 로지스틱 회귀 모델 및 Convolutional Neural Network(CNN)의 입력으로 사용합니다.

코드 불일치에 대해 전체 또는 증분 코드 검토 중 모델을 훈련합니다. 고객이 검토를 트리거한 후에 이러한 모델은 여러 데이터 마이닝 및 기계 학습 기술을 이용하여 데이터 집합을 구축하고 코드 패턴에 대한 이유를 강조 표시하며 고객 코드에 맞게 사용자 지정된 권장 사항을 생성합니다.

규칙 기반 및 기계 학습 기반 모델에 대해 Amazon CodeGuru Reviewer는 사용자가 레이블로 제공하는 피드백을 사용하고 코드 감지기의 품질을 반복적으로 개선합니다.

Q: 오픈 소스 코드 분석 도구는 CodeGuru Reviewer에 어떻게 통합됩니까?

Amazon CodeGuru Reviewer는 3가지 소스의 규칙을 통합합니다. (1) CodeGuru Reviewer 규칙은 서비스에 필수적이며 기계 학습 및 자동 추론을 사용하여 코드에서 코드 품질 및 보안 문제를 분석하도록 설계되었습니다. (2) Python 코드의 보안 문제를 찾도록 설계된 오픈 소스 코드 분석 도구인 Bandit의 관리형 버전은 CodeGuru Reviewer에 통합됩니다. (3) Java 코드의 동시성 및 기타 문제를 찾도록 설계된 오픈 소스 코드 분석 도구인 Infer의 관리형 버전도 CodeGuru Reviewer에 통합됩니다. CodeGuru Reviewer는 모든 소스(프로그래밍 언어에 해당하는 경우)의 규칙을 사용하여 코드를 분석하며 수행된 모든 분석을 포함하는 단순한 요금 구조를 사용합니다.

Amazon CodeGuru Reviewer 보안 탐지기

Q: Amazon CodeGuru Reviewer 보안 탐지기가 지원하는 프로그래밍 언어는 무엇입니까?

Amazon CodeGuru Reviewer 보안 탐지기는 Java 8~Java 11과 Python 3 이상을 지원합니다. 

Q: Amazon CodeGuru Reviewer 보안 탐지기를 사용해야 하는 이유는 무엇입니까?

CodeGuru 리뷰어 보안 탐지기는 24/7 코드를 검토하는 보안 전문가를 두는 것과 같습니다. 이 보안 탐지기는 배포 전에 보안 모범 사례를 식별하는 데 도움이 됩니다.

Q: Amazon CodeGuru 리뷰어 보안 탐지기는 어떻게 작동합니까?

CodeGuru 리뷰어 보안 탐지기는 코드를 정적으로 분석하여 가능한 모든 코드 실행 방법을 나타내는 제어 흐름 그래프를 작성합니다. 그런 다음 제어 흐름 그래프를 통해 코드가 흐르는 방식을 탐지하여 잠재적 문제를 찾아냅니다. 여기에는 애플리케이션 전체에서 다수의 메서드 및 클래스를 통해 수행될 수 있는 작업 시퀀스가 포함됩니다. 예를 들어 보안 탐지기는 대칭형 보안 키 생성기인 Javax.Crypto.KeyGenerator 또는 Python의 crypto.secrets가 다른 메서드에서 초기화되고 사용된 경우라도 사용 전에 초기화되었는지 확인합니다.

Q: Amazon CodeGuru Reviewer 보안 탐지기는 어떤 유형의 문제를 감지합니까?

CodeGuru Reviewer는 코드 보안 문제의 다섯 가지 범주를 식별하는 데 도움이 될 수 있습니다. (1) AWS API 보안 모범 사례는 AWS EC2 및 KMS와 같은 다양한 AWS 서비스의 API를 사용할 때 보안 모범 사례를 준수합니다. (2) Java 및 Python 암호 라이브러리 모범 사례는 Javax.Crypto.Cipher와 같은 일반적인 Java 암호 라이브러리와 Python의 기본 제공 및 서드 파티 해시 또는 암호화 모듈(예: 암호화)을 확인하여 올바르게 초기화되고 호출되었는지 확인합니다. (3) 보안 웹 애플리케이션은 크로스 사이트 스크립팅, LDAP 주입 및 경로 횡단 주입과 같은 웹 애플리케이션 관련 보안 문제를 확인합니다. (4) AWS 보안 모범 사례는 AWS 암호 권장 사항과 같은 내부 보안 전문 지식을 사용 사례에 제공합니다.

Q: Amazon CodeGuru Reviewer 보안 탐지기는 리포지토리의 모든 코드를 분석합니까?

예. CodeGuru Reviewer 보안 탐지기는 리포지토리의 빌드 아티팩트 및 모든 Java 소스 코드를 분석하여 보안 권장 사항을 제공합니다.

Amazon CodeGuru Reviewer CI/CD 통합

Q: CodeGuru는 어떤 CI/CD 공급자를 지원합니까?

CodeGuru는 CI/CD 통합을 위한 GitHub 작업을 지원합니다.

Q: CodeGuru를 CI/CD 파이프라인에 통합하여 어떻게 코드를 개선할 수 있습니까?

CodeGuru Reviewer를 CI/CD 파이프라인에 통합하면 코드 품질 및 보안 권장 사항 모두에 대한 코드 검토 프로세스를 쉽게 자동화할 수 있습니다. 파이프라인의 풀/병합 요청, 푸시 또는 예약된 실행에서 실행하도록 구성할 수 있습니다. 통합을 통해 권장 사항을 확인하고, 코드 품질 및 잠재적인 보안 취약점을 지속적으로 모니터링할 수 있습니다.

Q: GitHub와의 CI/CD 통합을 설정하려면 어떻게 해야 합니까?

여기를 클릭하여 GitHub Marketplace에서 CodeGuru Reviewer GitHub 작업을 볼 수 있습니다. Marketplace 페이지의 지침에 따라 CodeGuru를 GitHub CI 워크플로에 통합합니다. 자세한 내용은 설명서를 참조하세요.

Amazon CodeGuru 프로파일러

Q: Amazon CodeGuru 프로파일러란 무엇입니까?

Amazon CodeGuru 프로파일러는 애플리케이션의 런타임 동작을 쉽게 파악하고, 성능을 개선하며, 인프라 비용을 절감하는 데 도움이 되는 개발자 및 IT 운영자를 위한 기능입니다. Amazon CodeGuru 프로파일러는 애플리케이션 런타임 프로파일을 분석한 후 개발자에게 코드에서 가장 관련성이 높은 부분의 성능을 개선하는 방법을 알려주는 지능형 권장 사항 및 시각화를 제공합니다.

Q: 프로파일링 그룹이란 무엇입니까?

프로파일링 그룹은 사용자를 위해 생성된 논리적 그룹화입니다. 단일 애플리케이션의 경계를 나타냅니다. 예를 들어 마이크로서비스 아키텍처에서 프로파일링 그룹은 마이크로서비스에 할당된 프로필을 집계하고 모든 마이크로서비스에 대한 단일 프로필을 생성할 수 있습니다.

Q: 이미 방대한 로깅 기능이 코드에 통합되어 있습니다. 그래도 프로파일링이 필요합니까?

로깅 실행 시간은 로깅이 지연 시간(CPU 사용률이 아님)만 모니터링할 수 있기 때문에 제한된 시나리오에서만 작동하며, 개발자는 (애플리케이션 성능에 미치는 영향 없이) 애플리케이션에 모든 기능을 기록해야 하기 때문에 구현에 시간이 많이 소요되므로 개발자는 제작 중인 애플리케이션을 효과적으로 모니터링하고 문제를 해결하는 데 필요한 도구를 사용할 수 없습니다. 이 경우 적합한 것이 프로파일링입니다. Amazon CodeGuru 프로파일러는 시나리오에 관계 없이 애플리케이션의 동작에서 발생하는 모든 것에 대한 데이터를 수집합니다. CodeGuru 프로파일러는 일반적으로 발생하는 성능 비효율에 대한 기술 자료를 사용하여 라이브 애플리케이션에서 성능에 영향을 미치는 코드 패턴을 자동으로 검색합니다. 그런 다음 개발자가 제공된 권장 사항에 따라 문제를 수정할 수 있습니다.

Q: Amazon CodeGuru 프로파일러는 기존의 APM 및 독립 실행형 프로파일러와 어떻게 다릅니까?

기존의 APM은 모니터링, 추적 및 애플리케이션 성능에 관한 유용한 데이터를 제공합니다. Amazon CodeGuru 프로파일러는 애플리케이션의 런타임 데이터를 시각화하고 검색된 성능 문제에 대해 실행할 수 있는 권장 사항을 제공하여 이러한 APM 기능을 보완합니다. 또한 기계 학습을 사용하여 애플리케이션 프로파일의 이상을 감지하고 경고하며 비정상적인 코드 줄을 가리킵니다. Amazon CodeGuru 프로파일러를 사용하면 성능을 최적화할 수 있는 가장 좋은 기회를 나타내는 코드 부분을 손쉽게 식별하고 비용 절감 가능성과 함께 성능 엔지니어링에 대한 해박한 지식 없이도 최적화를 수행하는 방법에 대한 지침을 받을 수 있습니다. Amazon CodeGuru 프로파일러는 AWS Lambda를 비롯한 EC2 인스턴스, 컨테이너 및 서버리스 컴퓨팅 플랫폼과 온프레미스를 모두 프로파일링합니다. 또한 일부 독립 실행형 프로파일러는 테스트 환경에서만 실행되도록 설계되었지만 Amazon CodeGuru 프로파일러는 프로덕션 환경의 프로덕션 트래픽 로드 아래에서 애플리케이션에 미치는 영향 없이 지속적으로 실행되도록 설계되었습니다. 따라서 베어메탈 호스트에서 실행할 때와 같이 프로덕션의 운영 문제를 해결하는 데 많은 도움이 됩니다.

Q: 어떤 유형의 애플리케이션을 프로파일링할 수 있습니까?

Amazon CodeGuru 프로파일러는 Amazon EC2에서 호스팅되는 애플리케이션과 Amazon ECS 및 Amazon EKS에서 실행되는 컨테이너식 애플리케이션, AWS Fargate 및 AWS Lambda에서 실행되는 서버리스 애플리케이션에서 작동합니다. 또한 Amazon CodeGuru 프로파일러를 온프레미스에서 실행할 수도 있습니다.

Q: CodeGuru 프로파일러는 AWS Lambda에서 호스팅되는 애플리케이션의 성능에 어떤 영향을 미칩니까?

Amazon CodeGuru 프로파일러의 에이전트는 AWS Lambda 함수에 할당된 리소스(CPU, 메모리)를 사용합니다. 이는 애플리케이션이 프로세스 내 스레드로 실행되는 동안 애플리케이션 성능에 최소한의 영향을 미치도록 조정됩니다. 애플리케이션이 AWS Lambda 함수에서 리소스의 대부분 사용하는 경우 에이전트가 제대로 작동할 수 있도록 리소스 증가를 평가합니다.

Q: 지원되는 프로그래밍 언어는 무엇입니까?

Amazon CodeGuru 프로파일러는 현재 Java, Python(평가판) 및 JVM 언어(예: Scala 및 Kotlin)를 지원합니다.

Q: Amazon CodeGuru 프로파일러는 어떻게 작동합니까?

Amazon CodeGuru 프로파일러는 에이전트, 프로파일러 서비스 및 지능형 권장 사항의 3가지 부분으로 구성됩니다. 에이전트는 명령줄에서 애플리케이션으로 시작되며, 애플리케이션의 일부로서 프로세스 내 스레드로 실행됩니다. 에이전트는 에이전트를 실행하는 각 서비스 인스턴스의 데이터를 수집한 후 5분 간격으로 프로파일러 서비스로 전송합니다. 그러면 프로파일러 서비스가 이러한 데이터를 집계합니다. Amazon CodeGuru 프로파일러는 프로파일 데이터를 대화형 플레임 그래프로 게시합니다. 사용자는 이 그래프를 사용하여 애플리케이션의 성능을 시각화할 수 있습니다. 또한 Amazon CodeGuru 프로파일러는 프로파일링된 데이터를 지속적으로 스캔하고 Amazon 및 성능 엔지니어링 모범 사례와 비교합니다. 성능 문제가 발견되면 선제적으로 지능형 권장 사항을 제공합니다. 또한 기계 학습을 사용하여 애플리케이션 런타임 데이터를 지속적으로 분석하며 애플리케이션 프로파일에서 이상을 감지하면 알림을 보내고, 비정상적인 코드 줄을 가리킵니다.

Q: Amazon CodeGuru 프로파일러가 프로파일링하는 리소스는 무엇이고 지원되는 언어는 무엇입니까?

CodeGuru는 Java 및 기타 JVM 언어에 대한 CPU(활성 CPU 및 벽시계 시간) 및 메모리(힙 요약)와 Python 애플리케이션에 대한 CPU(벽시계 시간)를 프로파일링합니다.

Q: 동일한 애플리케이션의 CPU와 메모리 정보를 모두 받을 수 있습니까?

예. 메모리 프로파일링을 활성화하고 프로파일링을 시작하면 CodeGuru 프로파일러가 애플리케이션의 CPU와 메모리 정보를 모두 수집합니다. 프로파일링 그룹 1개만 있으면 지정된 애플리케이션의 CPU와 메모리 데이터를 모두 받을 수 있습니다.

Q: Amazon CodeGuru 프로파일러가 제공하는 메모리 프로파일링 정보는 무엇입니까?

CodeGuru 프로파일러는 힙 요약 정보를 제공합니다. 힙 요약은 지정된 시간 프레임(일반적으로 5분) 동안 각 객체 유형(예: String, int, char[]) 및 사용자 지정 유형에 대한 메모리 사용률을 통합하여 보여줍니다. CodeGuru는 객체의 총 크기와 개수도 추적합니다. 이러한 지표는 타임라인 그래프로 표시되므로 객체 유형별 메모리 사용률 추세와 피크를 쉽게 파악할 수 있습니다.

Q: 힙 요약 정보로 무엇을 할 수 있습니까?

힙 요약은 두 가지 시나리오에 유용합니다. 첫째, 잠재적 메모리 누수를 발견할 수 있습니다. 하나 이상의 객체 유형에 대해 메모리 사용률 곡선이 지속적으로 증가하는 것은 누수를 나타낼 수 있으며 이는 메모리 부족 오류와 애플리케이션 충돌로 연결됩니다. 두 번째 시나리오는 애플리케이션의 메모리 공간을 최적화하려는 경우입니다. 이 경우 객체 유형별 메모리 사용률 내역을 사용하여 집중할 영역을 파악할 수 있습니다. 예를 들어 예기치 않게 높은 양의 메모리가 특정 객체 유형과 관련되어 있다는 것을 알면 해당 유형의 객체를 할당하고 참조하는 작업을 수행하는 애플리케이션 부분에 분석 및 최적화 노력을 집중할 수 있습니다.

Standard Product Icons (Features) Squid Ink
AWS 고객 사례 보기

Amazon CodeGuru 고객 페이지를 방문하세요.

자세히 알아보기 
Sign up for a free account
무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다. 

가입하기 
Standard Product Icons (Start Building) Squid Ink
콘솔에서 구축 시작

AWS Management Console에서 Amazon CodeGuru를 사용하여 구축을 시작하십시오.

로그인