Amazon Web Services 한국 블로그

Amazon DevOps Guru for Serverless – AWS Lambda 함수 운영 문제 자동 감지 기능

오늘은 Amazon DevOps Guru를 위한 새로운 기능인 Amazon DevOps Guru for Serverless를 발표합니다. 이를 통해 개발자는 서버리스 애플리케이션의 운영 성능과 가용성을 개선할 수 있습니다.

AWS는 2014년 AWS Lambda를 출시하면서 서버리스 컴퓨팅 공간을 개척했습니다. 오늘날 수십만 명의 고객이 AWS Lambda를 사용하고 있습니다. Lambda를 사용하면 메모리 할당, 프로비저닝된 동시성 및 시간 초과와 같은 함수에 대한 많은 파라미터를 구성할 수 있습니다. 많은 고객에게 기능의 성능과 가용성을 최적화하기 위해 모든 파라미터 간의 적절한 균형을 찾기란 어렵습니다.

2020년 12월, 저희는 고객에게 애플리케이션 문제를 자동으로 감지하여 경고하고 애플리케이션의 가용성을 개선하는 데 도움이 되는 완전관리형 AIOps(IT 운영을 위한 인공 지능) 서비스인 DevOps Guru를 발표했습니다. 그리고 오늘, Lambda를 사용하는 개발자가 함수 수준에서 비정상적인 동작을 자동으로 감지하고 ML 기반 권장 사항을 사용하여 감지된 문제를 해결할 수 있도록 DevOps Guru의 새로운 기능인 DevOps Guru for Serverless를 발표합니다.

DevOps Guru for Serverless는 ML을 사용하여 낮은 프로비저닝된 동시성 또는 낮은 메모리 사용률과 같은 Lambda 함수에 대한 광범위한 성능 및 가용성 관련 문제를 자동으로 식별하고 분석합니다. 이 기능을 사용하기 위해 서버리스 또는 ML 전문가일 필요는 없습니다.

이 기능에 대한 사후 대응적 인사이트는 가능한 최단 시간 내에 근본 원인을 식별하고 해결하는 데 도움이 되는 실행 가능한 권장 사항을 통해 서버리스 애플리케이션에 영향을 미치는 지속적인 문제의 효율적 해결에 도움을 줍니다.

그리고 DevOps Guru for Serverless는 서버리스 애플리케이션 성능에 영향을 미치기 훨씬 전에 광범위한 운영 이상을 식별하는 데 도움이 되는 사전 예방적 인사이트를 제공합니다. 또한 문제의 근본 원인을 해결하는 방법에 대한 권장 사항을 제공합니다.

문제가 탐지지되면 DevOps Guru for Serverless가 DevOps Guru 콘솔에 결과를 표시하고 Amazon EventBridge 또는 Amazon Simple Notification Service(Amazon SNS)를 사용하여 알림을 보냅니다. 이를 통해 개발자는 발견된 문제를 자동으로 관리하고 실시간으로 조치를 취할 수 있습니다.

DevOps Guru for Serverless 사전 예방적 인사이트
DevOps Guru for Serverless를 사용하면 개발자가 고객에게 영향을 미치는 이벤트가 발생하기 전에 애플리케이션 문제를 사전에 감지할 수 있습니다. 예를 들어 Lambda 함수에 대해 프로비저닝 동시성이 너무 낮게 설정되어 있고 이 애플리케이션에 대한 트래픽이 증가하는 경우 DevOps Guru는 증가하는 트래픽과 애플리케이션 대기 시간 저하를 감지하고 문제를 보여주는 사전 예방적 인사이트를 생성합니다.

ML 알고리즘은 운영 데이터 및 애플리케이션 지표에서 이러한 인사이트를 생성합니다. 인사이트는 높은 수준의 정보, 심각도, 상태 및 이 문제를 해결하는 방법에 대한 권장 사항을 제공합니다.

오늘날 DevOps Guru for Serverless는 Lambda 및 Amazon DynamoDB에 대한 사전 예방적 인사이트를 제공합니다. 다음은 오늘날 사용 가능한 운영 문제와 사전 예방적 인사이트입니다.

  • 계정 한도에 도달하는 Lambda 동시 실행 – 동시 실행이 연속 기간 동안 계정 한도에 도달할 때 트리거됩니다.
  • Lambda 프로비저닝된 동시성 함수 한도 위반 – 일정 기간 동안 프로비저닝된 동시성의 예약된 양이 충분하지 않을 때 트리거됩니다.
  • SQS의 가시성 제한 시간에 비해 Lambda 시간 초과가 높음 – Lambda 함수의 지속 시간이 이벤트 소스 Amazon Simple Queue Service(Amazon SQS)에 대한 가시성 시간 제한을 초과할 때 트리거됩니다.
  • Lambda 프로비저닝된 동시성 사용량이 예상보다 낮음 – 프로비저닝된 동시성 사용률이 너무 낮을 때 트리거됩니다.
  • DynamoDB 사용량에 대한 계정 읽기/쓰기 용량이 계정 한도에 도달 – 일정 기간 동안 계정 사용 용량이 계정 수준 제한에 도달하면 트리거됩니다.
  • DynamoDB 테이블 읽기/쓰기 사용 용량이 테이블 제한에 도달 – 테이블의 쓰기 또는 읽기가 일정 기간 동안 테이블에 대한 ProvisionedWriteCapacityUnits 또는 ProvisionedReadCapacityUnits 제한에 도달할 때 트리거됩니다.
  • DynamoDB 테이블 사용 용량이 AutoScaling Max 파라미터 제한에 도달 – 테이블 사용 용량이 일정 기간 동안 AutoScaling Max 파라미터 한도에 도달할 때 트리거됩니다.
  • DynamoDB 읽기/쓰기 사용량이 예상보다 낮음 – ProvisionedWriteCapacityUnits 또는 ProvisionedReadCapacityUnits의 값이 일정 기간 동안 사용되는 값과 다를 때 트리거됩니다.

DevOps Guru for Serverless 시작하기
시작하려면 DevOps Guru 콘솔로 이동하여 Lambda 기반 애플리케이션, 기타 지원되는 리소스 또는 전체 계정에 대한 서비스를 활성화합니다.

DevOps Guru 구성

이 데모에서는 프로비저닝된 동시성이 1인 새 Lambda 함수를 생성합니다. AWS 콘솔에서 또는 프로그래밍 방식으로 이를 수행할 수 있습니다. 생성한 후에는 함수 개요 페이지에서 프로비저닝된 동시성이 1로 설정되어 있는지 확인할 수 있습니다.

Lambda 프로비저닝된 동시성 구성

Lambda 함수에 매분 함수를 트리거하는 CloudWatch 이벤트를 추가합니다. AWS 콘솔에서 또는 프로그래밍 방식으로 이를 수행할 수 있습니다. 이 자습서를 따라 수행하는 방법을 배울 수 있습니다. 이 프로세스를 5번 더 반복합니다. 이제 이 함수는 서로 다른 이벤트에서 매분마다 6번 트리거됩니다.

사전 예방적 인사이트를 트리거하려면 이 Lambda 함수를 동시에 6번 호출해야 합니다. 이를 위해서는 각 호출의 지속 시간이 충분히 길어야 합니다. 이 데모에서는 함수를 30초 동안 sleep 상태로 설정할 수 있습니다.

'use strict';

exports.handler = async (event) => {
  
    console.log('Sleep for 30 seconds')
    새 약속을 기다립니다(r => setTimeout(r, 30000));
    console.log('finish sleeping')

    return;
};

이 구성은 이 함수에 대해 위반된 사전 예방적 인사이트 Lambda 프로비저닝된 동시성 함수 제한을 트리거합니다. 문제가 시작된 후 3시간 이내에 콘솔에서 인사이트를 확인할 수 있습니다.

DevOps Guru 콘솔에서 인사이트를 확인하는 방법
몇 시간이 지나면 DevOps Guru 콘솔을 방문하여 프로비저닝된 동시성을 초과하여 사전 예방적 인사이트가 트리거되었는지 확인할 수 있습니다.

사전 예방적 인사이트 목록

자세한 내용을 보려면 진행 중인 인사이트를 선택합니다. 인사이트 페이지가 열리고 이 문제에 대한 인사이트, 지표, 이벤트 및 권장 조치와 관련된 정보가 표시됩니다.

이 페이지를 좀 더 자세히 살펴보겠습니다. 페이지 상단에는 인사이트의 내용과 문제의 심각도에 대한 설명과 함께 인사이트 개요가 있습니다. 이는 사전 예방적 인사이트이므로 이 문제로 인해 사용자 경험이 손상되지 않습니다. 또한 문제가 진행 중인지, 언제 시작되었는지도 알 수 있습니다. 문제가 더 이상 발생하지 않는 경우 해당 인사이트의 종료 날짜를 확인할 수 있습니다. 영향을 받는 애플리케이션에 대한 링크를 선택하면 이 인사이트의 영향을 받는 모든 Lambda 함수를 확인할 수 있습니다.

인사이트 설명 정보 상자

다음 정보 상자에는 사전 예방적 인사이트와 관련된 CloudWatch 지표에 대한 정보가 포함되어 있습니다. 이 그래프는 프로비저닝된 동시성이 누출된 최근 몇 시간 동안의 모든 호출에 대한 요약과 함께 ProvisionedConcurrecySpilloverInvocations 지표를 보여줍니다.

지표에 대한 정보

관련 이벤트는 페이지에서 사용할 수 있는 다음 정보 상자입니다. 이러한 이벤트는 DevOps Guru가 CloudWatch 지표 및 운영 데이터와 결합하여 인사이트를 생성한 비정상적인 동작을 식별하는 데 사용하는 AWS CloudTrail 이벤트입니다.

인사이트에 대한 관련 정보

마지막으로 이 페이지에는 권장 사항 정보 상자가 있습니다. 여기서 DevOps Guru는 문제를 해결하는 데 도움이 되도록 생성된 모든 권장 사항을 출력합니다. 권장 사항을 사용하여 문제를 해결하기 위해 취할 수 있는 즉각적인 단계를 알 수 있습니다.

인사이트에 대한 권장 사항

이 사전 예방적 인사이트에서 DevOps Guru는 Lambda 함수의 프로비저닝 동시성을 조정할 것을 권장합니다. 함수의 과거 사용률을 기준으로 설정할 값을 알려줍니다. DevOps Guru가 이러한 인사이트를 권장하는 이유에 대한 이유도 확인할 수 있습니다.

요금 및 가용성
DevOps Guru for Serverless는 DevOps Guru가 사용 가능한 모든 AWS 리전, 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), EU(프랑크푸르트), EU(아일랜드) 및 EU(스톡홀름)에서 사용할 수 있습니다.

DevOps Guru for Serverless에 대한 비용은 요금 페이지를 참고하세요.

DevOps Guru for Serverless에 대해 자세히 알아보고 5월 10일 실습 워크숍에 등록하여 이 새로운 출시에 대해 자세히 알아보세요.

Marcia