Amazon Web Services 한국 블로그

새로운 기능 – Amazon CloudWatch 기반 실제 사용자 모니터링

2009년에 저는 Amazon EC2의 새로운 기능인 Elastic Load Balancing, Auto Scaling, Amazon CloudWatch라는 제목의 블로그 게시물을 작성했습니다. 이 게시물에서는 Amazon CloudWatch가 확장성과 가용성이 뛰어난 애플리케이션을 구축하는 데 어떤 도움을 주는지 설명했으며, 배포 및 유지 관리 없이 지표에 대한 비용 효율적인 실시간 가시성을 제공한다는 점에 주목했습니다. 출시 이후 동일한 목표를 염두에 두고 CloudWatch에 많은 새로운 기능을 추가했습니다. 예를 들어, 작년에 CloudWatch Synthetics를 사용하여 사이트, API 엔드포인트, 웹 워크플로 및 기타 항목을 모니터링하는 방법을 보여드렸습니다.

실제 사용자 모니터링(RUM)
그 다음으로 큰 과제(오늘 여러분에게 발표하려는 핵심)는 성능을 이해하고 사용자에게 최적의 환경을 제공하기 위해 웹 애플리케이션을 모니터링하는 것입니다. 브라우저 유형, 브라우저 구성, 사용자 위치, 연결성 등 관련된 변수의 수가 많기 때문에 지금까지 합성 테스트만 진행될 수 있습니다. 사용자에게 정말 중요한 것은 사용자가 받는 경험이며, 저희가 여러분을 도와 전달하려는 것도 바로 이것입니다!

Amazon CloudWatch RUM은 이러한 경험을 식별하고 이해하고 개선하는 데 도움이 되는 인사이트를 제공하는 지표를 수집하는 데 도움이 됩니다. 애플리케이션을 등록하고 각 페이지의 헤더에 JavaScript 코드 조각을 추가한 다음 배포하기만 하면 됩니다. 이 코드 조각은 사용자가 애플리케이션의 각 페이지를 단계별로 살펴볼 때 실행되며, 통합 및 분석을 위해 데이터를 RUM으로 전송합니다. 이 도구는 자체적으로 사용할 수 있으며, Amazon CloudWatch ServiceLensAWS X-Ray와 연결하여 사용할 수 있습니다.

CloudWatch RUM 작동 방식
시작하려면 CloudWatch 콘솔을 열고 RUM으로 이동합니다. 그런 다음 앱 모니터 추가(Add app monitor)를 클릭합니다.

모니터에 이름을 지정하고 애플리케이션을 호스팅하는 도메인을 지정합니다.

그런 다음 모니터링 및 수집할 이벤트를 선택하고 세션 비율을 지정합니다. 제 개인 블로그에 트래픽이 많지 않으므로 모든 세션을 수집하겠습니다. 또한 CloudWatch RUM에서 제공하는 30일보다 더 오래 데이터를 보관하기 위해 Amazon CloudWatch Logs에 데이터를 저장하도록 선택할 수도 있습니다.

마지막으로 새 Cognito 자격 증명 풀을 생성하고 태그를 추가하기로 했습니다. CloudWatch ServiceLens 및 X-Ray를 사용하려는 경우 활성 추적(Active tracing)을 확장하고 XRay를 활성화할 수 있습니다. 내 앱은 API 요청을 하지 않으므로 그렇게 하지 않겠습니다. 앱 모니터 추가(Add app monitor)를 클릭하여 완료합니다.

그러면 콘솔에서 애플리케이션의 <head> 요소에 삽입해야 하는 JavaScript 코드를 보여줍니다.

코드를 저장하고 완료(Done)를 클릭한 다음 내 애플리케이션(여기서는 소홀하게 방치되던 내 개인 블로그)을 편집하여 코드 조각을 추가합니다. 저는 Jekyll을 사용해 이 코드 조각을 내 블로그 템플릿에 추가했습니다.

그런 다음 트래픽이 도착할 때까지 기다립니다. RUM 콘솔로 돌아가면 모든 내 앱 모니터를 볼 수 있습니다. 자세히 알아보려면 MonitorMyBlog를 클릭합니다.

그런 다음 집계된 타이밍 데이터와 수집된 기타 정보를 탐색할 수 있습니다. 오늘 보여드린 범위보다 훨씬 더 많은 것이 있습니다. 그러니 자유롭게 직접 해보고 더 깊이 들어와 보세요. 각 탭에는 특정 페이지, 위치, 브라우저, 사용자 여정 등 관심 영역을 확대하는 데 도움이 되는 여러 필터와 옵션이 포함되어 있습니다.

성능(Performance) 탭에는 내 애플리케이션의 활력 징후(vital sign)와 추가 정보가 표시됩니다.

활력 징후는 세 가지 수준인 긍정적(Positive), 수용 가능(Tolerable) 및 실망(Frustrating))으로 구분됩니다.

위의 화면에는 나에게 새로운 지표인 최대 콘텐츠풀 페인트(largest contentful paint)가 포함되어 있습니다. Philip Walton은 “최대 콘텐츠풀 페인트(LCP)는 페이지의 기본 콘텐츠가 로드되었을 가능성이 있는 지점을 페이지 로드 타임라인에 표시하기 때문에 인식된 로드 속도를 측정하기 위한 중요한 사용자 중심 지표입니다.”라고 설명합니다.

페이지를 로드할 때 브라우저가 수행하는 단계에 소요되는 시간도 확인할 수 있습니다.

하루 중 시간대별로 평균 로드 시간을 확인할 수 있습니다.

또한 이 모든 정보를 페이지별로 볼 수 있습니다.

브라우저 및 디바이스(Browsers & Devices) 탭에는 흥미롭고 유용한 데이터가 많이 표시됩니다. 예를 들어 페이지별 옵션을 사용하여 블로그에 액세스하는 데 사용되는 브라우저에 대해 자세히 알아볼 수 있습니다.

또한 사용자가 어떤 여정(페이지 시퀀스)을 통해 내 블로그를 이동하는지 볼 수 있습니다. 이 정보를 바탕으로 한 페이지에서 다른 페이지로 사용자를 안내하는 작업을 더 잘 수행해야 할 것 같습니다.

앞서 언급했듯이 여기에는 흥미롭고 유용한 정보가 많이 있습니다. 직접 확인하시기 바랍니다.

정식 출시
CloudWatch RUM은 현재 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 유럽(아일랜드), 유럽(런던), 유럽(프랑크푸르트), 유럽(스톡홀름), 아시아 태평양(시드니), 아시아 태평양(도쿄) 및 아시아 태평양(싱가포르)의 10개 AWS 리전에서 사용할 수 있습니다. 수집된 10만 개의 이벤트마다 1 USD를 지불합니다.

Jeff