KR20180132287A - 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치 - Google Patents

엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치 Download PDF

Info

Publication number
KR20180132287A
KR20180132287A KR1020170068998A KR20170068998A KR20180132287A KR 20180132287 A KR20180132287 A KR 20180132287A KR 1020170068998 A KR1020170068998 A KR 1020170068998A KR 20170068998 A KR20170068998 A KR 20170068998A KR 20180132287 A KR20180132287 A KR 20180132287A
Authority
KR
South Korea
Prior art keywords
information
page
monitoring
performance
user
Prior art date
Application number
KR1020170068998A
Other languages
English (en)
Other versions
KR101986481B1 (ko
Inventor
박병년
Original Assignee
그린아일 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 그린아일 주식회사 filed Critical 그린아일 주식회사
Priority to KR1020170068998A priority Critical patent/KR101986481B1/ko
Priority to PCT/KR2018/006271 priority patent/WO2018221997A1/ko
Priority to US16/616,186 priority patent/US10887201B2/en
Publication of KR20180132287A publication Critical patent/KR20180132287A/ko
Application granted granted Critical
Publication of KR101986481B1 publication Critical patent/KR101986481B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • H04L43/045Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법은 어플리케이션 서버가 성능 분석 컴포넌트를 수신하는 단계와 어플리케이션 서버가 성능 분석 컴포넌트를 설치하는 단계를 포함하되, 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고, 모니터링 스크립트는 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공할 수 있다.

Description

엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치{Method for automatic monitoring end to end performance of end-user and apparatus for using the same}
본 발명은 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 보다 상세하게는 엔드 유저(end-user)의 사용자 경험에 대한 품질 향상을 위해 클라이언트의 오류 현황 및 클라이언트에서 서버까지의 엔드-투-엔드(end-to-end) 성능을 모니터링하기 위한 방법 및 장치에 관한 것이다.
인터넷의 보급 및 확산을 통한 웹 서비스의 영역은 이제 기업 비즈니스에서 필수 영역으로 자리매김 한지 오래이다. 기업 비즈니스에서 핵심 서비스 영역 중의 하나인 웹 서비스에 대한 사용자 경험의 품질을 제고하기 위해 사용자 체감 성능을 향상 시키고, 다양한 사용자 단말 환경에서 발생할 수 있는 오류 발생 빈도를 낮추기 위한 기업들의 노력들은 자연스럽게 관련 기술에 대한 관심으로 이어지고 있다.
엔드 유저의 사용자 경험에 대한 품질을 관리하기 위한 종래의 기술들은 사용자 단말의 응답시간을 측정하여 성능을 모니터링 하는 정도의 수준을 제공하고 있다.
상기 종래의 기술들 중 일부는 엔드 유저의 사용자 응답시간을 모니터링 하기 위해 웹 브라우저와 같은 사용자 단말에 Active-X와 같은 별도의 에이전트를 설치하여 호환성 문제, 설치에 따른 불편함 등의 문제를 야기한다.
또한, 종래의 다른 기술은 서버의 네트워크 구간에 엔드 유저 성능을 모니터링 하기 위한 별도의 전용 서버를 설치하여 네트워크 전송 시간을 기준으로 사용자 응답시간을 수집하기도 한다.
또한, 종래의 다른 기술은 엔드 유저의 사용자 응답 시간을 측정하여 GUID 기준으로 네트워크 전송시간과 어플리케이션 처리 시간을 모니터링 하기도 한다. 이러한 모든 종래의 기술들은 사용자 경험의 품질 측면에서 응답시간과 같은 성능만 모니터링 되고 오류 발생과 같은 품질은 모니터링 되지 않는 문제가 있다.
또한, 성능 모니터링의 효율성 측면에서도 모니터링 위한 설치 등의 사전 준비 작업 등의 수작업이 수반되어 효율성 및 즉시성이 떨어지는 문제를 가지고 있다.
또한, 엔드 유저 성능 관점에서 사용자가 서비스 요청을 위한 버튼 클릭과 같은 이벤트 시작에서 서비스 응답이 완료되어 페이지가 다음 사용자의 이벤트에 반응하기 까지의 전 과정 중, 요청 전까지의 네트워크 연결 준비 단계, 서버로부터 응답을 받은 이후 페이지를 로딩(loading)하는 단계 등의 성능 지표는 종래의 기술에서 수집되지 못하고 서버 요청에 대한 응답시간만 관리되는 문제를 가지고 있다.
또한, 엔드-투-엔드(end-to-end)로 엔드 유저 성능 정보와 어플리케이션의 처리 성능 정보를 연결하여 모니터링하는 방법에서도 단순하게 이벤트 단위의 GUID를 이용한 연결만 가능할 뿐, 사용자 화면의 페이지 중심으로 엔드 투 엔드(end-to-end) 성능 모니터링을 가능하게 해 주지는 못하고 있다.
따라서, 사용자 경험에 대한 품질을 제고하기 위한 실효적인 모니터링 기술을 위하여 상기 종래 기술의 문제점 및 기술적인 한계를 뛰어 넘을 수 있는 새로운 방법이 필요하다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은, 기업 내의 웹 서비스에서 엔드 유저(end user) 사용자 경험에 대한 품질 향상을 목적으로 엔드 유저 웹 페이지의 성능 및 오류 현황을 웹 페이지 수정 없이 자동으로 모니터링 하여 서버 측(server-side)의 성능 정보를 엔드-투-엔드(end to end)로 추적하는 것을 다른 목적으로 한다.
또한, 본 발명은, 엔드 유저 성능 모니터링을 함에 있어 클라이언트 단말에 에이전트(agent)를 설치하거나 웹 페이지를 수정하는 방식 등이 가지고 있는 즉시성 및 실효성 문제를 극복하기 위해 에이전트의 설치나 웹 페이지에 대한 수정이 필요 없는 자동화 방식을 제공하는 것을 다른 목적으로 한다.
또한, 본 발명은, 클라이언트 측(client-side)에서 웹 페이지 단위로 클라이언트에서 서버까지의 엔드 투 엔드(end to end) 성능 정보를 추적하고 모니터링하는 것을 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 엔드-투-엔드 엔드 유저 성능 분석 방법은 어플리케이션 서버가 성능 분석 컴포넌트를 수신하는 단계와 상기 어플리케이션 서버가 상기 성능 분석 컴포넌트를 설치하는 단계를 포함할 수 있되, 상기 엔드 유저 성능 분석 어플리케이션은 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고, 상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공할 수 있다.
본 발명의 다른 태양에 따르면, 엔드-투-엔드 엔드 유저 성능 분석 대상 어플리케이션 서버는 성능 분석 컴포넌트를 수신하기 위해 구현된 통신부와 상기 통신부와 동작 가능하게(operatively) 연결된 프로세서를 포함하되, 상기 프로세서는 상기 성능 분석 컴포넌트를 설치하도록 구현되고, 상기 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고, 상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공할 수 있다.
본 발명에 의하면, 기업 내의 웹 서비스에서 엔드 유저(end user) 사용자 경험에 대한 품질 향상을 목적으로 엔드 유저 웹 페이지의 성능 및 오류 현황을 웹 페이지 수정 없이 자동으로 모니터링하여 서버단의 성능 정보가 엔드-투-엔드(end to end)로 추적될 수 있다.
또한, 엔드 유저 성능 모니터링을 함에 있어 클라이언트 단말에 에이전트(agent)를 설치하거나 웹 페이지를 수정하는 방식 등이 가지고 있는 즉시성 및 실효성 문제를 극복하기 위해 에이전트의 설치나 웹 페이지에 대한 수정이 필요 없는 자동화 방식이 제공될 수 있다.
또한, 엔드 유저 단에서 웹 페이지 단위의 클라이언트에서 서버까지의 엔드 투 엔드(end to end) 성능 정보가 추적되고 모니터링될 수 있다.
이뿐만 아니라, 사용자의 웹 페이지 이동 경로, 검색 조건 등의 수집 데이터를 활용하여 이-커머스(e-commerce) 시장에서의 BAM(business activity monitoring) 이나 AI(artificial intelligence)를 활용한 상품 추천 시스템 등의 원천 데이터로 사용될 수 있다.
도 1은 본 발명의 실시예에 따른 엔드 유저 성능 모니터링 시스템을 나타낸 개념도이다.
도 2는 본 발명의 실시예에 따른 페이지 간 참조 관계를 나타낸 개념도이다.
도 3은 본 발명의 실시예에 따른 페이지 호출에 따른 페이지 매니저의 구조체의 변화를 나타낸 개념도이다.
도 4는 본 발명의 실시예에 따른 엔드 유저 성능 모니터링 방법을 나타낸 순서도이다.
도 5는 본 발명의 실시예에 따른 엔드 유저 성능 모니터링을 위한 엔드 유저 성능 분석 서비스 제공 방법을 나타낸 개념도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여 지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 바람직한 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
이하, 본 발명의 실시예에서 개시되는 특정 프로그램 언어, 통신 프로토콜, 전송 규약 등은 하나의 예시로서 다른 다양한 프로그램 언어, 통신 프로토콜, 전송 규약 등이 사용될 수도 있고, 이러한 실시예 또한 본 발명의 권리 범위에 포함될 수 있다.
본 발명의 실시예에 따른 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법에서는 웹 표준 기술 기반의 순수 자바 스크립트(JavaScript)로 작성된 모니터링 스크립트를 통해 웹 페이지의 성능 정보 및 스크립트 오류 등과 같은 모니터링 정보를 수집하여 서버로 전송할 수 있다.
모니터링 스크립트의 작동은 서버의 모니터링 여부 온/오프(on/off) 변경에 따라 해당 페이지의 스트림(stream)이 어플리케이션 서버의 네트워크 출력 모듈을 통해 클라이언트로 쓰기(write)가 될 때, HTML(hypertext markup language) 전송 규약에 맞춰 모니터링 스크립트의 HTML 링크 태그(html link tag)를 자동으로 삽입하는 방식으로 수행될 수 있다.
이러한 방식의 모니터링 스크립트의 작동에 특정 페이지, 특정 엔드 유저(end user)의 IP(internet protocol)에 대한 모니터링이 동적으로 또한 자동적으로 수행되고 엔드 유저 성능 모니터링의 실효성이 높아질 수 있다.
사용자 페이지 단위로 해당 페이지와 그 페이지에서 발생하는 Ajax 콜(Ajax Call)과 같은 복수개의 서버 서비스 호출을 하나의 페이지 작업 단위로 묶어서 보여 주기 위해 HTTP(hypertext transfer protocol) 요청의 리퍼러(referrer), url(uniform resource locator) 정보와 쿠키(cookie) 정보를 활용하여 서버 사이드에서 UUID(universally unique identifier) 발행 및 관련 서비스 간의 호출/피호출의 연관 관계를 조립하여 엔드 투 엔드(end to end) 성능에 대한 추적을 수행할 수 있다.
위와 같은 엔드 유저 성능 모니터링 방법을 통해 별도의 사용자 단말 에이전트 설치나 웹 페이지의 수정 작업 없이 실시간으로 엔드 유저(end user)에 대한 성능 모니터링을 엔드-투-엔드(end to end)로 수행할 수 있다.
도 1은 본 발명의 실시예에 따른 엔드-투-엔드 엔드 유저 성능 자동 모니터링 시스템을 나타낸 개념도이다.
도 1을 참조하면, 엔드 유저 성능 모니터링 시스템은 웹 브라우저(100), 어플리케이션 서버(200), 성능 정보 저장 서버(300), 모니터링 클라이언트(400)를 포함할 수 있다.
웹 브라우저(100)는 엔드 유저 성능 모니터링의 대상이다. 웹 브라우저(100)는 기업 내 웹 서비스를 이용하는 엔드 유저(end user)의 UI(user interface)인 HTML(hypertext markup language) 페이지를 표출하고 이벤트를 처리하는 역할을 수행한다. 이벤트가 처리되는 과정은 웹 브라우저 상에서 모니터링 자동화에 의해 삽입된 모니터링 스크립트(120)에 의해 정보가 수집되고, 수집된 정보는 어플리케이션 서버(200)로 전송될 수 있다. 어플리케이션 서버(200)는 수집된 정보를 기반으로 엔드 유저 성능 정보(281)를 생성하고, 분석된 엔드 유저 성능 정보(281)는 성능 정보 저장 서버(300)로 전송될 수 있다.
어플리케이션 서버(200)는 엔드 유저에게 웹 서비스를 제공하는 어플리케이션이 실행되는 WAS(web application server)와 같은 미들웨어(middleware) 등일 수 있다. 모니터링 에이전트(210)가 어플리케이션 서버에 라이브러리 형태로 같이 실행되어 어플리케이션 서버(200)의 HTML 페이지에 대한 네트워크 출력시 모니터링 스크립트 링크 태그(link tag)가 자동 삽입될 수 있고, 웹 브라우저(100)의 이벤트 모니터링 정보(또는 모니터링 정보)가 수집될 수 있다. 웹 브라우저(100)에서 수집된 모니터링 정보는 HTML 페이지를 서비스한 어플리케이션 서버(200)로 전달되고 최종적으로 성능 정보 저장 서버(300)에 저장될 수 있다. 모니터링 정보는 다른 표현으로 엔드 유저 성능 모니터링 정보라는 용어로 표현될 수도 있다.
어플리케이션 서버(200)는 외부 장치로부터 엔드 유저 성능 분석 어플리케이션을 수신하고, 엔드 유저 성능 분석 어플리케이션을 설치하여 엔드 유저 성능 분석을 수행할 수 있다.
성능 정보 저장 서버(300)는 어플리케이션 서버(200)로부터 수신한 엔드 유저 성능 정보(281)를 메모리 캐쉬 및 내부 저장소에 저장할 수 있다. 이렇게 수집된 엔드 유저 성능 정보(281)는 모니터링 클라이언트(400)의 성능 정보 데이터 요청에 의해 관리자 화면에 출력될 수 있다.
모니터링 클라이언트(400)는 성능 대쉬보드 화면에 다각적인 성능 현황을 표출하며, 이러한 정보는 성능 정보 저장 서버(300)에 요청하여 획득될 수 있다.
이하, 구체적인 엔드 유저 성능 모니터링을 위한 동작이 개시된다.
웹 브라우저(100)는 특정 기업의 웹 서비스를 이용하기 위해 사용된다. PC(personal computer)나 모바일(mobile)의 내장 브라우저가 모두 해당되며, HTML 기반의 페이지에서 동작할 수 있다. 어플리케이션 서버(200)에 서비스를 요청하여 그 결과 페이지인 HTML 페이지(110)를 수신시 엔드 유저 성능 정보(281)에 대한 모니터링 설정 여부에 따라 모니터링 스크립트(120)에 대한 링크(link)가 포함된 페이지가 전달될 수 있다.
HTML 페이지(110)가 웹 브라우저(100)에 의해 렌더링(rendering)되는 과정에서 여러 이벤트가 발생할 수 있고, 이벤트 별 모니터링 정보는 특정 성능 객체(예를 들어, window.performance.timing)에 기록될 수 있다. 성능 객체는 웹 브라우저 종류에 따라 달라질 수 있다. 또한 페이지 렌더링의 종료 후 초기화 과정에서 페이지에 포함된 javascript에 의해 XMLHttpRequest를 통한 어플리케이션 서버(200)로의 추가적인 Ajax 호출이 발생될 수도 있다.
모니터링 스크립트(120)는 HTML 페이지(110)의 이벤트(event)들을 랩핑(wrapping)하여 페이지 로딩(page loading), Ajax 콜(Ajax call), 스크립트 에러(script error)와 관련된 정보를 수집하여 어플리케이션 서버(200)로 전송할 수 있다. 어플리케이션 서버와의 호출 빈도를 줄이기 위해 큐 사이즈(QUEUE_SIZE)에 설정된 기준 값(예를 들어, 5)만큼 모니터링 정보가 모여서 한 번에 전송될 수 있다. 이때 일정 큐잉 타임(QUEUING_TIME)을 초과한 경우 큐가 차지 않은 상태이더라도 서버로 모니터링 정보가 전송될 수 있다.
어플리케이션 서버(200)의 프로세스가 기동될 때 모니터링 에이전트(210)도 라이브러리(library) 형태로 같이 로딩(loading)될 수 있다. 어플리케이션 서버(200)는 기동 과정에서 필요한 모듈들의 바이너리 코드(binary code)들을 메모리로 로딩할 수 있다.
이때 모니터링 에이전트(210)는 네트워크 라이터(network writer)(221)의 시작 부분에 스크립트 인젝터(script injector)(270)를 호출하는 코드를 삽입하고, HTTP 서비스(HTTP service)(230)의 시작 부분에는 EUM 매니저(EUM(end user monitoring) Manager)(240)를 호출하는 코드를 삽입할 수 있다.
네트워크 리더(network reader)(220)는 웹 브라우저(100)의 HTTP 요청을 받아들여 HTTP 서비스(230)로 전달하는 역할을 수행할 수 있다.
네트워크 라이터(221)는 HTTP 서비스(230)의 HTTP 응답 스트림을 전달받고 웹 브라우저(100)에게 응답을 전송하는 역할을 수행할 수 있다. HTTP 응답 스트림을 전송하기 전에 모니터링 스크립트를 삽입하기 위한 작업을 스크립트 인젝터(script injector)(270)에게 요청할 수 있다.
HTTP 서비스(230)은 클라이언트(예를 들어, http 클라이언트(client))의 요청을 처리하고 그 결과를 만드는 역할을 수행할 수 있다. HTTP 서비스(230)의 시작 부분에서 EUM 매니저(240)를 호출하여 엔드 유저 모니터링 작업을 요청할 수 있다. 모든 작업이 완료되면 요청 결과를 클라이언트에게 전송하기 위해 네트워크 라이터(221)에게 결과 스트림을 전송할 수 있다.
EUM 매니저(240)는 크게 3개의 역할을 수행할 수 있다.
EUM 매니저(240)는 최초로 클라이언트로부터 http 요청을 수신시 모니터링 스크립트(241) 파일을 웹 콘텍스트 루트(web context root)에 생성할 수 있다.
또한, EUM 매니저(240)는 엔드 유저(end user)의 서비스 요청에 대한 처리 결과를 웹 페이지로 만들기 위한 서비스를 제공할 수 있고, 결과 웹 페이지의 정보를 관리하여 엔드-투-엔드(end-to-end) 추적을 가능하게 할 수 있다. EUM 매니저(240)는 엔드-투-엔드(end-to-end) 추적을 위해 아래와 같은 동작을 수행할 수 있다.
- 엔드 유저(end user)를 식별하기 위해 비지터 키(VISITOR_KEY)라는 엔드 유저에 대한 고유 식별자(UUID, universally unique identifier)가 생성되고, HTTP 응답 객체의 쿠키(cookie) 정보에 그 값이 기록될 수 있다.
- 그리고 엔드 유저(end user) 당 하나의 페이지 매니저(page manager)(250)를 생성하고, 엔드 투 엔드(end to end) 추적에 필요한 현재 페이지의 정보를 담고 있는 페이지 인포(page info)(251)를 생성하고 페이지 매니저(page manager)(250)에 기록할 수 있다.
- 페이지 매니저(250)에 대한 정보는 비지터 키(VISITOR_KEY) 값을 기반으로 캐쉬 매니저(cache manager)(260)에 등록될 수 있다.
또한, EUM 매니저(240)는 웹 브라우저(100) 상에서 수집된 모니터링 정보를 엔드 유저 성능 수집기(280)로 전달할 수 있다.
모니터링 스크립트2(241)는 EUM 매니저(240)에 의해 파일로 생성되어 HTML 페이지(110)에서 링크(link) 호출이 발생하면 웹 브라우저(100)로 다운로드되고 로딩될 수 있다. 모니터링 스크립트2(241)의 생성시, 버전 번호(version number)를 파일명에 추가하여 모니터링 스크립트2(241)의 변경시 웹 브라우저(100)의 캐쉬(cache)를 방지할 수 있다.
페이지 매니저(Page Manager)(250)는 내부의 구조체에 N개의 페이지 인포(Page Info)(251)를 기록하고 유지하는 역할을 수행할 수 있다. 페이지 매니저(250)는 2개의 타입이 존재한다. 하나는 HTML 페이지 매니저(HTML Page Manager)이고, 다른 하나는 Ajax 페이지 매니저(Ajax Page Manager)이다. 페이지 인포(Page Info)(251)도 2개의 타입이 존재할 수 있다. 하나는 HTML 페이지 인포(HTML Page Info)이고, 다른 하나는 Ajax 페이지 인포(Ajax Page Info)이다.
페이지 매니저(250)의 내부에는 N개의 페이지 인포(Page Info)(251)를 담을 수 있는 구조체가 존재할 수 있다.
페이지 매니저(250)는 URL(uniform resource locator) 또는 리퍼러(referrer)를 키(key)로 하는 겟페이지/셋페이지(getPage/setPage) 함수를 기반으로 구조체를 관리할 수 있다.
셋페이지 함수(setPage(url, pageInfo))의 수행시 기존의 페이지들을 오른쪽으로 하나씩 이동을 시키고 맨 처음의 배열에 신규 페이지를 기록할 수 있다. FIFO(First In First Out) 형태의 구조체로 N개를 초과하는 초기의 페이지는 구조체에서 삭제될 수 있다. 이런 방식으로 웹 페이지 내의 또 다른 내장 페이지나 팝업 페이지 등 멀티 페이지를 최대 N개 동시 모니터링 할 수 있다. 예를 들어, N의 기본 값은 5일 수 있다.
페이지 인포(251)는 클라이언트의 호출 정보와 어플리케이션 서버로 전송되는 모니터링 정보를 매칭하기 위한 매칭 정보를 포함할 수 있다. 다른 표현으로 페이지 인포(251)는 웹 페이지에 대한 정보와 어플리케이션 서버(또는 엔드 유저 성능 수집기)로 전송된 모니터링 정보 간의 매칭을 위한 정보를 포함할 수 있다. 클라이언트의 호출 정보와 어플리케이션 서버로 전송되는 모니터링 정보를 매칭하기 위한 매칭 정보는 page type, txId, callee txId, url, ajax page manager 등을 포함할 수 있다. 페이지 인포(251)는 HTML 페이지의 엔드 유저 성능 모니터링 정보와 HTML 페이지 간의 호출 관계 및 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함하고, 엔드 유저 성능 모니터링 정보는 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성할 수 있다.
다음은 매칭 정보들에 대한 설명이다.
- page type은 페이지 유형 구분으로 HTML 또는 Ajax가 있다.
- txId는 해당 페이지 호출을 구분하기 위한 고유 식별자(UUID, universally unique identifier)이다.
- callee txId는 페이지 호출에 대한 요청을 처리하기 위한 어플리케이션 서버측(server-side)의 거래 고유 식별자(UUID, Universally Unique Identifier)이다.
- url은 페이지에서 호출한 URL 정보이다. 이러한 매칭 정보를 기반으로 클라이언트에서 수집된 페이지에 대한 모니터링 정보 상의 URL과 매칭하여 특정 페이지 인포(251)를 찾을 수 있다.
- ajax page manager는 page_type이 HTML인 경우 내부 Ajax 콜(Ajax call) 정보를 관리하기 위해 사용될 수 있다.
캐쉬 매니저(cache manager)(260)는 VISITOR_KEY값을 기반으로 페이지 매니저(250)를 일정 캐쉬 타임(cache time)만큼 보관할 수 있다.
스크립트 인젝터(270)는 http 응답 스트림(stream)을 파싱(parsing)하여 모니터링 스크립트 링크를 삽입할 수 있다. 현재 모니터링 수행 여부의 설정 값에 따라 값이 참(true)인 경우에만 동작하도록 하고, 또한 모니터링 대상 URL 패턴, 모니터링 대상 클라이언트(Client) IP(internet protocol) 주소 패턴의 설정 값과 대조하여 패턴에 부합되는 URL 및 사용자 IP에만 제한적으로 모니터링을 수행할 수 있다. 이를 통해 런타임(runtime)시에 동적으로 모니터링이 필요한 대상에 대해서만 효율적으로 수행할 수 있게 한다.
모니터링 대상으로 결정되면 먼저 응답 헤더(header)에서 컨텐츠-타입(content-type)이 특정 포맷을 만족하는 경우(예를 들어, text/html 포맷)를 대상으로 하고 다른 문서 형식은 바이패스(bypass)할 수 있다. 다음은 전달-인코딩(transfer-encoding) 값을 획득할 수 있다. HTTP 전송 방식은 청크된(chunked) 방식과 컨텐츠-길이(content-length) 방식 2가지로 구분된다. 전송 방식에 따른 규약은 HTTP 프로토콜에 대한 표준 규약인 RFC2616을 준용할 수 있다.
중요한 것은 이러한 HTTP 전송 규약에 따라 응답 스트림을 파싱(parsing)하여 설정 값에 정의된 모니터링 스크립트 링크 삽입 위치(예를 들어, 기본 값-<head> tag 바로 뒤)를 찾고, 그 위치에 모니터링 스크립트 링크를 삽입한 다음 추가된 링크의 문자열 길이만큼 기존 전송 규약 내의 전송 길이에 더한 값으로 수정하여 응답을 전송할 수 있다. 이렇게 해당 페이지 소스(source)에 대한 정적인 수정 방식이 아닌 런타임(runtime)시 동적 자동화 방식으로 모니터링 코드를 삽입함으로써 즉시성 및 실효성이 담보될 수 있다. 이러한 모니터링 스크립트 링크의 삽입 방법은 HBCI(HTTP Byte Code Injection)이라는 용어로도 정의될 수 있다.
본 발명의 실시예에 따른 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법은 사용되는 프로그램 언어(program language)나 대상 미들웨어(WAS, Web Server)의 유형에 따라 바이트 스트림 핸들링(byte stream handling)과 스트링 스트림 핸들링(string stream handling)으로 구분되거나 혼재되어 적용될 수 있다.
HTTP 규약에서의 본문 시작을 알리는 바디 사인(body sign)은 CR(13), LF(10), CR(13), LF(10) 4개의 연속된 캐릭터(character)이다. 청크드(Chunked) 방식의 전송은 length+contents+length+contents와 같이 반복 전송되며 마지막에 length가 0으로 전송되어 마무리될 수 있다. 이때 길이 사인(length sign)은 전송 길이 숫자(16진수), CR(13), LF(10)로 구성될 수 있다.
엔드 유저 성능 수집기(280)는 웹 브라우저(100)에서 수집된 모니터링 정보를 EUM 매니저(240)로부터 전달받아 엔드 유저 성능 정보(281)를 생성하고 이를 성능 정보 전송자(290)를 통해 성능 정보 저장 서버(300)로 전송할 수 있다.
또한 엔드 유저 성능 수집기(280)는 클라이언트(client)의 시간을 보정하는 역할도 수행할 수 있다. 사용자 장치의 시간은 표준 시간대와 동기화가 되어 있지 않아 각기 다를 수 있다. 따라서, 모니터링 정보 내의 전송 시간(send time)을 기준으로 서버 시간과 비교하여 그 차이(gap)만큼을 보정 수치로 적용하여 시간 동기화를 수행할 수 있다.
웹 브라우저(100)에서 모니터링 스크립트(120)에 의해 수집된 모니터링 정보는 모니터링 스크립트(120)에 정의된 성능 수집 엔드 포인트 url(endpoint url)로 전송될 수 있다.
EUM 매니저(240)는 요청 url과 성능 수집 엔드 포인트 url과 일치할 경우, 엔드 유저 성능 수집기(280)로 정보를 전달할 수 있다.
이하에서는 엔드 유저 성능 수집기(280)의 역할이 구체적으로 개시된다.
클라이언트의 요청을 기반으로 쿠키(cookie) 정보에서 VISITOR_KEY 값을 추출하여 캐쉬 매니저(260)로부터 페이지 매니저(250)의 HTML 페이지 매니저 타입 정보가 획득될 수 있다. HTML 페이지 매니저에서 해당 요청 헤더의 리퍼러 정보를 키로 getPage(Referer)을 호출하여 페이지 인포(251)의 HTML 페이지 인포 타입 정보가 획득될 수 있다.
또한, 클라이언트의 요청을 기반으로 전송 타임(send time) 값이 획득되고, 서버의 현재 시간과의 갭 시간(gap time)이 계산될 수 있다. 갭 시간(gap time)은 이후 클라이언트의 모든 이벤트 발생 시간에 보정 수치로서 계산되어 시간 동기화를 위해 사용될 수 있다.
또한, 클라이언트의 요청을 기반으로 페이지 카운트(page count) 값을 얻어 그 값만큼 와일 루프(while loop)를 수행할 수 있다. 하나의 화면이 복수의 페이지로 구성될 수 있고, 복수의 페이지에 대한 엔드 유저 성능 정보에 대한 수집이 필요할 수 있다. 이러한 경우, 페이지 카운트 값을 획득하고, 그 값만큼 와일 루프를 수행할 수 있다.
페이지에 대한 또는 모니터링 정보는 벌크(bulk) 형태로 전송되어 복수개의 모니터링 정보를 포함하고, 모니터링 정보의 개수에 대한 정보는 페이지 카운트(page count)에 포함될 수 있다.
페이지 카운트의 개수만큼 와일 루프를 수행하는 동안 해당 요청에서 EUM 타입(eum type) 값이 획득될 수 있다. EUM 타입(eum type)은 3가지 타입이 있고 3가지 타입 모두 공통적으로 엔드 유저 성능 정보(281)을 생성할 수 있고, 공통 정보와 거래 추적 정보를 수집하여 엔드 유저 성능 정보(281)에 기록할 수 있다. 각 타입에 대한 상세한 설명은 엔드 유저 성능 정보(281)에 대한 설명에서 후술된다.
EUM 타입이 Ajax 페이지(Ajax page)인 경우, 해당 요청에서 Ajax 콜 URL(ajax call url) 값을 얻어 HTML 페이지 인포(HTML page info)의 Ajax 페이지 매니저(Ajax page mananger)로부터 getPage(ajax_call_url)를 호출하여 페이지 인포(251)의 Ajax 페이지 인포(Ajax page info) 타입 정보를 획득할 수 있다.
Ajax 페이지 인포(Ajax Page Info) 타입 정보가 엔드 유저 성능 정보(281)의 트랜잭션 추적 정보에 기록될 수 있고, 추가적으로 엔드 유저 성능 정보(281)의 caller txId에 HTML 페이지 인포의 txId를 할당할 수 있다.
EUM 타입이 HTML 페이지(html page)인 경우는 해당 요청에서 모니터링 정보를 수집하여 엔드 유저 성능 정보(281)의 성능 정보에 기록하고 HTML 페이지 인포 타입 정보를 엔드 유저 성능 정보(281)의 거래 추적 정보에 기록할 수 있다.
EUM 타입이 스크립트 에러 페이지(script error page)인 경우, 해당 요청에서 에러 정보를 수집하여 엔드 유저 성능 정보(281)의 에러 정보에 기록하고, 추가적으로 엔드 유저 성능 정보(281)의 txId는 신규 UUID를 생성하여 할당한다.
와일 루프가 종료되고 수집된 엔드 유저 성능 정보(281)는 성능 정보 전송자(290)를 통해 성능 정보 저장 서버(300)로 전송될 수 있다.
엔드 유저 성능 정보(281)은 공통 정보, 거래 추적 정보, 성능 정보, 에러 정보 등을 포함할 수 있다. 공통 정보, 거래 추적 정보, 성능 정보, 에러 정보 등은 모니터링 스크립트에 의해 모니터링된 모니터링 정보 및 페이지 인포 정보를 기반으로 생성될 수 있다.
엔드 유저 성능 수집기(280)에 의해 엔드 유저 성능 정보(281)가 생성된다. 엔드 유저 성능 정보(281)는 EUM 타입에 따라 아래와 같이 크게 3가지로 구분될 수 있다.
다음은 엔드 유저 성능 정보(281)에 포함되는 공통 정보들이 개시된다.
공통 정보는 EUM 타입 정보, url 정보, 리퍼러(referrer), 유저 에이전트(user agent), 클라이언트 IP(client IP), 사용자 ID(user ID), WAS ID(was ID), 전송 시간(send time), 시작 시간(start time), 종료 시간(end time), 경과 시간(elapsed time)에 대한 정보를 포함할 수 있다. 다음은 공통 정보들에 대한 설명이다.
- EUM 타입 정보는 엔드 유저 모니터링의 유형으로 HTML 페이지, Ajax 페이지, 스크립트 에러 페이지와 같이 3가지 타입을 구분하기 위한 정보일 수 있다.
- url 정보는 해당 페이지의 요청 url에 대한 정보를 포함할 수 있다.
- 리퍼러(referrer)는 해당 요청 url을 보낸 페이지의 url에 대한 정보를 포함할 수 있다.
- 유저 에이전트(user agent)는 웹 브라우저 엔진의 유형에 대한 정보를 포함할 수 있다.
- 클라이언트 IP(client IP)는 엔드 유저(end user) 단말의 IP 주소에 대한 정보를 포함할 수 있다.
- 사용자 ID(user ID)는 사용자의 식별 정보(ID)에 대한 정보를 포함할 수 있다.
- WAS ID(was ID)는 HTTP 서비스를 제공하는 서버 인스턴스(instance)의 id에 대한 정보를 포함할 수 있다.
- 전송 시간(send time)은 클라이언트에서 성능 정보를 전송한 시각에 대한 정보를 포함할 수 있다.
- 시작 시간(start time)은 해당 페이지가 클라이언트에서 시작한 시각에 대한 정보를 포함할 수 있다.
- 종료 시간(end time)은 해당 페이지가 클라이언트에서 종료된 시각에 대한 정보를 포함할 수 있다.
- 경과 시간(elapsed time)은 해당 페이지의 시작과 종료 사이에 걸린 시간에 대한 정보를 포함할 수 있다.
다음은 트랜잭션 추적 정보들이 개시된다.
트랜잭션 추적 정보는 txId, 콜러 txId(caller txId), 콜리 txId(callee txId)에 대한 정보를 포함할 수 있다. 다음은 트랜잭션 추적 정보들에 대한 설명이다.
- txId는 해당 클라이언트 페이지의 호출을 구분하기 위한 고유 식별자(UUID, universally unique identifier)로 페이지 인포(251)의 txId로부터 할당될 수 있다.
- 콜러 txId(caller txId)는 해당 클라이언트 페이지 요청을 보낸 페이지의 txId로서 EUM 타입(eum_type)이 Ajax 페이지(Ajax page)인 경우에만 페이지 인포(251)의 HTML 페이지 인포(HTML page info) 타입의 txId로부터 할당될 수 있다.
- 콜리 txId(callee txId)는 해당 클라이언트 페이지 호출에 대한 요청을 처리한 서버 측(server-side)의 거래 고유 식별자(UUID, universally unique identifier)로서 페이지 인포(251)의 콜리 txId(callee_txId)로부터 할당될 수 있다.
다음은 성능 정보들이 개시된다. 성능 정보는 HTML 페이지 타입(html page type)에서만 획득될 수 있다. 단위는 모두 millisecond일 수 있다. 성능 정보는 준비 시간, 응답 시간, 로딩 시간에 대한 정보를 포함할 수 있다.
- 준비 시간(prepare time)은 페이지 시작에서 서버 요청 전까지의 소요 시간(requestStart - navigationStart)에 대한 정보를 포함할 수 있다.
- 응답 시간(response time)은 서버 요청에서 서버 응답 완료까지의 소요 시간(responseEnd - requestStart)에 대한 정보를 포함할 수 있다.
- 로딩 시간(loading time)은 서버 응답 완료 이후부터 페이지 종료까지의 소요 시간(loadEventEnd - responseEnd)에 대한 정보를 포함할 수 있다.
- window.performance.timing은 HTML 문서의 표준 규약에 따라 내부에 내장된 성능 정보일 수 있다.
다음은 에러 정보들이 개시된다. 에러 정보는 스크립트 에러 페이지 타입(script error page type)에서만 획득될 수 있다. 에러 정보는 에러 스택, 에러 메시지, 에러 라인, 에러 칼럼에 대한 정보를 포함할 수 있다.
- 에러 스택(error stack)은 스크립트 오류가 발생한 스택 추적(stack trace) 정보를 포함할 수 있다.
- 에러 메시지(error message)는 스크립트 오류 메시지일 수 있다.
- 에러 라인(error line)은 스크립트 오류가 발생한 라인 번호(line number)일 수 있다.
- 에러 칼럼(error column)은 스크립트 오류가 발생한 칼럼 넘버(column number)일 수 있다.
서비스 성능 정보 전송자(290)는 엔드 유저 성능 수집기(280)으로부터 수신한 엔드 유저 성능 정보(281)을 바이트 스트림(byte stream)으로 변환하여 성능 정보 저장 서버(300)에게 UDP 프로토콜로 전송하는 역할을 수행할 수 있다. 성능 정보를 원격 저장소에 저장하기 위해 고빈도로 호출되는 성능을 빠르게 처리하기 위해 TCP가 아닌 UDP 전송 방식이 사용될 수 있다.
성능 정보 저장 서버(300)는 어플리케이션 서버(200)로부터 수신한 엔드 유저 성능 정보(281)을 내부 저장소에 기록하고 모니터링 클라이언트(400)에게 엔드 유저 성능 정보(281)를 제공할 수 있다.
모니터링 클라이언트(400)는 성능 정보 저장 서버(300)에게 엔드 유저 성능 정보(281)을 요청하여 시각화하여 표출할 수 있다.
도 2는 본 발명의 실시예에 따른 페이지 간 참조 관계를 나타낸 개념도이다.
전술한 바와 같이 페이지 매니저(Page Manager)(250)는 2개의 타입이 존재하고, 2개의 타입은 HTML 페이지 매니저(HTML Page Manager), Ajax 페이지 매니저(Ajax Page Manager)일 수 있다. 페이지 인포(Page Info)(251) 또한, 2개의 타입이 존재하고, 2개의 타입은 HTML 페이지 인포(HTML Page Info), Ajax 페이지 인포(Ajax Page Info)일 수 있다.
도 2를 참조하면, HTML 페이지 매니저(Page Manager)(250)에 의해 HTML 페이지 인포(HTML Page Info)가 참조될 수 있다.
전술한 바와 같이 맨 처음 해당 요청의 쿠키(cookie)에서 VISITOR_KEY 값을 추출하여 캐쉬 매니저(260)로부터 페이지 매니저(250)의 HTML 페이지 매니저 타입 정보가 획득될 수 있다. HTML 페이지 매니저에서 해당 요청 헤더의 리퍼러 정보를 키로 getPage(Referer)을 호출하여 페이지 인포(251)의 HTML 페이지 인포 타입 정보가 획득될 수 있다.
HTML 페이지 인포에 의해 Ajax 페이지 매니저가 참조될 수 있고 또한, Ajax 페이지 매니저에 의해 Ajax 페이지 인포가 참조될 수 있다.
구체적으로 EUM 타입이 Ajax 페이지인 경우, 해당 요청에서 Ajax 콜 URL(Ajax call url) 값을 얻어 HTML 페이지 인포(HTML page info)의 Ajax 페이지 매니저(Ajax page mananger)로부터 getPage(ajax_call_url)를 호출하여 페이지 인포(251)의 Ajax 페이지 인포(Ajax page info) 타입 정보를 획득할 수 있다.
도 3은 본 발명의 실시예에 따른 페이지 호출에 따른 페이지 매니저(Page Manager)(250) 내부 구조체의 변화를 나타낸 개념도이다.
도 3을 참조하면, 페이지 매니저(page manager)(250)의 내부에는 N개의 페이지 인포(251)를 담을 수 있는 구조체가 존재할 수 있다.
전술한 바와 같이 페이지 매니저(250)에서는 URL(uniform resource locator) 또는 리퍼러(referrer)를 키(key)로 하는 겟페이지/셋페이지(getPage/setPage) 함수를 기반으로 구조체가 관리될 수 있다.
셋페이지 함수(setPage(url, pageInfo))의 수행시 기존의 페이지들을 오른쪽으로 하나씩 이동을 시키고 맨 처음의 배열에 신규 페이지를 기록할 수 있다. FIFO(First In First Out) 형태의 구조체로 N개를 초과하는 초기의 페이지는 구조체에서 삭제될 수 있다. 이런 방식으로 웹 페이지 내의 또 다른 내장 페이지나 팝업 페이지 등 멀티 페이지를 최대 N개 동시 모니터링 할 수 있다. 예를 들어, N의 기본 값은 5일 수 있다.
도 4는 본 발명의 실시예에 따른 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법을 나타낸 순서도이다.
도 4를 참조하면, 어플리케이션 서버(200)의 프로세스가 시작된다(단계 S402).
어플리케이션 서버(200)의 프로세스의 시작과 함께 네트워크 라이터(network writer, 221)와 HTTP 서비스 모듈(230)의 바이너리 코드에 대한 메모리 로딩이 수행된다(단계 S404).
모니터링 에이전트(210)는 네트워크 라이터(221)의 시작 부분에 스크립트 인젝터(270)를 호출하는 코드를 삽입할 수 있다(단계 S406). 또한, HTTP 서비스(230)의 시작 부분에는 EUM 매니저(240)를 호출하는 코드가 삽입될 수 있다.
어플리케이션 서버(200)는 서비스에 필요한 모든 모듈에 대한 메모리 로딩 작업을 끝내고 서비스 준비를 완료할 수 있다(단계 S408).
웹 브라우저(100)를 통해 사용자는 어플리케이션 서버(200)의 http 서비스를 호출할 수 있다(단계 S410).
네트워크 리더(network reader, 220)는 웹 브라우저의 요청을 수신하고, HTTP 서비스(230)으로 전달할 수 있다(단계 S412).
HTTP 서비스는 서비스 시작 부분에서 EUM 매니저(240)를 호출할 수 있다(단계 S414).
EUM 매니저(240)는 최초 http 요청시, 모니터링 스크립트 파일을 web context root 경로에 생성할 수 있다(단계 S416).
EUM 매니저(240)는 이후 http 요청 헤더(header)의 쿠키(cookie)에서 VISITOR_KEY를 추출할 수 있다(단계 S418). 이때 VISITOR_KEY가 없으면, 처음 방문한 사용자로 판단하고 VISITOR_KEY를 생성하여 http 응답 쿠키(cookie)에 기록할 수 있다.
페이지 매니저(250)가 EUM 매니저(240)에 의해 HTML 페이지 매니저 타입으로 생성될 수 있다(단계 S420).
HTML 페이지 매니저의 생성 이후, 페이지 인포(251)로서 HTML 페이지 인포를 생성할 수 있다(단계 S422). HTML 페이지 인포의 생성시 내부에 N개의 페이지 인포(251)를 담을 수 있는 구조체가 생성될 수 있다. 페이지 인포는 EUM 매니저(240)에 의해 HTML 페이지 인포 타입으로 생성될 수 있다. 페이지 인포의 생성시, 내부에 Ajax 페이지 매니저 타입의 페이지 매니저(250)을 생성하여 Ajax 페이지를 관리할 수 있다. 또한, 엔드-투-엔드(end-to-end) 추적에 필요한 txId가 생성되고, callee_txId에 현재 서비스의 txId가 할당될 수 있다. 마지막으로 현재 요청의 url정보가 할당된 후 페이지 매니저(250)의 setPage(url, pageInfo)를 호출하여 기록할 수 있다.
캐쉬 매니저(260)에 VISITOR_KEY를 키 값으로 위에서 생성된 HTML 페이지 매니저 타입 정보가 EUM 매니저(240)에 의해 등록될 수 있다(단계 S424).
웹 페이지(231)는 HTTP 서비스(230)가 읽어들여 요청 결과 페이지를 생성할 수 있다(단계 S426).
네트워크 라이터(221)에게 웹페이지 결과 스트림(231)이 전달되고, 웹 브라우저(100)에게 결과 전송이 수행될 수 있다(단계 S428).
스크립트 인젝터(270)는 네트워크 라이터(221)의 전송 시작 부분에서 호출되어 모니터링 스크립트 삽입 작업을 수행할 수 있다(단계 S430).
HTML 페이지(110)는 네트워크 라이터(221)로부터 서비스 결과 페이지를 수신할 수 있다(단계 S432).
모니터링 스크립트(120)는 결과 페이지의 <head> tag 다음에 삽입된 모니터링 스크립트 링크 태그(link tag)에 의해 어플리케이션 서버(200)로부터 다운로드될 수 있다(단계 S434).
모니터링 스크립트(120)는 다운로드된 이후 로딩 과정에서 HTML 페이지(110)의 성능 및 에러 등과 관련된 모든 이벤트를 감싸서 모니터링할 수 있다(단계 S436).
HTML 페이지(110) 내에 포함된 Ajax 콜(ajax call)들이 수행된다(단계 S438). 이 요청은 네트워크 리더(220)(단계 S440)와 HTTP 서비스(230) (단계 S442)를 거쳐 EUM 매니저(240)으로 전달될 수 있다.
EUM 매니저(240)은 HTTP 요청 헤더의 컨텐츠-타입 판독을 통해 Ajax 콜(ajax call)임을 판단할 수 있다. 먼저 EUM 매니저(240)은 요청 헤더의 쿠키(cookie)에서 VISITOR_KEY를 획득한다(단계 S444).
캐쉬 매니저(260)로부터 EUM 매니저(240)는 VISITOR_KEY를 키 값으로 HTML 페이지 매니저 타입의 페이지 매니저(250)를 획득할 수 있다(단계 S446).
페이지 매니저(250)로부터 EUM 매니저(240)는 HTTP 요청 헤더에서 획득한 리퍼러(referrer) 정보를 키로 하여 getPage(referer)를 호출하여 HTML 페이지 인포 타입을 획득할 수 있다(단계 S448).
페이지 인포(251)는 Ajax 페이지 인포(Ajax page info) 타입으로 EUM 매니저(240)에 의해 생성될 수 있다(단계S450). 생성시 엔드-투-엔드(end-to-end) 추적에 필요한 txId를 생성하고, callee_txId에 현재 서비스의 txId를 할당할 수 있다. 마지막으로 현재 요청의 url정보를 할당한다.
페이지 매니저(250)의 Ajax 페이지 매니저(Ajax page manager) 타입 정보는 위에서 획득한 HTML 페이지 인포 타입의 내부 정보에 존재하며, Ajax 페이지 매니저의 setPage(url, ajaxPageInfo)를 호출하여 기록을 수행할 수 있다(단계S452).
HTTP 서비스(230)의 서비스가 종료되고(단계S454) 네트워크 라이터(221)를 통해 서비스 결과 전송이 이루어지면(단계S456) HTML 페이지(110)의 Ajax 콜(ajax call)이 종료될 수 있다(단계S458). 이어서 HTML 페이지(100)의 수신까지 모두 종료된다(단계S460).
모니터링 스크립트(120)는 지금까지 수행된 모든 이벤트에 대한 모니터링 성능 정보를 내부 큐에 기록해 두었다가 큐 사이즈가 설정된 전송 사이즈(예를 들어, 5)에 이르게 되면, 모아 두었던 모니터링 정보를 모니터링 스크립트에 정의된 성능 수집 엔드 포인트(endpoint) url로 전송할 수 있다. EUM 매니저(240)는 요청 url이 성능 수집 엔드 포인트 url과 일치할 경우, 엔드 유저 성능 수집기(280)로 해당 모니터링 정보를 전달할 수 있다(단계 S462).
엔드 유저 성능 수집기(280)는 해당 HTTP 요청 헤더의 쿠키(cookie)에서 VISITOR_KEY 값을 추출할 수 있다(단계 S464).
캐쉬 매니저(260)으로부터 VISITOR_KEY를 키로 HTML 페이지 매니저 타입 정보를 획득할 수 있다(단계 S466). HTML 페이지 매니저에서 해당 요청 헤더의 리퍼러(referrer) 정보를 키로 getPage(Referer)를 호출하여 HTML 페이지 인포 타입 정보를 획득할 수 있다.
엔드 유저 성능 수집기(280)는 다음으로 해당 요청에서 전송 시간(send time) 값을 얻어 서버의 현재 시간과의 시각 보정을 수행할 수 있다(단계 S468).
엔드 유저 성능 수집기(280)는 다음으로 해당 요청에서 페이지 카운트(page count) 값을 얻어 그 값만큼 와일 루프(while loop)를 수행할 수 있다(단계 S470). 페이지에 대한 모니터링 정보는 벌크(bulk) 형태로 전송되어 여러 개의 모니터링 정보가 담겨 있고 그 개수는 페이지 카운트(page count)에 담겨 있다.
엔드 유저 성능 정보(281)는 와일 루프(while loop)를 수행하는 동안 해당 요청에서 얻은 EUM 타입 값에 의해 Ajax 페이지(ajax page), html 페이지(html page), 스크립트 에러 페이지(script error page)의 3가지 타입으로 생성될 수 있다. 생성된 엔드 유저 성능 정보(281)의 타입에 따라 공통 정보, 트랜잭션 추적 정보, 성능 정보, 에러 정보가 수집되어 기록될 수 있다(단계 S472).
엔드 유저 성능 수집기(280)의 페이지 카운트 루프(page count loop)가 종료된다(단계 S474).
성능 정보 전송자(290)는 엔드 유저 성능 정보(281)를 전달받아 성능 정보 저장 서버(300)로 전송을 수행할 수 있다(단계 S476).
성능 정보 저장 서버(300)의 저장부(store)는 성능 정보 전송자(290)로부터 수신한 엔드 유저 성능 정보(281)를 저장할 수 있다(단계 S478).
모니터링 클라이언트(400)는 성능 정보 저장 서버(300)에게 엔드 유저 성능 정보를 요청하여 그 결과를 시각화하여 표출할 수 있다(단계S480).
도 5는 본 발명의 실시예에 따른 엔드-투-엔드 엔드 유저 성능 자동 모니터링을 위한 엔드 유저 성능 분석 서비스 제공 방법을 나타낸 개념도이다.
도 5에서는 도 1 내지 도 4에서 전술한 네트워크 상의 엔드 유저 성능 분석 서비스를 제공하기 위한 시스템이 개시된다.
도 5를 참조하면, 엔드 유저 성능 분석 제어 장치(500)는 모니터링 클라이언트 측으로 엔드 유저 성능 분석 서비스를 제공하기 위한 장치일 수 있다. 엔드 유저 분석 제어 장치(500)는 엔드 유저 성능 분석 서비스를 위한 어플리케이션을 제공하는 주체일 수 있다. 예를 들어, 엔드 유저 성능 분석 어플리케이션을 전송하는 서버(또는 컴퓨터)이거나 또는 USB와 같은 저장매체일 수도 있다.
엔드 유저 성능 분석 제어 장치(500)는 프로세서와 통신부를 포함할 수 있고, 프로세서는 엔드 유저 성능 분석 제어 장치(500)의 구동을 위한 제어를 위해 구현되고, 통신부는 어플리케이션 서버(200), 성능 정보 저장 서버(300), 모니터링 클라이언트(400) 등과의 통신을 위해 프로세서와 동작 가능하게(operatively) 연결될 수 있다. 또는 엔드 유저 성능 분석 제어 장치는 통신부와 프로세서를 포함하되, 엔드 유저 성능 분석 어플리케이션(또는 성능 분석 컴포넌트(200-1)만을 전송하기 위해 구현될 수도 있다.
또한, 엔드-투-엔드 엔드 유저 성능 분석 대상 어플리케이션 서버는 엔드 유저 성능 분석 어플리케이션(또는 성능 분석 컴포넌트(200-1)을 수신하기 위해 구현된 통신부와 통신부와 동작 가능하게(operatively) 연결된 프로세서를 포함할 수 있다. 프로세서는 엔드 유저 성능 분석 어플리케이션을 설치하도록 구현될 수 있다.
성능 분석 컴포넌트(200-1)는 전술한 도 1 내지 도 4에서 개시한 어플리케이션 서버(200)/성능 정보 저장 서버(300)/모니터링 클라이언트(400) 상에서 수행되는 엔드 유저 성능의 분석을 위한 동작들을 구동시킬 수 있다. 성능 분석 컴포넌트(200-1)는 도 1 내지 도 4에서 전술한 어플리케이션 서버에 설치되는 엔드 유저 성능 분석을 위한 컴포넌트들의 집합(또는 컴포넌트 중 적어도 하나)일 수 있다. 성능 분석 컴포넌트(200-1)는 어플리케이션 서버에 설치된 어플리케이션(200-2)에 대한 성능 분석을 위해 구현될 수 있다.
예를 들어, 성능 분석 컴포넌트(200-1)는 모니터링 스크립트를 기반으로 엔드 유저에게 어플리케이션 서버에 의해 제공되는 페이지에 대한 모니터링을 위해 구현되고, 모니터링 스크립트는 페이지에서 발생된 이벤트 정보에 대한 모니터링 정보를 수집하여 엔드 유저 성능 수집기로 제공할 수 있다.
구체적으로 성능 분석 컴포넌트(200-1)는 웹 브라우저로 HTML 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고, 모니터링 스크립트는 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공할 수 있다.
성능 분석 컴포넌트(200-1)는 웹 브라우저 상의 엔드 유저에 대한 고유 식별자를 생성하고, 고유 식별자를 키로 엔드 유저에 대한 페이지 매니저 및 페이지 인포(info)를 생성 및 저장하고, 페이지 매니저는 내부의 구조체에 n(여기서, n은 자연수)개의 페이지 인포를 관리하기 위해 구현되고, 페이지 인포는 엔드-투-엔드 성능 추적을 위한 정보를 포함할 수 수 있다.
모니터링 스크립트는 HTML 페이지의 생성을 위한 응답 스트림을 파싱(parsing)하여 설정된 모니터링 링크 삽입 위치에 모니터링 스크립트 링크를 삽입시키고, 응답 스트림의 전송 길이는 모니터링 스크립트 링크의 길이를 고려하여 재정의될 수 있다.
페이지 인포(page info)는 HTML 페이지의 엔드 유저 성능 모니터링 정보와 HTML 페이지 간의 호출 관계 및 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함할 수 있다. 엔드 유저 성능 모니터링 정보는 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성할 수 있다. 엔드 유저 성능 수집기는 엔드 유저 모니터링 유형에 따라 엔드 유저 성능 모니터링 정보를 기반으로 생성된 엔드 유저 성능 정보를 제공하고, 엔드 유저 모니터링 유형은 페이지의 포맷에 따라 구분될 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.

Claims (11)

  1. 엔드-투-엔드 엔드 유저 성능 자동 분석 방법은,
    어플리케이션 서버가 성능 분석 컴포넌트를 수신하는 단계; 및
    상기 어플리케이션 서버가 상기 성능 분석 컴포넌트를 설치하는 단계를 포함하되,
    상기 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고,
    상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 성능 분석 컴포넌트는 상기 웹 브라우저 상의 엔드 유저에 대한 고유 식별자를 생성하고 상기 고유 식별자를 키로 엔드 유저에 대한 페이지 매니저(Page Manager) 및 페이지 인포(page info)를 생성 및 저장 하고,
    상기 페이지 매니저는 내부의 구조체에 n(여기서, n은 자연수)개의 페이지 인포를 관리하기 위해 구현되고,
    상기 페이지 인포는 엔드-투-엔드 성능 추적을 위한 정보를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 모니터링 스크립트는 상기 HTML 페이지의 생성을 위한 응답 스트림을 파싱(parsing)하여 설정된 모니터링 링크 삽입 위치에 모니터링 스크립트 링크를 삽입시키고,
    상기 응답 스트림의 전송 길이는 상기 모니터링 스크립트 링크의 길이를 고려하여 재정의되는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 페이지 인포(page info)는 상기 HTML 페이지의 엔드 유저 성능 모니터링 정보와 상기 HTML 페이지 간의 호출 관계 및 상기 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함하고,
    상기 엔드 유저 성능 모니터링 정보는 상기 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 엔드 유저 성능 수집기는 엔드 유저 모니터링 유형에 따라 상기 엔드 유저 성능 모니터링 정보를 기반으로 생성된 엔드 유저 성능 정보를 제공하고,
    상기 엔드 유저 모니터링 유형은 상기 페이지의 포맷에 따라 구분되는 것을 특징으로 하는 방법.
  6. 엔드-투-엔드 엔드 유저 성능 분석 대상 어플리케이션 서버는,
    성능 분석 컴포넌트를 수신하기 위해 구현된 통신부; 및
    상기 통신부와 동작 가능하게(operatively) 연결된 프로세서를 포함하되,
    상기 프로세서는 상기 성능 분석 컴포넌트를 설치하도록 구현되고,
    상기 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고,
    상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공하는 것을 특징으로 하는 어플리케이션 서버.
  7. 제6항에 있어서,
    상기 성능 분석 컴포넌트는 상기 웹 브라우저 상의 엔드 유저에 대한 고유 식별자를 생성하고 상기 고유 식별자를 키로 엔드 유저에 대한 페이지 매니저(Page Manager) 및 페이지 인포(page info)를 생성 및 저장 하고,
    상기 페이지 매니저는 내부의 구조체에 n(여기서, n은 자연수)개의 페이지 인포를 관리하기 위해 구현되고,
    상기 페이지 인포는 엔드-투-엔드 성능 추적을 위한 정보를 포함하는 것을 특징으로 하는 어플리케이션 서버.
  8. 제6항에 있어서,
    상기 모니터링 스크립트는 상기 HTML 페이지의 생성을 위한 응답 스트림을 파싱(parsing)하여 설정된 모니터링 링크 삽입 위치에 모니터링 스크립트 링크를 삽입시키고,
    상기 응답 스트림의 전송 길이는 상기 모니터링 스크립트 링크의 길이를 고려하여 재정의되는 것을 특징으로 하는 어플리케이션 서버.
  9. 제8항에 있어서,
    상기 페이지 인포(page info)는 상기 HTML 페이지의 엔드 유저 성능 모니터링 정보와 상기 HTML 페이지 간의 호출 관계 및 상기 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함하고,
    상기 엔드 유저 성능 모니터링 정보는 상기 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성하는 것을 특징으로 하는 어플리케이션 서버.
  10. 제9항에 있어서,
    상기 엔드 유저 성능 수집기는 엔드 유저 모니터링 유형에 따라 상기 엔드 유저 성능 모니터링 정보를 기반으로 생성된 엔드 유저 성능 정보를 제공하고,
    상기 엔드 유저 모니터링 유형은 상기 페이지의 포맷에 따라 구분되는 것을 특징으로 하는 어플리케이션 서버.
  11. 제1항 내지 제5항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020170068998A 2017-06-02 2017-06-02 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치 KR101986481B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170068998A KR101986481B1 (ko) 2017-06-02 2017-06-02 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치
PCT/KR2018/006271 WO2018221997A1 (ko) 2017-06-02 2018-06-01 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치
US16/616,186 US10887201B2 (en) 2017-06-02 2018-06-01 Method for automatically monitoring end-to-end end user performance and apparatus for performing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170068998A KR101986481B1 (ko) 2017-06-02 2017-06-02 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치

Publications (2)

Publication Number Publication Date
KR20180132287A true KR20180132287A (ko) 2018-12-12
KR101986481B1 KR101986481B1 (ko) 2019-06-07

Family

ID=64454896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170068998A KR101986481B1 (ko) 2017-06-02 2017-06-02 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치

Country Status (3)

Country Link
US (1) US10887201B2 (ko)
KR (1) KR101986481B1 (ko)
WO (1) WO2018221997A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11018961B1 (en) 2019-11-27 2021-05-25 TmaxSoft Co., Ltd. Method and device for efficient end-to-end monitoring of massive transactions
KR102519010B1 (ko) * 2022-12-30 2023-04-06 주식회사 에스티씨랩 디지털 서비스 기반의 병목 구간 별 진입 대상을 관리하기 위한 진입 관리 서버, 방법 및 프로그램

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210227351A1 (en) * 2020-01-17 2021-07-22 Cisco Technology, Inc. Out of box user performance journey monitoring
US11328241B2 (en) 2020-07-02 2022-05-10 Content Square SAS Identifying script errors in an online retail platform and quantifying such errors
US11042465B1 (en) * 2020-09-02 2021-06-22 Coupang Corp. Systems and methods for analyzing application loading times
CN112631906A (zh) * 2020-12-18 2021-04-09 湖南映客互娱网络信息有限公司 基于服务端的页面性能的检测方法与系统
CN112486796B (zh) * 2020-12-30 2023-07-11 智道网联科技(北京)有限公司 一种采集车载智能终端信息的方法和装置
CN112860515A (zh) * 2021-02-03 2021-05-28 读书郎教育科技有限公司 一种儿童电话手表埋点上报的方法
US11237725B1 (en) * 2021-03-03 2022-02-01 Kindred Soul Ltd. Tracking link generation using keyboard interception on mobile devices
CN113076234B (zh) * 2021-04-02 2022-07-12 多点(深圳)数字科技有限公司 一种html5页面实时监测的方法
KR102519008B1 (ko) * 2022-12-27 2023-04-06 주식회사 에스티씨랩 디지털 서비스 기반 대기열 사용자의 ab 테스트를 진행하기 위한 진입 관리 서버, 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070080313A (ko) * 2006-02-07 2007-08-10 주식회사 케이티프리텔 클라이언트 단말로 제공되는 서비스 성능 분석 방법 및시스템
US20080228863A1 (en) * 2007-03-12 2008-09-18 Timothy Mackey Systems and Methods for End-User Experience Monitoring Using A Script
KR100906440B1 (ko) * 2008-05-07 2009-07-09 주식회사 엑셈 웹 어플리케이션 서버 트랜잭션과 데이터 베이스 관리시스템 세션의 연계를 통한 웹 어플리케이션 성능 모니터링장치 및 그 방법
KR20140054480A (ko) * 2012-10-26 2014-05-09 이성진 웹사이트 이용 현황 실시간 모니터링 시스템 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973490B1 (en) * 1999-06-23 2005-12-06 Savvis Communications Corp. Method and system for object-level web performance and analysis
US20060085420A1 (en) * 2004-09-27 2006-04-20 Symphoniq Corp. Method and apparatus for monitoring real users experience with a website
US8938721B2 (en) * 2010-07-21 2015-01-20 Microsoft Corporation Measuring actual end user performance and availability of web applications
US20150378756A1 (en) * 2014-06-25 2015-12-31 SmartBear Software, Inc. Systems and methods for mobile application tracing instrumentation
US10587672B2 (en) * 2014-08-05 2020-03-10 Moxie Software, Inc. Systems and methods for client-side contextual engagement

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070080313A (ko) * 2006-02-07 2007-08-10 주식회사 케이티프리텔 클라이언트 단말로 제공되는 서비스 성능 분석 방법 및시스템
US20080228863A1 (en) * 2007-03-12 2008-09-18 Timothy Mackey Systems and Methods for End-User Experience Monitoring Using A Script
KR100906440B1 (ko) * 2008-05-07 2009-07-09 주식회사 엑셈 웹 어플리케이션 서버 트랜잭션과 데이터 베이스 관리시스템 세션의 연계를 통한 웹 어플리케이션 성능 모니터링장치 및 그 방법
KR20140054480A (ko) * 2012-10-26 2014-05-09 이성진 웹사이트 이용 현황 실시간 모니터링 시스템 및 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11018961B1 (en) 2019-11-27 2021-05-25 TmaxSoft Co., Ltd. Method and device for efficient end-to-end monitoring of massive transactions
KR20210065792A (ko) * 2019-11-27 2021-06-04 주식회사 티맥스 소프트 대량 거래 상황을 효율적으로 엔드 투 엔드 모니터링 하기 위한 방법 및 이를 이용한 트레이스 정보 고속 입력 장치
KR102519010B1 (ko) * 2022-12-30 2023-04-06 주식회사 에스티씨랩 디지털 서비스 기반의 병목 구간 별 진입 대상을 관리하기 위한 진입 관리 서버, 방법 및 프로그램

Also Published As

Publication number Publication date
KR101986481B1 (ko) 2019-06-07
WO2018221997A1 (ko) 2018-12-06
US10887201B2 (en) 2021-01-05
US20200213208A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
KR101986481B1 (ko) 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치
US8910187B2 (en) Method and apparatus for non-intrusive web application integration to streamline enterprise business process
US7970946B1 (en) Recording and serializing events
EP2583197B1 (en) Unified collection and distribution of data
US8156216B1 (en) Distributed data collection and aggregation
US8769397B2 (en) Embedding macros in web pages with advertisements
US20070271375A1 (en) Method and apparatus for monitoring real users experience with a website capable of using service providers and network appliances
US20060085420A1 (en) Method and apparatus for monitoring real users experience with a website
US9203905B1 (en) Sessionization of visitor activity
US8683029B2 (en) Web service system, schedule execution apparatus and control method thereof
US8949462B1 (en) Removing personal identifiable information from client event information
JP2010128877A (ja) ウェブシステムおよび処理記録収集方法
CN101695157A (zh) 网络应用中移动终端屏幕显示的自适应方法及系统
US20060246889A1 (en) Wireless Data Device Performance Monitor
US20170033980A1 (en) Agent manager for distributed transaction monitoring system
US20200314189A1 (en) Methods and apparatus for census and panel matching using http headers
US10775751B2 (en) Automatic generation of regular expression based on log line data
US9128886B2 (en) Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium
US8532960B2 (en) Remotely collecting and managing diagnostic information
US20130019152A1 (en) Method and Apparatus for Tracking Exit Destinations of Web Page
US10432490B2 (en) Monitoring single content page application transitions
US20050149847A1 (en) Monitoring system for general-purpose computers
CN101360009A (zh) 机顶盒应用管理方法及系统
CN113360413A (zh) 一种代码测试方法及装置
CN111694744B (zh) 一种基于monkey源码的测试开发方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right