"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java용 AWS SDK를 통한 Amazon Aurora Serverless용 데이터 API - Aurora Serverless vata API가 DevOps Guru를 충족합니까?

Java용 AWS SDK를 통한 Amazon Aurora Serverless용 데이터 API - Aurora Serverless vata API가 DevOps Guru를 충족합니까?

2024년 11월 11일에 게시됨
검색:780

소개

내 기사에서 서버리스 애플리케이션을 위한 Amazon DevOps Guru - 10부 Aurora Serverless v2의 이상 탐지에서 DevOps Guru가 Java 21 관리형 Lambda 함수의 경우 Aurora(서버리스 v2) PostgreSQL 데이터베이스를 사용하여 이상을 성공적으로 탐지할 수 있다는 것을 알게 되었습니다. 런타임은 JDBC를 통해 연결되었습니다. 우리는 데이터베이스를 0.5에서 1 ACU로 확장했으며 Lambda 함수를 호출하여 몇 분 동안 동시에 수백 번 ID로 제품을 검색함으로써 데이터베이스에 매우 높은 로드를 생성했습니다. DevOps Guru가 데이터베이스 연결 합계가 증가하고 데이터베이스(CPU) 로드가 지속적으로 높다는 점을 정확하게 지적한 것을 확인했습니다. 이 기사에서는 DevOps Guru가 JDBC 대신 Java용 AWS SDK와 함께 Aurora Serverless v2용 데이터 API를 사용하여 동일한 실험을 수행하면서 변칙을 감지하는지 여부를 알아보고 싶습니다.

Data API를 사용한 Aurora Serverless v2의 이상 탐지

샘플 애플리케이션을 살펴보고 SAM 템플릿을 사용하여 인프라를 생성하고 다음 그림에 설명된 애플리케이션을 배포해 보겠습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

애플리케이션은 Aurora Serverless v2 PostgreSQL 데이터베이스에 저장된 제품을 생성하고 데이터 API를 사용하여 ID로 검색합니다. ID로 제품을 검색하는 데 사용할 관련 Lambda 함수는 GetProductByIdViaAuroraServerlessV2DataApi이고 해당 핸들러 구현은 GetProductByIdViaAuroraServerlessV2DataApiHandler입니다.

이전 기사에서와 같이 hey 도구를 사용하여 이와 같은 스트레스 테스트를 수행합니다.

hey -z 15m -c 300 -H "X-API-Key: XXXa6XXXX" https://XXX.execute-api.eu-central-1.amazonaws.com/prod/productsWithDataApi/1   

이 예에서는 15분 동안 300개의 동시 컨테이너가 있는 API 게이트웨이 엔드포인트를 호출합니다. prod/productsWithoutDataApi 엔드포인트 뒤에서 Lambda 함수 GetProductByIdViaAuroraServerlessV2WithoutDataApi가 호출되어 Aurora Serverless v2 PostgreSQL 데이터베이스에서 ID 1로 제품을 검색합니다.

[SAM 템플릿]((https://github.com/Vadym79/AWSLambdaJavaAuroraServerlessV2DataApi/blob/master/template.yaml) Aurora 데이터베이스 클러스터에서 최소 용량 0.5에서 최대 용량 1 ACU(이는 매우 작은 데이터베이스 크기) 비용 절감을 위해 부하가 증가하는 경우.

  AuroraServerlessV2Cluster:
    Type: 'AWS::RDS::DBCluster'
...
      ServerlessV2ScalingConfiguration:
        MinCapacity: 0.5
        MaxCapacity: 1

Aurora(Serverless v2) 데이터베이스는 Aurora Serverless v2용 데이터 API를 사용하여 데이터베이스 크기(이 경우 ACU 설정)에 비례하여 사용 가능한 최대 데이터베이스 연결 수를 관리합니다(이는 v1과 큰 차이점입니다. 초당 1000개의 데이터베이스 연결이라는 하드 할당량이 있었던 2024년 말에 지원이 종료됩니다. 자세한 내용은 Aurora Serverless v2의 최대 연결에 대한 설명서를 참조하십시오. 따라서 호출 수가 증가함에 따라 곧 사용 가능한 최대 데이터베이스 연결 수에 도달하고 데이터베이스(CPU) 로드가 높아질 것으로 예상됩니다. 따라서 해당 데이터베이스는 제품을 검색하라는 새로운 Lambda 함수 요청에 응답할 수 없습니다. id(Lambda도 실행됩니다). 이를 통해 우리는 이상 현상을 유발하고 DevOps Guru가 이를 감지할 수 있는지 알아보고 싶습니다. 그리고 그것은 일종의.... 다음과 같은 통찰력이 생성되었습니다:

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

그리고 다음과 같이 집계된 변칙적 측정항목이 식별되었습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

내 기사 서버리스 애플리케이션을 위한 Amazon DevOps Guru - Part 10 Aurora Serverless v2의 이상 탐지에 설명된 데이터 API 대신 JDBC를 사용하는 경우 식별된 집계된 비정상 지표와 비교하면 Aurora 데이터베이스 비정상 지표: 데이터베이스 연결을 완전히 검토합니다. 합계 및 데이터베이스(CPU) 로드가 발생했지만 데이터베이스가 응답할 수 없어 정의된 시간인 15초에 도달한 Lambda의 오류를 올바르게 확인했습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?.

그럼 차이점은 무엇인가요? JDBC(비 데이터 API) 및 데이터 API를 사용하여 Aurora Serverless v2 PostgreSQL 클러스터에서 재현한 두 가지 사건을 살펴보겠습니다.

ACU 활용/확장 측면에서 둘 다 동일해 보입니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

CPU 사용률, DatabaseConnection DBLoad(CPU)와 같은 다른 데이터베이스 측정항목과 관련하여 큰 차이가 있습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

  • CPU 사용률은 JDBC(Non-Data API) 및 데이터 API 사례에서 동일하게 보입니다. 하지만 DevOps Guru는 JDBC 실험에서도 이 측정항목을 보지 못했기 때문에 이 측정항목을 고려하지 않는 것 같습니다.
  • 데이터 API 사용량에 비해 DBLoad(CPU)가 매우 낮습니다. Dat API의 경우 Aurora Serverless v2 데이터베이스 앞에 연결 사용량을 모니터링하고 데이터베이스 과부하를 방지하는 일부 로드 밸런서가 있는 것 같습니다.
  • DatabaseConnection 지표는 데이터 API 사용에 대해 표시되지 않습니다(또는 0으로 표시됨). 그 이유는 우리가 데이터 API에 대한 데이터베이스 연결을 관리하지 않고 다른 쪽에서 수행되기 때문입니다. 물론 이는 Aurora Serverless v2의 최대 연결에서 배운 중요한 역할을 여전히 수행하지만 이 지표는 CloudWatch 지표 외부에 노출되는 것으로 보이며 DevOps Guru조차도 실제 수치에 액세스할 수 없습니다.

이와 매우 낮은 DBLoad(CPU)로 인해 JDBC 사용 사례와 비교하여 데이터 API 사용이 포함된 Aurora Serverless v2 클러스터에 대한 DevOps Guru 통찰력이 생성되지 않았습니다.

두 번째 실험은 Aurora Serverless v2 클러스터에 직접 연결하여 수행했고, 표준 방식(비데이터 API)을 사용하여 ID로 제품을 수백 번 가져오는 스크립트를 작성하여 로드 테스트를 생성하는 스크립트를 작성했습니다. Hey 도구와 유사하지만 Api Gateway를 호출하는 대신 데이터베이스에 직접 가져옵니다. 데이터베이스를 로드한 후 위에서 설명한 대로 hey 도구를 사용하여 동일한 실험을 시작했고 어떤 일이 일어날지 확인하고 싶었습니다. 동일한 통찰력이 생성되었지만 이번에는 다음과 같은 비정상적인 측정항목이 사용되었습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

이제 최소한 추가 Aurora Serverless v2 데이터베이스 연결 합계 변칙 지표가 표시되지만 DBLoad(CPU) 지표는 여전히 누락되었습니다.

그래프로 표시된 이상 현상은 다음과 같습니다.

Data API for Amazon Aurora Serverless vith AWS SDK for Java - Part Aurora Serverless vata API meets DevOps Guru or not?

물론, 2번의 로드 테스트를 차례로 수행하고 부분적으로 병렬로 수행했기 때문에 실험은 깨끗하지 않았습니다. 첫 번째는 API Gateway를 사용하지 않고 데이터베이스에 직접 연결하고 두 번째는 Data API를 사용하여 연결했습니다. 이는 데이터베이스 연결 합계 지표가 Aurora Serverless v2(및 일반적으로 RDS)에 대한 DevOps Guru 통찰력을 생성하는 데 매우 중요한 기준이며 데이터 API를 사용하는 경우 일반적으로 노출되지 않는다는 초기 가정을 확인했습니다.
나는 이미 Devops Guru 팀에 연락하여 그들이 서비스를 개선할 것이라는 기대와 함께 내 통찰력을 공유했습니다. 또는 먼저 데이터 API와 함께 Aurora Serverless v2를 사용하기 위해 CloudWatch 지표로 데이터베이스 연결을 노출하는 문제가 수정될 예정입니다.

결론

이 기사에서는 DevOps Guru가 데이터 API를 통해 연결된 Java 21 관리형 런타임을 사용하는 Lambda 함수의 경우 Aurora(Serverless v2) PostgreSQL 데이터베이스로 이상을 성공적으로 감지할 수 있었지만 Lambda 함수와 관련된 비정상적인 측정항목만 표시할 수 있다는 점을 알아냈습니다. 데이터베이스가 응답하지 않아 시간이 초과되었습니다. 그 주된 이유는 Data API와 함께 Aurora Serverless v2를 사용하는 경우 CloudWatch 지표로서의 데이터베이스 연결이 노출되지 않거나 항상 0으로 표시되기 때문인 것 같습니다. Aurora Serverless v2 데이터베이스 지표(데이터베이스 연결 합계)는 두 번째 인공 실험 중에만 표시되었습니다.

릴리스 선언문 이 기사는 https://dev.to/aws-builders/data-api-for-amazon-aurora-serverless-v2-with-aws-sdk-for-java-part-10-aurora-serverless-에 재현되어 있습니다. v2- data-api-meets-devops-guru-or-not-1c60?1침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3