Amazon Web Services 한국 블로그

Amazon CloudWatch Application Signals, AWS Lambda 기반 서버리스 앱 성능 추적 기능 출시

2023년 11월, Amazon CloudWatch Application Signals를 발표했습니다. 이 솔루션은 Amazon EKS, Amazon ECSAmazon EC2에 호스팅되는 애플리케이션에 대한 분산 시스템의 성능 모니터링과 관련된 복잡성을 해결하기 위해 AWS의 기본 제공 애플리케이션 성능 모니터링(APM) 솔루션입니다. Application Signals는 지표, 추적, 로그 전반에서 텔레메트리의 상관 관계를 자동으로 분석하여 문제 해결 속도를 높이고 애플리케이션 중단을 줄입니다. Application Signals에서는 애플리케이션 컨텍스트에서 성능을 분석할 수 있는 통합 환경을 제공함으로써 가장 중요한 비즈니스 기능을 지원하는 애플리케이션에 초점을 맞춰 생산성을 향상시킵니다.

오늘 우리는 Application Signals for AWS Lambda 가용성에 대한 소식을 발표했습니다. 이를 통해 Lambda 함수에 대한 애플리케이션 상태를 평가하는 데 필요한 수동 설정의 복잡성과 성능 문제를 해소할 수 있습니다. CloudWatch Application Signals for Lambda를 사용하면 이제 애플리케이션 골든 지표(수신 및 발신 요청 볼륨, 지연 시간, 장애 및 오류)를 수집할 수 있습니다.

AWS Lambda는 기본 인프라의 복잡성을 추상화하여 서버 상태를 모니터링하지 않고도 애플리케이션 구축에 집중할 수 있도록 합니다. 따라서 애플리케이션을 최고 성능 및 가용성으로 운영하는 데 필요한 애플리케이션의 성능 및 상태 모니터링에 집중할 수 있습니다. 이를 위해서는 중요한 비즈니스 운영 및 애플리케이션 프로그래밍 인터페이스(API)에 대한 트랜잭션 볼륨, 지연 시간 급증, 가용성 저하, 오류 등의 성능 인사이트에 대해 심층적으로 파악해야 합니다.

이전에는 이상 현상의 근본 원인을 파악하기 위해 여러 도구에서 분리된 로그, 지표 및 추적을 상관시키는 데 상당한 시간을 소비해야 했으며, 이로 인해 평균 복구 시간(MTTR) 및 운영 비용이 증가했습니다. 또한 오픈 소스(OSS) 라이브러리를 사용하여 사용자 지정 코드 또는 수동 계측을 통해 자체 APM 솔루션을 구축하는 작업은 시간이 많이 걸리고 복잡하며 운영 비용이 많이 들고 종종 대량의 Lambda 함수를 관리할 때 콜드 스타트 시간이 길어지고 배포 문제가 발생하기도 했습니다. 이제 애플리케이션 개발자가 직접 계측하거나 코드를 변경하지 않고도 Application Signals를 사용하여 서버리스 애플리케이션의 상태 및 성능 문제를 원활하게 모니터링하고 해결할 수 있습니다.

작동 방식
Application Signals의 사전 구축 및 표준화된 대시보드를 사용하면 중요한 비즈니스 운영 및 API에 대한 성능 지표를 자세히 분석하여 단 몇 번의 클릭만으로 성능 이상의 근본 원인을 식별할 수 있습니다. 이를 통해 함수와 해당 종속 항목 간 상호 작용을 보여주는 애플리케이션 토폴로지를 시각화할 수 있습니다. 또한 애플리케이션에서 서비스 수준 목표(SLO)를 정의하여 비즈니스에 가장 중요한 특정 작업을 모니터링할 수 있습니다. SLO의 예로 웹 페이지를 28일 롤링 간격 중 99.9%의 시간인 2,000밀리초 이내에 렌더링해야 한다는 목표를 설정할 수 있습니다.

Application Signals는 향상된 AWS Distro for OpenTelemetry(ADOT) 라이브러리를 사용하여 Lambda 함수를 자동으로 계측합니다. 이때 콜드 스타트 지연 시간 단축,
메모리 사용량 감소 및 함수 간접 호출 감소와 같은 더 나은 성능도 지원하므로 애플리케이션을 빠르게 모니터링할 수 있습니다.

기존 Lambda 함수 appsignals1이 있는데 이 애플리케이션에서 다양한 텔레메트리를 수집하도록 Application Signals를 구성하겠습니다.

함수의 구성 탭에서 모니터링 및 운영 도구를 선택하여 Application SignalsLambda 서비스 추적을 모두 활성화합니다.

이 Lambda 함수가 리소스로 연결myAppSignalsApp 애플리케이션이 있습니다. 그리고 가장 중요한 특정 작업을 모니터링하기 위해 애플리케이션의 SLO를 정의했습니다. 이 경우 애플리케이션을 연속 1일 간격으로 10밀리초 99.9% 이내에 실행한다는 목표를 정의했습니다.

Application Signals에서 함수를 간접 호출한 후 함수를 검색하는 데 5~10분이 걸릴 수 있습니다. 따라서 서비스를 보려면 먼저 서비스 페이지를 새로 고쳐야 합니다.

이제 서비스 페이지에서 Application Signals가 검색한 모든 Lambda 함수의 목록을 볼 수 있습니다. 생성되는 모든 텔레메트리는 여기에 표시됩니다.

그런 다음, 서비스 맵에서 전체 애플리케이션 토폴로지를 시각화하고 새로 수집한 요청 볼륨, 지연 시간, 장애 및 오류의 지표를 사용하여 서비스의 개별 운영 및 종속 항목 전반에서 이상을 빠르게 찾아낼 수 있습니다. 문제 해결을 위해 애플리케이션 지표 그래프에서 특정 시점을 클릭하여 해당 지표와 관련된 추적 및 로그를 검색하고 최종 사용자에게 영향을 미치는 문제가 개별 태스크 또는 배포로 분리되었는지 신속하게 파악할 수 있습니다.

현재 이용 가능
Amazon CloudWatch Application Signals는 정식 출시되었으며, Lambda 및 Application Signals를 사용할 수 있는 모든 AWS 리전에서 오늘부터 사용할 수 있습니다. 오늘부터 Python 및 Node.js 관리형 런타임을 사용하는 Lambda 함수에서 Application Signals를 사용할 수 있습니다. 가까운 시일 내에 다른 Lambda 런타임에 대한 지원도 계속 추가할 예정입니다.

자세히 알아보려면 AWS Lambda 개발자 안내서Application Signals 개발자 안내서를 참조하세요. 질문은 Amazon CloudWatch에 대한 AWS re:Post에 제출하거나 일반적인 AWS Support 문의를 통해 제출할 수 있습니다.

Veliswa.