NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
15 min readSep 23, 2020

--

안녕하세요, 네이버 클라우드 플랫폼입니다.

​오늘은 APM Data를 관리하는 데 도움이 되는 “Pinpoint Cloud”“Real User Analytics”를 다뤄보려고 합니다!

[네이버 클라우드 플랫폼의 9가지 Management 상품]

[네이버 클라우드 플랫폼의 7가지 Analytics Services]

시작하기에 앞서, 현재 Management 상품을 10개월간 사용할 수 있는 크레딧을 제공하고 있으니 아래 링크를 참고해주세요!

[프로모션] Management 상품 9종을 10개월간 무료로 사용해보세요! (💰최대 100만 원 혜택)

애플리케이션 성능을 알려주는 APM Data

APM(Application Performance Monitoring) Data는 웹 서비스를 구성하는 각 애플리케이션의 성능에 대한 데이터입니다. 최근의 웹 서비스들은 수많은 애플리케이션들로 구성되어 있으며 애플리케이션 간에는 수많은 트랜잭션이 발생합니다. APM은 이 트랜잭션들의 사용 시간을 분석하여 웹 서비스의 응답시간에 영향을 미치는 요소가 무엇인지, 병목 지점은 어디인지를 쉽게 찾을 수 있는 데이터를 제공합니다.

과거의 시스템은 대부분 2개 또는 3개 계층의 간단한 모놀리식 아키텍처로 구성되었습니다. 하지만 시간이 흐를수록 아키텍처의 복잡도가 커지고, 현대에는 N 개 계층의 서비스를 결합한 마이크로 서비스 아키텍처가 증가하고 있습니다.

이처럼 N 계층의 마이크로 서비스 아키텍처는 구성이 매우 복잡하여 문제가 어디서 발생했고 원인은 무엇인지 추적하는 것 또한 어려워졌습니다. 이럴 때 APM 을 통해 전체적인 시스템 구성을 파악하면 어떤 서비스에서 문제가 발생했는지, 이 문제로 영향을 받는 서비스는 어떤 것들이 있는지를 한눈에 알 수 있습니다.​

네이버 클라우드 플랫폼은 분산 시스템의 성능 추적을 위한 “Pinpoint Cloud”와 웹 서비스를 사용하는 사용자들의 체감 성능을 측정할 수 있는 “Real User Analytics” 서비스를 제공합니다.

1. Pinpoint Cloud

분산 시스템의 성능 추적

1–1. Pinpoint Cloud의 특징

Pinpoint는 네이버가 2012년에 개발을 시작하여 2015년에 출시한 오픈소스 APM입니다. 네이버는 Pinpoint를 통해 다양한 네이버 서비스를 모니터링하고 있습니다. 현재 네이버 내부에서만 50,000대 이상의 Agent를 설치하여 사용하고 있으며, 전 세계적으로도 큰 사랑을 받고 있습니다.

Pinpoint는 다음과 같은 주요 특징을 가지고 있습니다.

1. 분산 시스템의 구성 시각화

N-Tier 아키텍처를 구성하고 있는 모든 구성요소들의 Topology와 구성 요소 간의 트랜잭션 정보를 웹 페이지에서 바로 확인할 수 있습니다. 이를 통해 전체 아키텍처와 구성 요소 간의 개별 Request 흐름을 손쉽게 파악할 수 있습니다.

2. 성능 저하 요소 및 문제 원인 추적

Pinpoint는 구성 요소 간 모든 트랜잭션에 대한 코드 레벨의 가시성을 제공합니다. 이를 통해 병목 및 장애 지점을 빠르게 파악하고 애플리케이션의 다양한 오류 및 예외 정보를 확인할 수 있습니다.

네이버 클라우드 플랫폼은 사용자가 Pinpoint를 더욱 쉽게 이용할 수 있도록 여러 가지 옵션을 제공하고 있습니다.

오픈소스로 제공되는 Pinpoint를 이용하려면 기본적으로 서버를 직접 구성하고 운영해야 합니다. 하지만 네이버 클라우드 플랫폼은 설치형 이미지를 제공하고 있기 때문에 더욱 쉬운 사용이 가능합니다. 또한 2020년 7월에는 SaaS 서비스인 Pinpoint Cloud를 출시했습니다. Pinpoint Cloud를 이용하면 별도의 설치와 운영이 필요 없습니다. 모니터링 대상 서버에 Agent만 설치하면 쉽고 빠르게 Pinpoint를 사용할 수 있습니다.

1–2. Pinpoint Cloud의 기능

Pinpoint Cloud의 주요 기능은 다음과 같습니다.

1. 간편한 사용과 설치

앞서 말씀드린 바와 같이 Pinpoint Cloud는 복잡한 환경 구성 과정이 필요 없습니다. 네이버 클라우드 플랫폼의 웹 콘솔을 통해 Repository를 생성하는 것만으로 Pinpoint 사용을 위한 준비가 완료됩니다. 이후 모니터링 대상 서버에 Agent를 설치하면 Pinpoint를 즉시 사용하실 수 있습니다.

Pinpoint Cloud는 Bytecode instrumentation 기법을 통해 사용자의 코드 수정 없이 Agent 설치만으로 성능 정보를 수집할 수 있습니다. 자세한 설정 방법은 네이버 클라우드 플랫폼의 Pinpoint Cloud 사용자 가이드를 참고해 주세요.

2. Server Map & 실시간 활성 Thread Chart

Pinpoint Cloud는 복잡한 분산 시스템의 Topology를 자동으로 식별하고, 각 노드 간의 트랜잭션을 한눈에 볼 수 있는 Server Map을 제공합니다.

Server Map을 통해 서비스를 구성하고 있는 각 노드 간의 트랜잭션 수를 바로 확인할 수 있습니다. 또한 노드를 선택하면 선택한 노드의 트랜잭션 성공/실패 수 및 응답시간 분포를 Scatter Chart로 한눈에 확인할 수 있습니다. 이를 통해 응답시간이 비정상적으로 긴 트랜잭션을 식별하고, 상세 분석을 위한 Call Stack 화면으로 이동할 수 있습니다.

뿐만 아니라 선택한 노드 내부의 활성 Thread 수를 실시간으로 모니터링할 수 있는 Chart를 함께 제공합니다.

3. Call Stack

Call Stack 화면에서는 트랜잭션에 대한 코드 수준의 가시성을 제공하며, 이를 통해 문제의 발생 지점 및 병목 구간을 쉽게 파악할 수 있습니다.

Call Stack 화면에서 트랜잭션을 선택하면 해당 트랜잭션을 수행하며 실행된 메소드 및 메소드의 응답시간을 상세하게 확인할 수 있습니다. 또한 애플리케이션의 다양한 오류 및 예외 정보를 빠르게 확인하여 문제의 원인을 쉽게 추적할 수 있습니다.

4. Application Inspector

Application inspector 메뉴를 통해 Agent를 통해 집계된 Metric Data(stat : cpu, memory, tps, datasource connection count)를 확인할 수 있습니다. 이를 통해 애플리케이션의 CPU 사용량, 메모리 사용량과 같은 시스템 점유율이나, TPS와 같은 애플리케이션의 성능 지표를 바로 확인할 수 있습니다.

5. Alarm

Pinpoint Cloud는 실시간 모니터링을 위한 지표별 임계치를 설정하고, 이를 초과할 경우 SMS/Email로 통지받을 수 있는 Alarm 기능을 제공합니다. 현재 Pinpoint Cloud에서 알람을 설정할 수 있는 지표는 다음과 같습니다.

SLOW COUNT

외부에서 Application을 호출한 요청 중에 외부 서버로 응답을 늦게 준 요청의 개수가 임계치를 초과한 경우 알람이 전송된다.

SLOW RATE

외부에서 Application을 호출한 요청 중에 외부 서버로 응답을 늦게 준 요청의 비율(%)이 임계치를 초과한 경우 알람이 전송된다.

ERROR COUNT

외부에서 Application을 호출한 요청 중에 에러가 발생한 요청의 개수가 임계치를 초과한 경우 알람이 전송된다.

ERROR RATE

외부에서 Application을 호출한 요청 중에 에러가 발생한 요청의 비율(%)이 임계치를 초과한 경우 알람이 전송된다.

TOTAL COUNT

외부에서 Application을 호출한 요청 개수가 임계치를 초과한 경우 알람이 전송된다.

SLOW COUNT TO CALLEE

Application 내에서 외부 서버를 호출한 요청 중 slow 호출의 개수가 임계치를 초과한 경우 알람이 전송된다. 메모 항목에 외부 서버의 도메인이나 주소(ip, port)를 입력 필요 (ex. naver.com, 127.0.0.1:8080)

SLOW RATE TO CALLEE

Application 내에서 외부 서버를 호출한 요청 중 slow 호출의 비율(%)이 임계치를 초과한 경우 알람이 전송된다. 메모 항목에 외부 서버의 도메인이나 주소(ip, port)를 입력 필요 (ex. naver.com, 127.0.0.1:8080)

ERROR COUNT TO CALLEE

Application 내에서 외부 서버를 호출한 요청 중 error 가 발생한 호출의 개수가 임계치를 초과한 경우 알람이 전송된다. 메모 항목에 외부 서버의 도메인이나 주소(ip, port)를 입력 필요 (ex. naver.com, 127.0.0.1:8080)

ERROR RATE TO CALLEE

Application 내에서 외부 서버를 호출한 요청 중 error 가 발생한 호출의 비율이 임계치를 초과한 경우 알람이 전송된다. 메모 항목에 외부 서버의 도메인이나 주소(ip, port)를 입력 필요 (ex. naver.com, 127.0.0.1:8080)

TOTAL COUNT TO CALLEE

Application 내에서 외부 서버를 호출한 요청의 개수가 임계치를 초과한 경우 알람이 전송된다. 메모 항목에 외부 서버의 도메인이나 주소(ip, port)를 입력 필요 (ex. naver.com, 127.0.0.1:8080)

HEAP USAGE RATE

heap의 사용률이 임계치를 초과한 경우 알람이 전송된다.

JVM CPU USAGE RATE

Application의 CPU 사용률이 임계치를 초과한 경우 알람이 전송된다.

SYSTEM CPU USAGE RATE

서버의 CPU 사용률이 임계치를 초과한 경우 알람이 전송된다.

DATASOURCE CONNECTION USAGE RATE

Application의 DataSource 내의 Connection 사용률이 임계치를 초과한 경우 알람이 전송된다.

DEADLOCK OCCURRENCE

Application에서 데드락 상태가 탐지되면 알람이 전송된다.

FILE DESCRIPTOR COUNT

열려있는 File Descriptor 개수가 임계치를 초과한 경우 알람이 전송된다.

2. Real User Analytics

사용자의 체감 성능 측정

2–1. Real User Analytics의 특징

Real User Analytics는 웹 사이트에 접속하는 사용자의 체감 성능 정보를 수집하여 특정 국가, OS, 브라우저 별 속도 및 Page View Count를 분석해 주는 서비스입니다. 이를 통해 응답 속도에 영향을 주는 병목 현상이 발생하는 구간을 쉽게 확인할 수 있습니다. 이는 웹 사이트의 성능을 향상시키고자 할 때 좋은 참고 자료가 됩니다.

1. 실시간 성능 데이터 수집

실제 사용자로부터 실시간으로 수집되는 데이터를 모니터링하면 웹 사이트에서 일어나는 다양한 이슈에 효과적으로 대응할 수 있습니다. 예를 들어, 사용자 접속이 많은 시간대에 페이지 로드 시간이 느려지는지 실시간으로 분석하거나 특정 기간의 과거 데이터를 검색하여 조회할 수 있습니다.

2. 간편한 모니터링 관리

모니터링하고자 하는 웹 사이트 소스에 Real User Analytics에서 제공하는 스크립트를 배포하고 웹 기반의 콘솔에서 해당 웹 사이트 도메인을 등록하면 즉각적으로 성능 데이터를 수집할 수 있습니다. 또한 여러 개의 웹 사이트를 하나의 프로젝트로 묶어서 관리할 수 있어 프로젝트별로 성능을 비교할 수 있습니다.

3. 직관적인 대시보드 제공

국가, OS, 브라우저, 페이지별 속도 정보를 대시보드 내 그래프를 통해 한눈에 확인할 수 있습니다. 특히 특정 구간에서 일어나는 병목 현상을 확인할 수 있어서 웹사이트의 성능이 떨어지는 원인을 손쉽게 파악하고 보다 빠르게 문제를 해결할 수 있습니다.

2–2. Real User Analytics의 기능

Real User Analytics 가 제공하는 주요 기능은 아래와 같습니다.

1. 속도 지표 제공

Real User Analytics는 W3C Timing API를 기준으로 크게 구간에 대한 (1) 누적 지표와 각 구간별 (2) 점유 지표를 제공합니다(W3C에서 제정한 Navigation Timing API 속성값 기준으로 구간 정의). Real User Analytics를 통해 페이지별 속도로 가장 많이 사용하는 지표는 Navigation Timing API 누적 지표의 Browser Load Time입니다. 이는 사용자가 페이지를 요청한 후 HTML 페이지가 화면에 로딩이 완료되기까지의 시간을 의미합니다.

Real User Analytics가 제공하는 주요 속도 지표에 대한 설명은 아래 사진과 표를 참고해 주세요.

2. 지원 환경

Real User Analytics는 아래의 브라우저를 대상으로 데이터 수집을 지원합니다.

3. 프로젝트 및 웹 사이트 등록

프로젝트 내에 여러 개의 웹 사이트를 등록하여 관리할 수 있습니다. 웹 사이트 등록 후 시스템에서 제공하는 스크립트를 모니터링하고자 하는 웹 사이트 소스에 배포하면 사용자가 웹 사이트에 접속할 때 생성되는 성능 정보가 RUA 시스템으로 수집됩니다.

Real User Analytics의 웹 콘솔을 통해 프로젝트 생성 시 함께 생성된 수집 코드를 속도를 측정할 모든 웹페이지의 <head> 안에 추가하고, 수집 코드가 삽입된 웹 페이지를 배포하면 해당 사이트를 방문한 사용자들의 응답 속도를 측정할 수 있습니다.

4. Real Time 대시보드

Real Time 대시보드는 최근 30분 이내에 수집된 데이터에 대해서 실시간으로 주요 지표들에 대한 값을 보여주는 대시보드입니다. Real User Analytics에 등록된 웹 사이트를 선택하여 해당 웹 사이트에 대한 분석 지표를 실시간으로 확인할 수 있습니다.

확인이 가능한 지표들은 아래와 같습니다.

① 최근 30분 이내에 수집된 데이터들의 Browser Load Time 평균값입니다.

② 최근 30분 이내에 수집된 데이터들의 Page view 합계입니다.

③ 최근 30분 동안의 Browser Load Time 추이를, 조회 조건으로 선택된 웹사이트 하위 페이지별로 보여줍니다.

④ 최근 30분 동안의 Page View 추이를, 조회 조건으로 선택된 웹사이트에 해당되는 것만 보여줍니다.

⑤ 최근 30분 동안에 PV순 또는 Browser Load Time 순으로 Top5에 랭킹되는 페이지를 보여줍니다.

표 안에 PV 또는 Browser Load Time를 클릭하면 해당 기준으로 다시 정렬됩니다.

⑥ 최근 30분 동안에 PV순 또는 Browser Load Time 순으로 Top5에 랭킹 되는 국가를 보여줍니다.

⑦ 최근 30분 동안에 PV순 또는 Browser Load Time 순으로 Top5에 랭킹 되는 Browser를 보여줍니다.

⑧ 최근 30분 동안에 PV순 또는 Browser Load Time 순으로 Top5에 랭킹 되는 OS를 보여줍니다.

5. Page Load Speed 대시보드

Page Load Speed 대시보드는 과거 특정 기간 동안의 특정 웹사이트 속도를 국가 / 브라우저 / OS별 / 페이지 별로 조회할 수 있는 대시보드입니다. Real User Analytics에 등록된 웹 사이트를 선택하여 페이지 로드 속도에 대한 다양한 지표들을 확인할 수 있습니다.

지금까지 APM Data 관리를 위한 “Pinpoint Cloud”와 “Real User Analytics” 서비스를 소개해 드렸습니다.

​서비스 이용에 관심이 있으시다면, 마침 (….!!) 네이버 클라우드 플랫폼의 Monitoring/Management 상품을 마음껏 사용하실 수 있는 프로모션을 진행하고 있으니 아래 블로그 링크를 통해 상세 내용을 확인해 주세요 !

[프로모션] Management 상품 9종을 10개월간 무료로 사용해보세요! (💰최대 100만 원 혜택)

다음 포스팅에서는 Uptime Data를 모니터링하는데 사용되는 Web Service Monitoring System과 Network Traffic Monitoring 서비스를 소개해드릴 예정입니다.​

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.