Amazon CodeGuru FAQ

일반

CodeGuru는 두 개의 구성 요소로 이루어져 있습니다. 하나는 Amazon CodeGuru Security이고 다른 하나는 Amazon CodeGuru Profiler입니다. CodeGuru Security는 애플리케이션 코드에서 보안 취약성을 찾아내는 기계 학습(ML) 및 프로그램 분석 기반 도구입니다. 또한 CodeGuru Security는 하드 코딩된 보안 인증 정보를 스캔합니다. CodeGuru Profiler는 프로덕션에서 실행 중인 애플리케이션의 성능을 최적화하고 가장 비경제적인 코드 줄을 식별하여 운영 비용을 크게 절감합니다.

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

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

Amazon CodeGuru Security

CodeGuru Security는 애플리케이션 코드에서 보안 취약성을 찾아내는 ML 및 프로그램 분석 기반 코드 스캔 도구입니다.

CodeGuru Security는 현재 Java, Python, JavaScript, TypeScript, C#, CloudFormation, Terraform, Go 및 Ruby 스캔을 지원합니다.

CodeGuru Security는 OWASP(Open Worldwide Application Security Project) 10대 문제, CWE(Common Weakness Enumerations) 25대 문제, 로그 삽입, 보안 암호 및 AWS API와 SDK의 안전한 사용을 탐지합니다. CodeGuru Security에서 발견된 취약성에 대한 자세한 내용은 Amazon CodeGuru Detector Library를 참조하세요.
 

CodeGuru 콘솔로 이동하여 개발자 수명 주기에 CodeGuru Security를 통합하세요. 지속적 통합 및 전달(CI/CD) 도구, 리포지토리 스캔 및 통합 개발 환경(IDE)에 통합할 수 있습니다.
 

CodeGuru Security는 코드에 대한 권장 사항을 생성하기 위해 읽기 전용 권한으로만 코드에 액세스합니다. 고객 콘텐츠의 신뢰, 개인 정보 보호 및 보안은 AWS가 가장 중요하게 여기는 원칙입니다. AWS는 콘텐츠에 대한 무단 액세스 또는 유출을 방지하기 위해 전송 중 암호화를 비롯한 적절한 제어를 구현하고 고객과의 약속을 충실히 준수합니다. 또한 암호화를 위해 고객 관리자 KMS 키(CMCMK)를 지원합니다. 자세한 내용은 데이터 프라이버시 FAQ를 참조하세요.

아니요, CodeGuru Security는 소스 코드를 저장하지 않습니다.
 

CodeGuru Security는 로지스틱 회귀와 신경망 조합을 사용하는 규칙 마이닝 및 지도형 ML 모델을 사용하여 훈련됩니다. 예를 들어, 중요한 데이터 유출에 대한 훈련 중에는 리소스 또는 중요한 데이터를 사용하는 코드 경로에 대해 전체 코드 분석을 수행하고, 이를 나타내는 기능 집합을 생성한 다음, 로지스틱 회귀 모델 및 합성곱 신경망(CNN)의 입력으로 사용합니다.

CodeGuru Security는 Lambda용 Amazon Inspector 코드 스캔과 통합됩니다. 리포지토리 및 CI/CD 도구와의 추가 통합이 곧 제공될 예정입니다.
 

Amazon CodeGuru Profiler

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

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

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

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

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

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

CodeGuru Profiler는 현재 Java, Python(평가판) 및 JVM 언어(예: Scala 및 Kotlin)를 지원합니다.

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

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

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

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

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