KR101986481B1 - 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치 - Google Patents
엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치 Download PDFInfo
- Publication number
- KR101986481B1 KR101986481B1 KR1020170068998A KR20170068998A KR101986481B1 KR 101986481 B1 KR101986481 B1 KR 101986481B1 KR 1020170068998 A KR1020170068998 A KR 1020170068998A KR 20170068998 A KR20170068998 A KR 20170068998A KR 101986481 B1 KR101986481 B1 KR 101986481B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- information
- monitoring
- performance
- user
- Prior art date
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004458 analytical method Methods 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 33
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims 1
- 239000003795 chemical substances by application Substances 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 235000014510 cooky Nutrition 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000009792 diffusion process Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
- H04L43/045—Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3438—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법은 어플리케이션 서버가 성능 분석 컴포넌트를 수신하는 단계와 어플리케이션 서버가 성능 분석 컴포넌트를 설치하는 단계를 포함하되, 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고, 모니터링 스크립트는 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공할 수 있다.
Description
본 발명은 엔드-투-엔드 엔드 유저 성능 자동 모니터링 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 보다 상세하게는 엔드 유저(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는 본 발명의 실시예에 따른 엔드 유저 성능 모니터링을 위한 엔드 유저 성능 분석 서비스 제공 방법을 나타낸 개념도이다.
도 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)
- 엔드-투-엔드 엔드 유저 성능 자동 분석 방법은,
어플리케이션 서버가 성능 분석 컴포넌트를 수신하는 단계; 및
상기 어플리케이션 서버가 상기 성능 분석 컴포넌트를 설치하는 단계를 포함하되,
상기 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고,
상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공하고,
상기 성능 분석 컴포넌트는 상기 웹 브라우저 상의 엔드 유저에 대한 고유 식별자를 생성하고 상기 고유 식별자를 키로 엔드 유저에 대한 페이지 매니저(Page Manager) 및 페이지 인포(page info)를 생성 및 저장하고,
상기 페이지 매니저는 내부의 구조체에 n(여기서, n은 자연수)개의 페이지 인포를 관리하기 위해 구현되고,
상기 페이지 인포는 엔드-투-엔드 성능 추적을 위한 정보를 포함하고,
상기 모니터링 스크립트는 상기 HTML 페이지의 생성을 위한 응답 스트림을 파싱(parsing)하여 설정된 모니터링 링크 삽입 위치에 모니터링 스크립트 링크를 삽입시키고,
상기 응답 스트림의 전송 길이는 상기 모니터링 스크립트 링크의 길이를 고려하여 재정의되는 것을 특징으로 하는 방법. - 제1항에 있어서,
상기 페이지 매니저는 HTML 페이지 매니저(HTML Page Manager) 및 Ajax 페이지 매니저(Ajax Page Manager)를 포함하고,
상기 페이지 인포는 HTML 페이지 인포(HTML Page Info) 및 Ajax 페이지 인포(Ajax Page Info)를 포함하고,
상기 HTML 페이지 인포에 의해 상기 Ajax 페이지 매니저가 참조되고 상기 Ajax 페이지 매니저에 의해 상기 Ajax 페이지 인포가 참조되고,
상기 페이지 매니저는 URL(uniform resource locator) 또는 리퍼러(referrer)를 키(key)로 하는 겟페이지 및 셋페이지 함수를 기반으로 상기 구조체를 관리하고,
상기 셋페이지 함수 및 상기 구조체 기반으로 웹 페이지 내의 멀티 페이지가 최대 N개 동시 모니터링되는 것을 특징으로 하는 방법. - 삭제
- 제2항에 있어서,
상기 페이지 인포(page info)는 상기 HTML 페이지의 엔드 유저 성능 모니터링 정보와 상기 HTML 페이지 간의 호출 관계 및 상기 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함하고,
상기 엔드 유저 성능 모니터링 정보는 상기 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성하는 것을 특징으로 하는 방법. - 제4항에 있어서,
상기 엔드 유저 성능 수집기는 엔드 유저 모니터링 유형에 따라 상기 엔드 유저 성능 모니터링 정보를 기반으로 생성된 엔드 유저 성능 정보를 제공하고,
상기 엔드 유저 모니터링 유형은 상기 페이지의 포맷에 따라 구분되는 것을 특징으로 하는 방법. - 엔드-투-엔드 엔드 유저 성능 분석 대상 어플리케이션 서버는,
성능 분석 컴포넌트를 수신하기 위해 구현된 통신부; 및
상기 통신부와 동작 가능하게(operatively) 연결된 프로세서를 포함하되,
상기 프로세서는 상기 성능 분석 컴포넌트를 설치하도록 구현되고,
상기 성능 분석 컴포넌트는 웹 브라우저로 HTML(hypertext markup language) 페이지를 서비스하기 위한 어플리케이션의 응답에 모니터링 스크립트를 추가하고,
상기 모니터링 스크립트는 상기 HTML 페이지에서 발생된 이벤트에 대한 엔드 유저 성능 모니터링 정보를 수집하여 제공하고,
상기 성능 분석 컴포넌트는 상기 웹 브라우저 상의 엔드 유저에 대한 고유 식별자를 생성하고 상기 고유 식별자를 키로 엔드 유저에 대한 페이지 매니저(Page Manager) 및 페이지 인포(page info)를 생성 및 저장하고,
상기 페이지 매니저는 내부의 구조체에 n(여기서, n은 자연수)개의 페이지 인포를 관리하기 위해 구현되고,
상기 페이지 인포는 엔드-투-엔드 성능 추적을 위한 정보를 포함하고,
상기 모니터링 스크립트는 상기 HTML 페이지의 생성을 위한 응답 스트림을 파싱(parsing)하여 설정된 모니터링 링크 삽입 위치에 모니터링 스크립트 링크를 삽입시키고,
상기 응답 스트림의 전송 길이는 상기 모니터링 스크립트 링크의 길이를 고려하여 재정의되는 것을 특징으로 하는 어플리케이션 서버. - 제6항에 있어서,
상기 페이지 매니저는 HTML 페이지 매니저(HTML Page Manager) 및 Ajax 페이지 매니저(Ajax Page Manager)를 포함하고,
상기 페이지 인포는 HTML 페이지 인포(HTML Page Info) 및 Ajax 페이지 인포(Ajax Page Info)를 포함하고,
상기 HTML 페이지 인포에 의해 상기 Ajax 페이지 매니저가 참조되고 상기 Ajax 페이지 매니저에 의해 상기 Ajax 페이지 인포가 참조되고,
상기 페이지 매니저는 URL(uniform resource locator) 또는 리퍼러(referrer)를 키(key)로 하는 겟페이지 및 셋페이지 함수를 기반으로 상기 구조체를 관리하고,
상기 셋페이지 함수 및 상기 구조체 기반으로 웹 페이지 내의 멀티 페이지가 최대 N개 동시 모니터링되는 것을 특징으로 하는 어플리케이션 서버. - 삭제
- 제7항에 있어서,
상기 페이지 인포(page info)는 상기 HTML 페이지의 엔드 유저 성능 모니터링 정보와 상기 HTML 페이지 간의 호출 관계 및 상기 HTML 페이지와 어플리케이션의 처리 성능 정보와의 연결을 위한 매칭 정보를 더 포함하고,
상기 엔드 유저 성능 모니터링 정보는 상기 매칭 정보를 기반으로 엔드 유저 성능 수집기로 전송되어 엔드-투-엔드 엔드 유저 성능 정보를 생성하는 것을 특징으로 하는 어플리케이션 서버. - 제9항에 있어서,
상기 엔드 유저 성능 수집기는 엔드 유저 모니터링 유형에 따라 상기 엔드 유저 성능 모니터링 정보를 기반으로 생성된 엔드 유저 성능 정보를 제공하고,
상기 엔드 유저 모니터링 유형은 상기 페이지의 포맷에 따라 구분되는 것을 특징으로 하는 어플리케이션 서버. - 제1항, 제2항, 제4항 및 제5항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
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 KR20180132287A (ko) | 2018-12-12 |
KR101986481B1 true 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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102519008B1 (ko) * | 2022-12-27 | 2023-04-06 | 주식회사 에스티씨랩 | 디지털 서비스 기반 대기열 사용자의 ab 테스트를 진행하기 위한 진입 관리 서버, 방법 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102309667B1 (ko) * | 2019-11-27 | 2021-10-08 | 주식회사 티맥스 소프트 | 대량 거래 상황을 효율적으로 엔드 투 엔드 모니터링 하기 위한 방법 및 이를 이용한 트레이스 정보 고속 입력 장치 |
US12047839B2 (en) * | 2020-01-17 | 2024-07-23 | 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页面实时监测的方法 |
KR102519010B1 (ko) * | 2022-12-30 | 2023-04-06 | 주식회사 에스티씨랩 | 디지털 서비스 기반의 병목 구간 별 진입 대상을 관리하기 위한 진입 관리 서버, 방법 및 프로그램 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 주식회사 엑셈 | 웹 어플리케이션 서버 트랜잭션과 데이터 베이스 관리시스템 세션의 연계를 통한 웹 어플리케이션 성능 모니터링장치 및 그 방법 |
Family Cites Families (7)
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 |
KR100803889B1 (ko) * | 2006-02-07 | 2008-02-14 | 주식회사 케이티프리텔 | 클라이언트 단말로 제공되는 서비스 성능 분석 방법 및시스템 |
US8938721B2 (en) | 2010-07-21 | 2015-01-20 | Microsoft Corporation | Measuring actual end user performance and availability of web applications |
KR20140054480A (ko) * | 2012-10-26 | 2014-05-09 | 이성진 | 웹사이트 이용 현황 실시간 모니터링 시스템 및 방법 |
US20150378756A1 (en) * | 2014-06-25 | 2015-12-31 | SmartBear Software, Inc. | Systems and methods for mobile application tracing instrumentation |
WO2016022693A1 (en) * | 2014-08-05 | 2016-02-11 | Moxie Software, Inc. | Systems and methods for client-side contextual engagement |
-
2017
- 2017-06-02 KR KR1020170068998A patent/KR101986481B1/ko active IP Right Grant
-
2018
- 2018-06-01 US US16/616,186 patent/US10887201B2/en active Active
- 2018-06-01 WO PCT/KR2018/006271 patent/WO2018221997A1/ko active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 주식회사 엑셈 | 웹 어플리케이션 서버 트랜잭션과 데이터 베이스 관리시스템 세션의 연계를 통한 웹 어플리케이션 성능 모니터링장치 및 그 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102519008B1 (ko) * | 2022-12-27 | 2023-04-06 | 주식회사 에스티씨랩 | 디지털 서비스 기반 대기열 사용자의 ab 테스트를 진행하기 위한 진입 관리 서버, 방법 |
Also Published As
Publication number | Publication date |
---|---|
US10887201B2 (en) | 2021-01-05 |
KR20180132287A (ko) | 2018-12-12 |
WO2018221997A1 (ko) | 2018-12-06 |
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 | |
EP2583197B1 (en) | Unified collection and distribution of data | |
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 | |
US20130097484A1 (en) | Method and system of operation retrieval for web application | |
US20110246651A1 (en) | Recording and Serializing Events | |
US20060085420A1 (en) | Method and apparatus for monitoring real users experience with a website | |
US8949462B1 (en) | Removing personal identifiable information from client event information | |
JP2010128877A (ja) | ウェブシステムおよび処理記録収集方法 | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
US20060246889A1 (en) | Wireless Data Device Performance Monitor | |
US20210400114A1 (en) | Methods and apparatus for census and panel matching using http headers | |
US8880108B2 (en) | Short message processing method and apparatus | |
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 | |
CN107370628B (zh) | 基于埋点的日志处理方法及系统 | |
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 | |
US8230002B2 (en) | Method and system for automatic setup in web-based applications | |
CN101360009A (zh) | 机顶盒应用管理方法及系统 | |
CN111694744B (zh) | 一种基于monkey源码的测试开发方法 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
US9374437B2 (en) | Schema validation proxy |
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 |