Cloud Web Service Monitoring System(WMS) v2.0 A to Z

Chang Hwan Jang
NAVER Cloud
Published in
20 min readMay 31, 2021

더욱 강력해진 웹 서비스 모니터링 기술의 이해

<그림 1> WMS 2.0 Renewal Update

Synthetic Monitoring vs Real User Monitoring

웹 서비스의 모니터링 분야는 Synthetic Monitoring(가상 모니터링)Real User Monitoring(실제 사용자 모니터링)으로 나누어 분류할 수 있습니다.

Synthetic Monitoring

Synthetic Monitoring 은 일관된 환경에서 Automation Tooling을 사용하여, 가능한 “Laboratory(실험실)” 환경에서 페이지의 성능을 모니터링하는 방법입니다. 최종 사용자가 웹 애플리케이션을 통해 실행 가능한 시나리오와 시뮬레이터를 통해 웹 서비스의 각 컴포넌트 별 성능을 수집하고, 분석할 수
있습니다.

위치, 네트워크, 디바이스, 브라우저 및 캐시 정보를 미리 변수로 설정하여 동일한 환경에서 웹 서비스를 테스트 후 결과값을 저장하고 분석할 수 있습니다. 그리고 Continuous Integration(지속적 통합)의 일부 컴포넌트 데이터를 지속 활용하여 사용자가 오류를 경험하기 전 미니 감지하여 선제 대응이
가능합니다.

네이버 클라우드 플랫폼의 Web service Monitoring System(이하 WMS) 상품Synthetic Monitoring 방법으로 주기적인 시나리오 실행과 데이터
수집 및 분석 기능을 제공하고, 이슈 발생 시 알람 메시지를 전송하여 빠른
대응 방법을 제공하고 있습니다.

Real User Monitoring

Real User Monitoring(이하 RUM) 은 Web Service 코드에 주입된 스크립트를 통해 실제 사용자가 요청하는 모든 데이터를 측정하고, 분석하는 모니터링 방법입니다. 실 사용자의 요청 데이터를 모두 측정한다는 점에서, 실험실 환경에서 페이지 성능을 모니터링하는 Synthetic Monitoring와 차이가
있습니다.

웹 애플리케이션은 실제 사용자 상호 작용을 모니터링하고, 사용자 브라우저에 진행되는 의미 있는 데이터 및 메트릭 정보를 수집할 수 있습니다. 해당 웹 서비스를 사용하는 모든 사용자의 위치정보, 디바이스, 브라우저 등 실행되는 모든 성능 정보를 캡처하고, Performance Timing API를 통해 사용자의 실시간 경험에 대한 타이밍 정보를 분석할 수 있습니다.

<표1> W3C Navigation Timing Properties

RUM 모니터링을 통해 해당 서비스의 사용자 경험과 사용자의 지리적 분포, 채널 분포 추세를 이해하고, 비즈니스 계획을 보다 효율적으로 수립할 수 있습니다. 또한, 서비스 관점의 최적화를 이루고 성능 향상이 필요한 주요
영역을 파악할 수 있습니다.

아래와 같이 네이버 클라우드 플랫폼 상품 중 Real User Analytics(RUA) 상품에서 Real User Monitoring 방법이 적용된 실시간 사용자 지표 분석 정보를
제공하고 있습니다.​

<그림2> 네이버 클라우드 플랫폼 Real User Analytics(RUA) 상품

Synthetic MonitoringReal User Monitoring 중 하나의 모니터링 방법을 반드시 선택하여 적용해야 하는 것은 아닙니다. 웹 서비스의 주요 사용자 지표에 따른 목표 설정에 따라 병행하거나 공존할 수 있는 모니터링 방법이라고 볼 수 있습니다.​

Web service Monitoring System 빠르게 알아보기

Web service Monitoring System(이하 WMS)은 운영 중인 웹 서비스의 정상 동작 여부를 모니터링하고, 글로벌 환경에서의 가용성 및 응답 속도를 측정할 수 있는 서비스입니다.

WMS 시스템을 통해 별도의 설치 과정 없이 URL을 입력하는 것만으로
웹 서비스 모니터링을 시작할 수 있으며, 사용자의 주요 이용 패턴을
시나리오로 등록하여 이용 패턴의 정상 작동 여부, 응답 시간을 모니터링
할 수 있습니다.

웹 서비스 URL을 입력하여 실시간으로 테스트를 진행할 수 있고, 스케줄을
등록하여 반복적인 모니터링을 할 수 있습니다. 모니터링 등록된
웹 서비스는 5분 주기로 모니터링이 가능하며, Javascript, image, CSS
웹 페이지 내의 콘텐츠를 확인하고 Load Time을 기록해 성능상의 문제를
분석합니다.

수집된 모니터링 결과는 URL 별로 상세 페이지를 통해 확인할 수 있으며,
시간대별 모니터링 결과, 성능 추이, 이벤트 발생 당시의 화면, 감지 로그 등의 상세한 정보를 제공받을 수 있습니다. 또한 경보 설정을 통해 모니터링
등록된 URL에서 오류가 감지되면 SMS나 Email을 통해 알람 메시지를 수신할 수 있습니다.

<그림3> WMS 2.0 Analytics Dashboard
<그림4> WMS 2.0 Service Dashboard

Web service Monitoring System 왜 필요한가요?

웹 서비스의 사용자 경험을 극대화하기 위해서는 반드시 24/7 장애 및
이슈 없이 사용자가 웹 서비스를 이용할 수 있어야 합니다.

우리는 대부분 웹 사이트의 사용자 경험에 대해 판단할 때 ‘깔끔한 경험 Flow, 정리된 콘텐츠, 이해하기 쉬운 서비스 이용 정책’ 등을 내세우고 있습니다.
하지만 무엇보다 중요한 것은 서비스가 24/7 이상 없이 작동하는 것입니다. 아무리 좋은 서비스를 제공한다고 하더라도 사용자가 원하는 시점에
정상적으로 작동하지 않는다면 사용자의 서비스에 대한 품질에 대한 인식이 저하될 수밖에 없기 때문입니다.

또한, 서비스 동작 유무와 품질에 대한 모니터링이 필요합니다. 하지만
서비스 개발/운영 인력이 이를 직접 24/7 모니터링 하기란 물리적으로
어렵기에 쉬지 않는 모니터링 시스템의 도움이 반드시 필요합니다.

​24/7 모니터링을 위한 도구 선정을 위한 필수 고려 요소는 아래와 같습니다.

(1) 비용이 저렴하고 탄력적인가?

서비스 모니터링에 서비스 개발 보다 많은 비용을 사용하긴 어렵습니다.
따라서 저렴한 비용으로 모니터링할 수 있고, 비용을 쉽게 컨트롤할 수 있는 도구가 필요합니다.

<표 2> WMS 사용 요금표

(2) 24/7 & Global 환경의 모니터링이 가능한가?

웹 서비스는 24시간 쉬지 않고 운영되기 때문에 모니터링 도구 또한 24/7
늘 깨어 있어야 합니다. 또한, 웹 서비스는 국경의 제한이 없기에 다양한
국가에서 내 서비스가 잘 작동 하는지 확인할 수 있어야 합니다.

<그림5> WMS Global 설정 및 모니터링 Dashboard

(3) 이슈 발생 시 빠르게 확인할 수 있는 기능을 제공하는가?

​운영 중인 서비스에 문제가 발생한 경우 이를 사용자보다 먼저 인지하고
해결해야 합니다. 그러기 위해서는 서비스에 문제가 발생한 경우 빠르게
담당자에게 해당 이슈를 전달할 수 있어야 합니다.

<그림6> WMS Alarm Settings

(4) 다양한 시나리오를 모니터링 할 수 있는가?

웹 서비스는 단순한 콘텐츠 뿐만 아니라 다양한 기능들을 제공하고 있습니다. 특히 결제, 회원가입 등의 기능이 잘 작동하지 않는다면 서비스 뿐만 아니라 비즈니스에도 큰 영향을 줄 수밖에 없습니다. 따라서 웹 서비스가 제공하는 기능들이 정상 작동 하는지 테스트 시나리오를 쉽게 구성할 수 있어야
합니다.​

<그림7> WMS Monitoring Step(Scenario)

참고할 만한 WMS 시스템의 Best Practice가 있나요?

네이버의 WMS 시스템이 가장 좋은 예시입니다. 네이버 포털 및 서비스에서 제공하는 수많은 웹 서비스의 Front-End 모니터링을 제공하여 안정적 서비스 제공에 일조하고 있습니다.

<그림8> NAVER Service Monitoring Dashboard

WMS 시스템은 네이버의 웹 서비스들의 안정적 운영 모니터링을 위해
내부에서 사용되고 있던 모니터링 도구로, 네이버 메인/검색/블로그/
스포츠/카페
등 수많은 서비스들이 24/7 항상 모니터링 되고 있습니다.​

<그림9> NAVER WMS 시스템을 통한 시나리오 모니터링 결과 조회

​네이버클라우드는 네이버의 웹 서비스 모니터링을 위한 도구인 WMS 시스템을 상품화하여 네이버 클라우드 플랫폼(ncloud.com)을 통해 제공하고
있으며, 국내외 많은 고객들이 WMS 시스템을 통해 자사의 웹 서비스를
모니터링하고 있습니다.

<그림10> NAVER WMS 시스템을 통한 시나리오 등록
<그림11> NAVER WMS 시스템을 통한 시나리오 모니터링 상세 결과

WMS 1.0 vs WMS 2.0 어떤 것이 업그레이드 되었나요?

Web service Monitoring System(WMS)은 2017년 출시 이후 꾸준한 기능
개선을 통해 고객들의 웹 서비스를 매의 눈으로 모니터링하고 있으며,
누적된 고객들의 목소리와 내부의 고민들을 통해 2021년 5월
Web service Monitoring System 2.0 을 출시했습니다.

WMS에서 제공하는 주요 기능은 아래와 같습니다.

(1) 최신 Headless Browser 탑재

WMS 시스템에는 최신의 Headless Browser가 탑재되어 있으며, 이를 통해
현존하는 대부분의 웹 사이트를 사용자가 직접 이용하는 것처럼 모니터링
할 수 있습니다.

Puppeteer 라이브러리는 Chrome 또는 Chromium의 렌더링 엔진을 사용하고 있으며, 최신 스펙의 HTML, CSS, JS 등 렌더링 엔진이 만들 수 있는 모든
화면을 만들어 낼 수 있고, ES6로 구현된 SPA(Single Page Application) UI도 렌더링 및 제어 가능합니다.

<그림12> Puppeteer Github (https://github.com/puppeteer/puppeteer)

아래의 그림에서 Puppeteer API의 계층 구조에 대해 간략하게 확인할 수
있습니다.

<그림13> Puppeteer Structure (https://pptr.dev/#?product=Puppeteer&show=api-overview)

​(2) 쉬운 모니터링 설정

복잡한 Agent 설치 과정이 없으며, 웹 서비스에 모니터링을 위한 코드를
입력할 필요도 없습니다. 개발자가 아니더라도 누구나 모니터링을 위한
설정을 완료할 수 있습니다.​

<그림14> WMS Step 작성을 통한 모니터링 설정

(3) 실시간/글로벌 모니터링​

최종 사용자보다 먼저 웹 서비스의 문제를 바로 인지하고 대응할 수 있는
다양한 기능을 제공하고 있습니다. 최대 1분 주기로 웹 서비스의 현재 상태
및 응답 시간을 지속적으로 모니터링할 수 있습니다. 또한 국내뿐만 아니라 홍콩, 독일, 일본 등 다양한 국가에서의 웹 서비스 응답 시간을 측정할 수 있어 각 국가의 고객이 웹 서비스를 이용하는데 불편함이 없는지 확인할 수
있습니다.

<그림15> Multi-Region 설정을 통한 Global 서비스 모니터링

(4) 시나리오 모니터링

웹 사이트를 이용하는 최종 사용자의 이용 패턴을 모니터링하며, 그 결과를 통해 사용자 경험을 향상시킬 수 있습니다. 로그인, 장바구니 담기 등
웹 서비스의 주요 기능을 시나리오로 구성하면 WMS 시스템을 통해 각
기능의 작동 여부 및 응답 속도를 지속적으로 추적할 수 있습니다.

<그림16> WMS Monitoring Step(Scenario)

​(5) 모니터링 대시보드

모니터링 대상으로 등록한 웹 서비스들의 상태를 한눈에 볼 수 있는 대시보드를 제공합니다. 대시보드를 통해 모든 웹 서비스들의 가용성 및 평균
응답 속도를 바로 확인할 수 있으며, 문제가 발생한 웹 서비스를 바로 확인할 수 있습니다.​

<그림17> WMS Multi-Service 모니터링 대시보드

(6) 알람 및 원인 추적

모니터링 중인 웹 서비스 별로 담당자를 지정하여 문제가 발생한 경우 SMS/Email/Webhook을 통해 발생한 문제를 신속히 통보할 수 있습니다.
알람 수신 후 문제 발생 지점, 문제가 발생한 당시의 웹 서비스 스크린샷 등을 확인하여 문제의 원인을 빠르게 추적하고 해결할 수 있습니다.​

<그림18> WMS 모니터링 알람 설정
<그림19> WMS WebHook 추가
<그림20> WMS Slack WebHook 예시

아래와 같이 모니터링 이벤트 발생 시 Slack 서비스를 통해 WMS에서 발생된 이벤트 정보를 수신할 수 있습니다.​

<그림21> WMS Slack 메시지 수신 예시
<그림22> 모니터링 스텝(시나리오)-URL 접속 설정

Request Options 설정 시 Headers와 Body 정보를 추가로 입력 및 수정할 수
있도록 개선되었습니다.​

<그림23> Request Options 설정

그리고 모니터링 스텝(시나리오) 작성 시 사용자 Custom JavaScript 입력이 가능하도록 기능이 추가되었습니다.

<그림24> User Custom JavaScript 설정

​아래와 같이 간략하게 사용자 정의 JavaScript 코드를 입력할 수 있습니다.​

<그림25> User Custom JavaScript 코드 예시
<그림26> User Custom JavaScript 실행 결과

​아래와 같이 모니터링 결과 대시보드 및 상세 결과 정보 UI가 개선
되었습니다. 해당 검색 기간의 서비스 가용성과 이력 차트, 실행 횟수 별 모니터링 결과를 대시보드에서 한 번에 확인할 수 있습니다.​

<그림27> 모니터링 결과 조회

모니터링 주기 별 실행된 결과를 클릭하면, 아래와 같이 스텝(시나리오) 별 정보를 조회할 수 있습니다.

<그림28> 모니터링 결과 상세 조회(1)
<그림29> 모니터링 결과 상세 조회(2)

아래와 같이 각 Object 별 상세 성능에 대해 Waterfall 차트로 확인할 수
있습니다.​

<그림30> Waterfall Chart 상세 보기

WMS 서비스 아키텍처가 알고 싶어요!

WMS 서비스를 지탱하는 아키텍처는 시스템 모니터링을 지원하는 서비스 및 솔루션의 구조와 비슷하지만, 네이버 클라우드 플랫폼만의 컴포넌트 구조를 특화하여 안정적인 웹 서비스 모니터링을 지원하도록 구성되었습니다.

<그림 31> WMS Service Architecture — Simple Version

(1) WMS Agent Layer

사용자가 모니터링을 위해 등록한 URL을 주기적으로 실행하고, 데이터를
수집하는 역할을 담당하고 있습니다. 해당 Agent Instance에서 Headless Browser Module을 실행하여 Web Service Object에 대한 정보를 수집합니다.

이렇게 수집된 데이터는 Data Uploader를 통해 WMS Collector로 전송됩니다.

(2) WMS Collector Layer

각 WMS Agent에 전송된 Object Data를 각 목적에 맞게 데이터를 분류하고,
분석을 진행 후 Data Storage로 저장합니다. 그리고 사용자의 설정에 의해
발생된 이벤트를 감지하고 알람 메지지를 전송하는 역할을 수행합니다.

(3) WMS Aggregator Layer

WMS Collector에 의해 저장된 Raw Data를 5분/30분/2시간/24시간
데이터로 Aggregation을 수행 후 Data Storage로 다시 저장합니다. Aggregation Data의 경우 실시간 분석의 목적보다는 분석하고자 하는
시간대 별 추세 및 추이를 분석하기 위한 데이터로 활용할 수 있습니다.

(4) WMS Data Storage Layer

WMS Collector와 Aggregator에서 전송된 데이터를 목적에 맞게 저장하고,
사용자 WMS 콘솔에서 설정한 각종 Configuration 및 Setting 정보를
저장합니다. Data Storage에 저장된 데이트를 사용자 콘솔에서 요청 시
제공하고, WMS Open API에서 요청되는 Request에 대한 Response Data를
제공합니다.

WMS Open API는 어떻게 활용할 수 있나요?

WMS Open API는 WMS 서비스를 사용하는 사용자를 위해 서비스
모니터링의 효율성을 제공하기 위해 필요한 데이터를 제공하고 있습니다.

아래와 같이 WMS 시스템에서 제공하는 Open API 목록과 상세 설명을
참고하시면, 네이버 클라우드 플랫폼의 WMS 콘솔 사용과 더불어 보다 빠르고 유연한 정보를 활용할 수 있습니다.

아래의 URL에서 전체 WMS Open API 정보를 확인하실 수 있습니다.

https://api.ncloud-docs.com/docs/management-wms

현재 제공하는 WMS Open API 중 주요 API를 간략하게 살펴보겠습니다.

전체 목록 조회

사용자가 WMS 시스템에 등록한 전체 URL과 Step(Scenario) 정보를
확인할 수 있습니다.

Request

<코드 1> WMS Open API : 전체 목록 조회 요청 예시

Response

<코드 2> WMS Open API : 전체 목록 조회 응답 예시​

Description

<표 2> WMS Open API : 전체 목록 조회 응답 설명

모니터링 결과 조회

사용자가 WMS 시스템에서 실행된 Step(Scenario) 모니터링 결과 정보를
확인할 수 있습니다.

Request

<코드 3> WMS Open API : 모니터링 결과 조회 요청 예시
<표 3> WMS Open API : 모니터링 결과 조회 Parameters & Variables

Response

<코드 4> WMS Open API : URL 모니터링 결과 조회 응답 예시

Description

<표 4> WMS Open API : 모니터링 결과 조회 응답 설명

모니터링 상세 결과 조회

사용자가 WMS 시스템에서 등록한 시나리오 모니터링 결과에 대한 상세
정보를 확인할 수 있습니다.

Request

<코드 5> WMS Open API : 모니터링 상세 결과 조회 요청 예시
<표 5> WMS Open API : 모니터링 상세 결과 조회 Parameters & Variables

Response

<코드 6> WMS Open API : 모니터링 상세 결과 조회 응답 예시

Description

<표 6> WMS Open API : 모니터링 상세 결과 조회 응답 설명

모니터링 시작/정지

사용자가 WMS 시스템에서 등록한 시나리오 모니터링 상태를 변경할 수
있습니다.

Request

<코드 7> WMS Open API : 모니터링 시작/정지 요청 예시
<표 7> WMS Open API : 모니터링 시작/정지 Parameters & Variables

Request Body

<코드 8> WMS Open API : 모니터링 시작/정지 Request Body
<코드 9> WMS Open API : 모니터링 시작/정지 응답 예시

이상과 같이 WMS 시스템에서 제공하는 Open API 중 주요 API에 대한 Request, Response, Description에 대해 간략하게 살펴보았습니다.

WMS Open API 사용을 위해서는 다른 네이버 클라우드 플랫폼 API를
사용하기 위한 작업과 동일한 정보 준비 작업이 필요합니다.

아래 URL을 참고하시면, 네이버 클라우드 플랫폼 Open API 사용 전 필요한
절차에 대해 확인할 수 있습니다.

https://api.ncloud-docs.com/docs/common-ncpapi

​아래와 같이 NAVER Cloud Platform에서 제공하는 모든 Open API에 사용되는 인증 관련 Parameters를 확인할 수 있습니다.

AUTHPARAMS

<표 8> NAVER Cloud Platform Open API AUTHPARAMS

AUTHPARAMS 예시

<코드 10> NAVER Cloud Platform Open API AUTHPARAMS 예시

Signature 생성

  • 개행문자는 \n을 사용합니다.
  • 요청에 맞게 StringToSign을 생성하고 SecretKey로 HmacSHA256
    알고리즘으로 암호화한 후 Base64로 인코딩합니다.
  • 이 값을 x-ncp-apigw-signature-v2로 사용합니다.
<표 9> NAVER Cloud Platform Open API Signature 생성

이외에도 다양한 예시를 개발 언어 별 예시를 제공하고 있으며, 각 상품 별
다양한 Open API와 SDK 정보를 확인하실 수 있습니다.

글을 마무리하며…

네이버 클라우드 플랫폼의 WMS 상품 및 API을 활용한 쉽고 빠른 웹 서비스 모니터링 방법을 공유드렸습니다. 네이버 클라우드 플랫폼의 WMS 상품을
활용하여 저비용/고성능의 서비스 품질 향상을 이루고 빠른 장애 대응 방법을 적용한다면 사용자의 서비스 만족도를 극대화하실 수 있습니다.

앞으로도 지속적인 WMS 기능과 성능 향상을 통해 보다 최적화 및 고도화된 웹 서비스 모니터링을 경험할 수 있도록 서비스를 발전시켜 나갈 예정입니다.

많은 관심 부탁드리며, 끝까지 읽어 주셔서 감사합니다.

본 기술 포스팅은 네이버클라우드 S/W Development Engineer 장창환 님의 작성 글입니다.

--

--