KR102433764B1 - 서비스 모니터링 시스템 및 방법 - Google Patents

서비스 모니터링 시스템 및 방법 Download PDF

Info

Publication number
KR102433764B1
KR102433764B1 KR1020160047547A KR20160047547A KR102433764B1 KR 102433764 B1 KR102433764 B1 KR 102433764B1 KR 1020160047547 A KR1020160047547 A KR 1020160047547A KR 20160047547 A KR20160047547 A KR 20160047547A KR 102433764 B1 KR102433764 B1 KR 102433764B1
Authority
KR
South Korea
Prior art keywords
service
abbreviated
key
service device
abbreviated key
Prior art date
Application number
KR1020160047547A
Other languages
English (en)
Other versions
KR20170119477A (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 KR1020160047547A priority Critical patent/KR102433764B1/ko
Priority to CN201710252986.5A priority patent/CN107305517A/zh
Priority to US15/491,003 priority patent/US10671505B2/en
Publication of KR20170119477A publication Critical patent/KR20170119477A/ko
Application granted granted Critical
Publication of KR102433764B1 publication Critical patent/KR102433764B1/ko

Links

Images

Classifications

    • 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/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/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored 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/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
    • 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/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
    • G06F11/3419Recording 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 by assessing time
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

서비스 모니터링 시스템 및 방법이 제공된다. 본 발명의 일 실시예에 따른 서비스 모니터링 시스템은, 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하고, 상기 제1 축약키 및 상기 텍스트 정보의 쌍(pair)을 제1 테이블에 추가하며, 상기 대상 서비스가 실행되는 과정에서 상기 기능 블록들이 호출되는 순서를 나타내는 호출 흐름 정보를 제2 축약키로 변환하고, 상기 제2 축약키 및 상기 호출 흐름 정보의 쌍을 제2 테이블에 추가하는 서비스 장치; 및 상기 서비스 장치로부터 상기 제1 테이블 및 상기 제2 테이블을 수신하고, 상기 제1 테이블 및 상기 제2 테이블을 이용하여 상기 각 대상 서비스에 대한 프로파일링 정보를 상기 기능 블록 단위로 획득하는 모니터링 서버를 포함한다.

Description

서비스 모니터링 시스템 및 방법{SYSTEM AND METHOD FOR MONITORING SERVICE}
본 발명의 실시예들은 서비스의 트랜잭션 내 병목 구간을 효율적으로 모니터링하기 위한 기술과 관련된다.
어플리케이션 성능 관리(Application Performance Management : APM) 또는 응용 프로그램 성능 관리는 응용 프로그램의 성능과 서비스 이용성을 감시하고 관리하는데 초점을 둔 시스템 관리 원칙을 의미한다. 최근, 사용자에게 제공하는 서비스가 좀 더 다양해지고 복잡해짐에 따라, 사용자가 원하는 트랜잭션(transaction)을 지체없이 실행하기 위한 성능 관리 기술의 중요성이 커지고 있다.
그러나, 종래의 성능 관리 기술의 경우 트랜잭션에 대한 프로파일링 정보를 텍스트 형태 그대로 모니터링 서버로 전송함으로써, 제한된 인프라 자원에서 많은 부하가 발생되는 문제점이 있다. 또한, 이러한 문제점을 해결하기 위해 트랜잭션 내 일부 구간에 대한 프로파일링 정보만을 모니터링 서버로 전송하거나 여러 압축 알고리즘을 이용하여 모니터링 서버로 전송되는 데이터의 양을 줄이고자 하였으나 부하 절감 차원에서는 그 한계가 있다.
나아가, 종래의 성능 관리 기술에 따르면, 부하 절감을 위해 설정된 모니터링 범위에 대해서만 프로파일링 정보를 획득하였으며, 이 경우 트랜잭션 내 전 구간에 대한 모니터링이 불가능하게 된다. 따라서, 종래의 성능 관리 기술에 따르면, 모니터링 범위 밖에서 문제가 발생할 경우 상기 문제에 대한 원인 분석을 할 수 없으며, 이에 따라 트랜잭션 내 정확한 병목 구간을 찾아내는 데 어려움이 있을 수 밖에 없다.
한국등록특허공보 제10-0503776호(2005.07.26)
본 발명의 실시예들은 서비스의 트랜잭션 내 전 구간에 대한 모니터링을 수행하고 모니터링 수행 과정에서 발생되는 부하를 최소화하는 수단을 제공하기 위한 것이다.
본 발명의 예시적인 실시예에 따르면, 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하고, 상기 제1 축약키 및 상기 텍스트 정보의 쌍(pair)을 제1 테이블에 추가하며, 상기 대상 서비스가 실행되는 과정에서 상기 기능 블록들이 호출되는 순서를 나타내는 호출 흐름 정보를 제2 축약키로 변환하고, 상기 제2 축약키 및 상기 호출 흐름 정보의 쌍을 제2 테이블에 추가하는 서비스 장치; 및 상기 서비스 장치로부터 상기 제1 테이블 및 상기 제2 테이블을 수신하고, 상기 제1 테이블 및 상기 제2 테이블을 이용하여 상기 각 대상 서비스에 대한 프로파일링 정보를 상기 기능 블록 단위로 획득하는 모니터링 서버를 포함하는, 서비스 모니터링 시스템이 제공된다.
상기 서비스 장치는, 상기 대상 서비스의 실행 전, 상기 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입할 수 있다.
상기 서비스 장치는, 상기 대상 서비스가 실행되는 과정에서 상기 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 상기 기능 블록들의 호출 흐름 정보를 상기 제2 축약키로 변환할 수 있다.
상기 서비스 장치는, 출력된 상기 제1 축약키들을 순차적으로 나열함으로써 상기 호출 흐름 정보를 획득하고, 상기 호출 흐름 정보를 상기 제2 축약키로 변환할 수 있다.
상기 제1 축약키는, 상기 텍스트 정보를 해싱함으로써 획득되는 해시값이며, 상기 제2 축약키는, 상기 호출 흐름 정보를 해싱함으로써 획득되는 해시값일 수 있다.
상기 서비스 장치는, 출력된 상기 제1 축약키들로부터 획득된 제2 축약키 및 상기 성능 측정 코드에 의해 획득된 상기 기능 블록 각각에 대한 성능 측정 결과값을 상기 모니터링 서버로 전송할 수 있다.
상기 성능 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 상기 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함할 수 있다.
상기 모니터링 서버는, 상기 제1 테이블 및 상기 제2 테이블을 참조하여 상기 서비스 장치로부터 수신된 상기 제2 축약키를 상기 기능 블록 각각에 대한 텍스트 정보로 복원할 수 있다.
상기 프로파일링 정보는, 상기 모니터링 서버에서 복원된 상기 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다.
본 발명의 다른 예시적인 실시예에 따르면, 서비스 장치에서, 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하는 단계; 상기 서비스 장치에서, 상기 제1 축약키 및 상기 텍스트 정보의 쌍(pair)을 제1 테이블에 추가하는 단계; 상기 서비스 장치에서, 상기 대상 서비스가 실행되는 과정에서 상기 기능 블록들이 호출되는 순서를 나타내는 호출 흐름 정보를 제2 축약키로 변환하는 단계; 상기 서비스 장치에서, 상기 제2 축약키 및 상기 호출 흐름 정보의 쌍을 제2 테이블에 추가하는 단계; 모니터링 서버에서, 상기 서비스 장치로부터 상기 제1 테이블 및 상기 제2 테이블을 수신하는 단계; 및 상기 모니터링 서버에서, 상기 제1 테이블 및 상기 제2 테이블을 이용하여 상기 각 대상 서비스에 대한 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계를 포함하는, 서비스 모니터링 방법이 제공된다.
상기 서비스 모니터링 방법은, 상기 서비스 장치에서, 상기 대상 서비스의 실행 전, 상기 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입하는 단계를 더 포함할 수 있다.
상기 호출 흐름 정보를 제2 축약키로 변환하는 단계는, 상기 대상 서비스가 실행되는 과정에서 상기 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 상기 기능 블록들의 호출 흐름 정보를 상기 제2 축약키로 변환할 수 있다.
상기 호출 흐름 정보를 제2 축약키로 변환하는 단계는, 출력된 상기 제1 축약키들을 순차적으로 나열함으로써 상기 호출 흐름 정보를 획득하고, 상기 호출 흐름 정보를 상기 제2 축약키로 변환할 수 있다.
상기 제1 축약키는, 상기 텍스트 정보를 해싱함으로써 획득되는 해시값이며, 상기 제2 축약키는, 상기 호출 흐름 정보를 해싱함으로써 획득되는 해시값일 수 있다.
상기 서비스 모니터링 방법은, 상기 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계 이전에, 상기 서비스 장치에서, 출력된 상기 제1 축약키들로부터 획득된 제2 축약키 및 상기 성능 측정 코드에 의해 획득된 상기 기능 블록 각각에 대한 성능 측정 결과값을 상기 모니터링 서버로 전송하는 단계를 더 포함할 수 있다.
상기 성능 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 상기 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함할 수 있다.
상기 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계는, 상기 제1 테이블 및 상기 제2 테이블을 참조하여 상기 서비스 장치로부터 수신된 상기 제2 축약키를 상기 기능 블록 각각에 대한 텍스트 정보로 복원할 수 있다.
상기 프로파일링 정보는, 상기 모니터링 서버에서 복원된 상기 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다.
본 발명의 실시예들에 따르면, 서비스 장치가 대상 서비스의 트랜잭션 내 기능 블록 각각에 대한 모든 텍스트 정보 및 성능 측정 결과값을 모니터링 서버로 전송하는 대신 제2 축약키 및 상기 성능 측정 결과값만을 모니터링 서버로 전송하도록 함으로써, 모니터링 서버로 전송되는 데이터 양을 대폭 줄일 수 있다.
또한, 본 발명의 실시예들에 따르면, 모니터링 서버가 제1 테이블 및 제2 테이블을 이용하여 대상 서비스에 대한 프로파일링 정보를 기능 블록 단위로 획득함으로써, 관리자는 대상 서비스의 트랜잭션 내 전 구간에 대한 모니터링을 수행할 수 있으며 이로 인해 트랜잭션 내 병목 구간을 보다 정확하고 신속하게 찾아낼 수 있다.
도 1은 본 발명의 일 실시예에 따른 서비스 모니터링 시스템의 상세 구성을 나타낸 블록도
도 2는 본 발명의 일 실시예에 따른 서비스 장치의 상세 구성을 나타낸 블록도
도 3은 본 발명의 일 실시예에 따른 제1 테이블의 예시도
도 4는 본 발명의 일 실시예에 따른 제2 테이블의 예시도
도 5는 본 발명의 일 실시예에 따른 모니터링 서버의 상세 구성을 나타낸 블록도
도 6은 본 발명의 일 실시예에 따른 프로파일링 정보의 예시도
도 7은 종래 기술에 따라 모니터링 대상이 되는 자바 트랜잭션의 예시도
도 8은 본 발명의 일 실시예에 따라 모니터링 대상이 되는 자바 트랜잭션의 예시도
도 9는 본 발명의 일 실시예에 따른 서비스 모니터링 방법을 설명하기 위한 흐름도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 서비스 모니터링 시스템(100)의 상세 구성을 나타낸 블록도이다. 도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 서비스 모니터링 시스템(100)은 서비스 장치(102), 모니터링 서버(104), 사용자 단말(106) 및 관리자 단말(108)을 포함하며, 서비스 장치(102), 모니터링 서버(104), 사용자 단말(106) 및 관리자 단말(108)은 네트워크(110)를 통해 상호 연결될 수 있다. 여기서, 네트워크(110)는 이동통신 서비스 제공자에 의하여 제공되는 3G망, 4G망 또는 LTE망, 와이브로망 등의 패킷 통신망, 사내 업무 또는 서비스와 밀접하게 연관된 주체에 의하여 제공되는 사내 인트라넷 등을 모두 포함하는 넓은 의미로 사용된다.
서비스 장치(102)는 사용자에게 제공되는 서비스를 관리하는 서버이다. 서비스 장치(102)는 사용자 단말(106)로부터 서비스 요청 메시지를 수신하고, 이에 대한 응답으로서 상기 서비스를 실행한다. 본 실시예들에 있어서, 서비스는 자바, C++, C# 등과 같은 기계어로 작성된 소프트웨어. 어플리케이션 또는 시스템일 수 있으며, 이와 같은 서비스의 예시로는 “회원 가입” 서비스, “실명 인증” 서비스, “비밀번호 변경” 서비스 등이 될 수 있다. 상기 서비스는 하나 이상의 기능 블록으로 구성될 수 있다. 기능 블록은 클래스(class), 메소드(method), 에스큐엘(SQL : structured query language) 등과 같이 특정 기능을 수행하기 위한 명령어들의 집합을 의미한다.
서비스 장치(102)는 다양한 종류의 서비스를 사용자에게 제공할 수 있으며, 각 서비스는 하나 이상의 기능 블록이 순차적으로 결합된 형태의 트랜잭션(transaction)으로 나타날 수 있다. 이때, 서비스 장치(102)에서 실행되는 서비스의 트랜잭션을 기능 블록 단위로 모니터링하기 위해서는 상기 트랜잭션 내 기능 블록 각각에 대한 텍스트 정보 및 성능 정보가 모니터링 서버(104)로 전송되어야 한다. 그러나, 기능 블록 각각에 대한 텍스트 정보는 그 양이 방대하므로, 상기 트랜잭션 내 모든 기능 블록에 대한 텍스트 정보 및 성능 정보가 모니터링 서버(104)로 전송될 경우 제한된 인프라 자원(네트워크 자원, 서비스 장치(102) 및 모니터링 서버(104)의 CPU, 메모리 등)에서 많은 부하가 발생될 수 있다. 이러한 문제점을 해결하기 위해, 서비스 장치(102)는 트랜잭션 내 일부 기능 블록에 대한 텍스트 정보 및 성능 정보만을 모니터링 서버(104)로 전송할 수 있으나, 이 경우 트랜잭션 내 전 구간에 대한 모니터링이 불가능하게 되어 트랜잭션 내 정확한 병목 구간을 찾아내는 데 어려움이 있을 수 있다. 이에 따라, 본 발명의 실시예들에서는 서비스 장치(102)에서 제1 테이블 및 제2 테이블을 생성하여 모니터링 서버(104)로 전송하고 모니터링 서버(104)에서 상기 제1 테이블 및 제2 테이블을 이용하여 각 서비스의 트랜잭션 내 전 구간을 기능 블록 단위로 모니터링할 수 있도록 하였다.
구체적으로, 서비스 장치(102)는 먼저, 사용자에게 제공되는 서비스 중 모니터링 대상이 되는 서비스(이하, “대상 서비스”라 함)를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하고, 제1 축약키 및 텍스트 정보의 쌍(pair)을 포함하는 제1 테이블을 생성할 수 있다. 여기서, 대상 서비스는 서비스 장치(102)에서 제공되는 모든 서비스가 될 수 있으나 이에 한정되는 것은 아니며, 서비스 장치(102)에서 제공하는 서비스 중 관리자에 의해 지정된 일부 서비스가 대상 서비스가 될 수도 있다. 본 실시예들에 있어서, 기능 블록 각각에 대한 텍스트 정보는 상기 기능 블록을 나타내는 문자열 정보로서, 예를 들어 클래스 이름, 메소드 이름, 데이터베이스의 SQL 명령어 이름, 카산드라(Cassandra)의 쿼리(Query) 명령어 이름 등이 될 수 있다.
서비스 장치(102)는 대상 서비스를 구성하는 기능 블록 각각에 대한 텍스트 정보를 추출하기 위한 문자열 추출 코드를 기능 블록 각각에 삽입함으로써 기능 블록 각각에 대한 텍스트 정보를 추출할 수 있다. 서비스 장치(102)는 예를 들어, 바이트 코드 인스트루먼트(Byte Code Instrument) 기술을 통해 상기 문자열 추출 코드를 각 기능 블록에 삽입할 수 있다. 바이트 코드 인스트루먼트란 서비스 소스 코드(원시 코드)의 수정 없이 서비스의 실행 단계에서 특정 바이트 코드를 동적으로 삽입하는 기술을 의미한다. 바이트 코드는 자바 프로그램의 컴파일된 형태로서 자바 가산 머신에 의하여 실행될 수 있다.
서비스 장치(102)는 추출된 텍스트 정보 각각에 해시 함수를 적용하여 해시값(제1 축약키)을 획득할 수 있다. 여기서, 해시 함수는 예를 들어, SHA-1, SHA-256, SHA-384, MD5 등이 될 수 있다. 서비스 장치(102)는 텍스트 정보에 대한 해시값, 즉 제1 축약키를 키(Key)로 설정하고 이에 대응되는 텍스트 정보를 값(Value)으로 설정한 후 제1 축약키 - 텍스트 정보 쌍(pair)을 포함하는 제1 테이블을 생성할 수 있다. 서비스 장치(102)는 대상 서비스 각각에 대해 위 과정을 반복할 수 있으며, 이에 따라 제1 축약키 - 텍스트 정보 쌍을 제1 테이블에 계속적으로 추가함으로써 제1 테이블을 업데이트할 수 있다.
또한, 서비스 장치(102)는 제1 테이블이 업데이트될 때마다 제1 테이블을 모니터링 서버(104)로 전송할 수 있다. 이에 따라, 서비스 장치(102)에 저장된 제1 테이블과 모니터링 서버(104)에 저장된 제1 테이블이 실시간으로 동기화될 수 있다.
다음으로, 서비스 장치(102)는 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입한다. 서비스 장치(102)는 예를 들어, 바이트 코드 인스트루먼트(BCI) 기술을 이용하여 기능 블록 각각에 축약키 출력 코드 및 성능 측정 코드를 삽입할 수 있다.
축약키 출력 코드는 제1 테이블에 저장된 제1 축약키 중 상기 기능 블록에 대응되는 제1 축약키, 및 상기 제1 축약키를 출력하기 위한 하나 이상의 명령어를 포함할 수 있다. 이에 따라, 기능 블록이 실행되는 경우 상기 기능 블록에 포함된 축약키 출력 코드가 상기 기능 블록에 대응되는 제1 축약키를 출력할 수 있다.
또한, 성능 측정 코드는 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함할 수 있다. 이에 따라, 기능 블록이 실행되는 경우 성능 측정 코드가 상기 기능 블록의 성능 측정 결과값을 출력할 수 있다.
일 예시로서, 대상 서비스 A가 실행되는 경우, 대상 서비스 A를 구성하는 기능 블록인 클래스 1/메소드 1, 클래스 1/메소드 2 및 클래스 1/메소드 3 각각에 대한 제1 축약키 및 성능 측정 결과값이 출력될 수 있다. 이러한 제1 축약키 - 성능 측정 결과값 쌍의 예시는 아래와 같다.
(제1 축약키, 성능 측정 결과값) = (Nb61kIF2Fk, 10ms)
(제1 축약키, 성능 측정 결과값) = (b93LDlFDjh, 23ms)
(제1 축약키, 성능 측정 결과값) = (Qlka3ioD3O, 20ms)
다음으로, 서비스 장치(102)는 대상 서비스가 실행되는 과정에서 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 대상 서비스의 트랜잭션 내 기능 블록들의 호출 흐름 정보를 제2 축약키로 변환하고, 제2 축약키 및 호출 흐름 정보의 쌍(pair)을 포함하는 제2 테이블을 생성할 수 있다. 여기서, 호출 흐름 정보는 대상 서비스가 실행되는 과정에서 대상 서비스의 트랜잭션 내 기능 블록들이 호출(또는 실행)되는 순서를 나타내는 정보이다. 서비스 장치(102)는 축약키 출력 코드에 의해 출력된 제1 축약키들을 순차적으로 나열함으로써 호출 흐름 정보를 획득하고, 순차적으로 나열된 제1 축약키들(즉, 호출 흐름 정보)에 해시 함수를 적용하여 해시값(제2 축약키)을 획득할 수 있다. 여기서, 해시 함수는 예를 들어, SHA-1, SHA-256, SHA-384, MD5 등이 될 수 있다. 서비스 장치(102)는 호출 흐름 정보에 대한 해시값, 즉 제2 축약키를 키(Key)로 설정하고 이에 대응되는 호출 흐름 정보를 값(Value)으로 설정한 후 제2 축약키 - 호출 흐름 정보 쌍(pair)을 포함하는 제2 테이블을 생성할 수 있다. 또한, 서비스 장치(102)는 제2 축약키 획득시 제2 축약키가 제2 테이블에 존재하는지의 여부를 조회할 수 있다. 만약, 상기 제2 축약키가 제2 테이블에 존재하지 않는 경우, 서비스 장치(102)는 상기 제2 축약키 - 호출 흐름 정보 쌍을 제2 테이블에 추가함으로써 제2 테이블을 업데이트할 수 있다. 만약, 상기 제2 축약키가 제2 테이블에 존재하는 경우, 서비스 장치(102)는 제2 테이블에 저장된 상기 제2 축약키 - 호출 흐름 정보 쌍을 로드(load)할 수 있다.
또한, 서비스 장치(102)는 제2 테이블이 업데이트될 때마다 제2 테이블을 모니터링 서버(104)로 전송할 수 있다. 이에 따라, 서비스 장치(102)에 저장된 제2 테이블과 모니터링 서버(104)에 저장된 제2 테이블이 실시간으로 동기화될 수 있다.
이러한 제2 축약키 - 호출 흐름 정보 쌍의 예시는 아래와 같다.
(제2 축약키, 호출 흐름 정보) = (Bdfk, Nb61kIF2Fk|b93LDlFDjh|Qlka3ioD3O)
여기서, Nb61kIF2라는 클래스 1/메소드 1에 대한 제1 축약키, b93LDlFDjh는 클래스 1/메소드 2에 대한 제1 축약키, Qlka3ioD3O는 클래스 1/메소드 3에 대한 제1 축약키의 예시이며, |는 나열된 제1 축약키들을 구분하기 위한 구분자의 예시이다.
다음으로, 서비스 장치(102)는 축약키 출력 코드에 의해 출력된 제1 축약키들로부터 획득된 제2 축약키 및 성능 측정 코드에 의해 획득된 기능 블록 각각에 대한 성능 측정 결과값을 모니터링 서버(104)로 전송한다. 즉, 본 발명의 실시예들에 따르면, 서비스 장치(102)가 대상 서비스의 트랜잭션 내 기능 블록 각각에 대한 모든 텍스트 정보 및 성능 측정 결과값을 모니터링 서버(104)로 전송하는 대신 제2 축약키 및 상기 성능 측정 결과값만을 모니터링 서버(104)로 전송하도록 함으로써, 모니터링 서버(104)로 전송되는 데이터 양을 대폭 줄일 수 있다.
모니터링 서버(104)는 대상 서비스에 대한 프로파일링 정보를 획득하고, 이를 관리자 단말(108)로 전송하는 서버이다. 본 실시예들에 있어서, 프로파일링이란 트랜잭션의 구성 요소 단위별(즉, 기능 블록별) 성능 측정과 병목 구간 확인을 목적으로 기능 블록(메소드, SQL 등)별 실행 시작 시간, 실행 종료 시간, 응답 시간 등의 정보를 수집하는 행위를 의미한다. 또한, 후술할 바와 같이, 프로파일링 정보는 모니터링 서버(104)에서 복원된 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다.
상술한 바와 같이, 모니터링 서버(104)는 서비스 장치(102)로부터 제1 테이블 및 제2 테이블을 각각 수신할 수 있다. 이때, 모니터링 서버(104)는 서비스 장치(102)로부터 수신된 제1 테이블 및 제2 테이블을 내부 데이터베이스에 각각 저장할 수 있다. 또한, 모니터링 서버(104)는 서비스 장치(102)에 저장된 제1 테이블 및 제2 테이블이 업데이트될 때마다 서비스 장치(102)로부터 업데이트된 제1 테이블 및 제2 테이블(또는 제1 테이블 및 제2 테이블 상의 업데이트된 정보)를 수신할 수 있다. 이에 따라, 모니터링 서버(104)에 저장된 제1 테이블 및 제2 테이블과 서비스 장치(102)에 저장된 제1 테이블 및 제2 테이블이 동기화될 수 있다.
또한, 모니터링 서버(104)는 현재 실행되고 있는 대상 서비스에 대한 제2 축약키 및 상기 대상 서비스의 기능 블록 각각에 대한 성능 측정 결과값을 서비스 장치(102)로부터 수신할 수 있다. 모니터링 서버(104)는 모니터링 서버(104)에 저장된 제1 테이블 및 제2 테이블을 참조하여 서비스 장치(102)로부터 수신된 제2 축약키를 기능 블록 각각에 대한 텍스트 정보로 복원할 수 있다. 구체적으로, 모니터링 서버(104)는 제2 테이블을 참조하여 서비스 장치(102)로부터 수신된 제2 축약키를 순차적으로 나열된 제1 축약키들로 복원하고, 제1 테이블을 참조하여 상기 제1 축약키들 각각을 대응되는 기능 블록에 대한 텍스트 정보로 복원할 수 있다. 상술한 바와 같이, 모니터링 서버(104)에 저장된 제1 테이블 및 제2 테이블은 서비스 장치(102)에 저장된 제1 테이블 및 제2 테이블과 실시간으로 동기화되므로, 모니터링 서버(104)는 제1 테이블 및 제2 테이블을 이용하여 서비스 장치(102)로부터 수신된 제2 축약키를 기능 블록에 대한 텍스트 정보로 복원할 수 있다. 이때, 모니터링 서버(104)에서 복원된 제1 축약키들은 기능 블록의 호출 흐름 순으로 나열되므로, 복원된 텍스트 정보 또한 기능 블록의 호출 흐름 순으로 나열될 수 있다. 따라서, 모니터링 서버(104)에서 복원된 텍스트 정보 각각은 서비스 장치(102)로부터 수신된 기능 블록 각각에 대한 성능 측정 결과값에 순차적으로 대응될 수 있다.
본 발명의 실시예들에 있어서, 상기 대상 서비스에 대한 프로파일링 정보는 모니터링 서버(104)에서 복원된 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다. 모니터링 서버(104)는 획득된 프로파일링 정보를 관리자 단말(108)로 전송할 수 있으며, 관리자는 관리자 단말(108)을 통해 상기 프로파일링 정보를 모니터링할 수 있다.
즉, 본 발명의 실시예들에 따르면, 모니터링 서버(104)가 제1 테이블 및 제2 테이블을 이용하여 대상 서비스에 대한 프로파일링 정보를 기능 블록 단위로 획득함으로써, 관리자는 대상 서비스의 트랜잭션 내 전 구간에 대한 모니터링을 수행할 수 있으며 이로 인해 트랜잭션 내 병목 구간을 보다 정확하고 신속하게 찾아낼 수 있다.
사용자 단말(106)은 사용자가 소지 또는 취급하는 단말로서, 사용자의 입력에 따라 서비스 장치(102)로 서비스 요청 메시지를 전송할 수 있다. 사용자 단말(106)은 예를 들어, 데스크탑, 노트북, 태블릿 PC, 스마트폰 등이 될 수 있다. 서비스 장치(102)는 사용자 단말(106)로부터 서비스 요청 메시지를 수신하고, 이에 대한 응답으로서 상기 서비스를 실행할 수 있다.
관리자 단말(108)은 관리자가 소지 또는 취급하는 단말로서, 관리자의 입력에 따라 서비스 장치(102)로 서비스 가동 메시지를 전송할 수 있다. 서비스 장치(102)는 관리자 단말(108)로부터 서비스 가동 메시지를 수신하고, 이에 따라 서비스의 가동 준비를 수행할 수 있다. 본 실시예들에 있어서, 서비스의 가동 준비란 대상 서비스의 실행 전에 제1 테이블을 생성하고 축약키 출력 코드 및 성능 측정 코드를 대상 서비스에 대한 기능 블록 각각에 삽입하는 행위를 의미한다.
또한, 관리자 단말(108)은 모니터링 서버(104)로부터 대상 서비스에 대한 프로파일링 정보를 수신할 수 있으며, 관리자는 관리자 단말(108)을 통해 상기 프로파일링 정보를 모니터링할 수 있다. 이때, 관리자 단말(108)은 상기 프로파일링 정보를 기능 블록 단위로 디스플레이할 수 있다. 예를 들어, 관리자 단말(108)은 기능 블록에 대한 텍스트 정보 - 성능 측정 결과값(예를 들어, 응답 시간) 쌍을 각 기능 블록별로 디스플레이할 수 있다. 이에 따라, 관리자는 어느 기능 블록이 병목 구간에 해당하는지를 보다 정확하고 신속하게 파악할 수 있다. 또한, 관리자 단말(108)은 각 기능 블록에 대한 성능 측정 결과값 중 설정된 범위를 벗어나는 성능 측정 결과값과 이에 대응되는 텍스트 정보를 선별하여 디스플레이할 수도 있다.
도 2는 본 발명의 일 실시예에 따른 서비스 장치(102)의 상세 구성을 나타낸 블록도이다. 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 서비스 장치(102)는 제1 테이블 생성부(202), 제1 테이블 저장소(204), 코드 삽입부(206), 서비스 실행부(208), 제2 테이블 생성부(210) 및 제2 테이블 저장소(212)를 포함한다.
제1 테이블 생성부(202)는 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하고, 상기 제1 축약키 및 텍스트 정보의 쌍을 포함하는 제1 테이블을 생성한다. 대상 서비스의 실행 전, 제1 테이블 생성부(202)는 관리자 단말(108)로부터 서비스 가동 메시지를 수신하고, 이에 따라 제1 테이블을 생성할 수 있다. 제1 테이블 생성부(202)는 대상 서비스를 구성하는 기능 블록 각각에 대한 텍스트 정보를 추출하기 위한 문자열 추출 코드를 기능 블록 각각에 삽입함으로써 기능 블록 각각에 대한 텍스트 정보를 추출할 수 있다. 일 예시로서, 제1 테이블 생성부(202)는 클래스, 메소드 이름을 획득하기 위해 Servlet Method 에 문자열 추출 코드를 삽입하고, 데이터베이스의 SQL 명령어 이름을 획득하기 위해 PrepareStatment Method 에 문자열 추출 코드를 삽입하며, 카산드라의 쿼리 명령어를 획득하기 위해 Query_1 Method 에 문자열 추출 코드를 삽입할 수 있다. 또한, 제1 테이블 생성부(202)는 추출된 텍스트 정보 각각에 해시 함수를 적용하여 해시값(제1 축약키)을 획득하고, 제1 축약키 - 텍스트 정보 쌍을 포함하는 제1 테이블을 생성하여 제1 테이블 저장소(204)에 저장할 수 있다. 제1 테이블 생성부(202)는 대상 서비스 각각에 대해 위 과정을 반복 수행하고, 제1 축약키 - 텍스트 정보 쌍을 제1 테이블에 계속적으로 추가함으로써 제1 테이블 저장소(204)에 저장된 제1 테이블을 업데이트할 수 있다.
또한, 제1 테이블 생성부(202)는 제1 테이블이 업데이트될 때마다 제1 테이블을 모니터링 서버(104)로 전송할 수 있다. 이에 따라, 제1 테이블 저장소(204)에 저장된 제1 테이블과 모니터링 서버(104)에 저장된 제1 테이블이 실시간으로 동기화될 수 있다.
다음은 제1 테이블 생성부(202)에 의해 SQL 정보가 제1 테이블에 추가되는 과정을 나타낸 예시적인 소스 코드이다. 여기서, 굵은 글씨로 나타낸 부분이 아래 1 내지 4의 기능을 수행하는 소스 코드이다.
1. BCI 의 MethodVisitor 를 사용하여 prepareStatement 에 문자열 추출 코드의 삽입 위치 선정
public MethodVisitor visitMethod(final int access, final String name,
final String desc, final String signature, final String[] exceptions) {
MethodVisitor mv = cv . visitMethod(access, name, desc, signature,exceptions);
if( mv != null && name.equals("prepareStatement") ){
mv = new JdbcPrepareMethodVisitor(mv, access, name, desc);
}
return mv == null null : mv;
}
...중략
2. "prepareStatement" Method 가 실행될 때 문자열 추출 코드의 삽입 시작
protected JdbcPrepareMethodVisitor( MethodVisitor mv, int access, String name, String desc) {
super(ASM4, mv, access, name, desc);
}
...중략
3. prepareStatment 의 END 단계에서 매개변수로 넘어오는 SQL 정보 추출
public static void _endPrepareTrace(String sql, long startTime){
...중략
Result result = CacheHelper .put(sql, TcpOpcodes.SQL_CACHE_SEND);
}
...중략
4. java.Object 클래스의 hash 함수를 이용하여 제1 축약키(n byte key) 생성 및 제1 테이블에 추가
public Result put(T value) {
final Result find = this.cache.get(value);
if (find != null) {
return find;
}
final int newId = value.hashCode();
final Result result = new Result(false, newId);
final Result before = this.cache.putIfAbsent(value, result);
if (before != null) {
return before;
}
return new Result(true, newId);
}
제1 테이블 저장소(204)는 제1 테이블 생성부(202)에서 생성된 제1 테이블이 저장되는 저장소이다. 제1 테이블 생성부(202)는 제1 테이블을 생성하여 제1 테이블 저장소(204)에 저장할 수 있으며, 새로운 제1 축약키 - 텍스트 정보 쌍을 획득할 때마다 제1 테이블 저장소(204)에 저장된 제1 테이블을 업데이트할 수 있다.
코드 삽입부(206)는 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입한다. 상술한 바와 같이, 대상 블록의 트랜잭션 내 각 기능 블록에 대한 텍스트 정보는 제1 축약키로 표현될 수 있다. 대상 서비스의 실행 전, 코드 삽입부(206)는 바이트 코드 인스트루먼트(BCI) 기술을 이용하여 기능 블록 각각에 축약키 출력 코드 및 성능 측정 코드를 삽입할 수 있다. 이에 따라, 기능 블록이 실행되는 경우, 상기 기능 블록에 포함된 축약키 출력 코드가 상기 기능 블록에 대응되는 제1 축약키를 출력할 수 있으며, 상기 기능 블록에 포함된 성능 측정 코드가 상기 기능 블록의 성능 측정 결과값을 출력할 수 있다. 여기서, 성능 측정 코드는 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함할 수 있다.
서비스 실행부(212)는 사용자 단말(106)로부터 서비스 요청 메시지를 수신하고, 이에 대한 응답으로서 대상 서비스를 실행한다. 대상 서비스는 예를 들어, “회원 가입” 서비스, “실명 인증” 서비스, “비밀번호 변경” 서비스 등이 될 수 있다.
제2 테이블 생성부(210)는 대상 서비스가 실행되는 과정에서 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 기능 블록들의 호출 흐름 정보를 제2 축약키로 변환하고, 상기 제2 축약키 및 호출 흐름 정보의 쌍을 포함하는 제2 테이블을 생성한다. 각 대상 서비스는 일반적으로 서비스 시작시 대상 서비스의 트랜잭션 내 기능 블록들이 동일한 호출 흐름 정보를 가지면서 실행된다. 이에 따라, 본 발명의 실시예들에서는 호출 흐름 정보의 중복성을 이용하여 모니터링 서버(104)로 전송되는 데이터의 양을 대폭 줄이도록 구성하였다.
구체적으로, 제2 테이블 생성부(210)는 축약키 출력 코드에 의해 출력된 제1 축약키들을 순차적으로 나열함으로써 호출 흐름 정보를 획득하고, 순차적으로 나열된 제1 축약키들(즉, 호출 흐름 정보)에 해시 함수를 적용하여 해시값(제2 축약키)을 획득할 수 있다. 제2 테이블 생성부(210)는 획득된 제2 축약키가 제2 테이블에 존재하는지의 여부를 제2 테이블 저장소(212)에 조회할 수 있으며, 상기 제2 축약키가 제2 테이블에 존재하지 않는 경우 상기 제2 축약키 - 호출 흐름 정보 쌍을 제2 테이블에 추가함으로써 제2 테이블을 업데이트할 수 있다.
또한, 제2 테이블 생성부(210는 제2 테이블이 업데이트될 때마다 제2 테이블을 모니터링 서버(104)로 전송할 수 있다. 이에 따라, 제2 테이블 저장소(212)에 저장된 제2 테이블과 모니터링 서버(104)에 저장된 제2 테이블이 실시간으로 동기화될 수 있다. 또한, 제2 테이블 생성부(210)는 제2 테이블 저장소(212)의 오버플로우(Overflow)를 방지하기 위해 제2 테이블의 값(Value)에 포함된 제1 축약키들의 개수에 제한을 둘 수 있다. 예를 들어, 제2 테이블의 값(Value)에 포함된 제1 축약키들의 개수가 100개 이상이 되는 경우, 제2 테이블 생성부(210)는 제2 테이블의 값에 제1 축약키들을 더 이상 포함시키지 않을 수 있다.
또한, 제2 테이블 생성부(210)는 모니터링 서버(104)를 주기적으로 헬스 체크(Health Check)하여 모니터링 서버(104)의 장애 여부를 판단할 수 있다. 만약, 모니터링 서버(104)에 장애가 발생한 것으로 판단되는 경우, 제2 테이블 생성부(210)는 모니터링 서버(104)에 장애가 발생한 것으로 판단되는 시점부터 서비스 장치(102)에 저장된 제2 테이블과 모니터링 서버(104)에 저장된 제2 테이블이 불일치하는 것으로 판단할 수 있다. 이에 따라, 모니터링 서버(104)의 장애가 치유된 이후, 제2 테이블 생성부(210)는 모니터링 서버(104)에 장애가 발생한 것으로 판단되는 시점부터 서비스 장치(102)에 저장된 제2 테이블과 모니터링 서버(104)에 저장된 제2 테이블을 동기화시킬 수 있으며, 이 경우 서비스 장치(102)에 저장된 제2 테이블과 모니터링 서버(104)에 저장된 제2 테이블 간에 완벽한 동기화가 이루어지게 된다. 이러한 헬스 체크 과정은 상술한 제1 테이블 생성부(202)에 의해서도 동일하게 수행될 수 있으며, 이 경우 서비스 장치(102)에 저장된 제1 테이블과 모니터링 서버(104)에 저장된 제1 테이블 간에 완벽한 동기화가 이루어지게 된다.
제2 테이블 저장소(212)는 제2 테이블 생성부(210)에서 생성된 제2 테이블이 저장되는 저장소이다. 제2 테이블 생성부(210)는 제2 테이블을 생성하여 제2 테이블 저장소(212)에 저장할 수 있으며, 새로운 제2 축약키 - 호출 흐름 정보 쌍을 획득할 때마다 제2 테이블 저장소(212)에 저장된 제2 테이블을 업데이트할 수 있다.
도 3은 본 발명의 일 실시예에 따른 제1 테이블의 예시도이다. 도 3에 도시된 바와 같이, 제1 테이블은 기능 블록 각각에 대한 제1 축약키(Key) - 텍스트 정보(Value) 쌍들을 포함할 수 있다. 제1 축약키는 예를 들어, 하나 이상의 문자, 숫자, 또는 이들의 조합으로 이루어질 수 있다. 도 3에서는 제1 축약키가 10바이트의 크기를 갖는 문자 및 숫자의 조합으로 이루어지는 것으로 도시하였으나 이에 한정되는 것은 아니다. 또한, 기능 블록에 대한 텍스트 정보는 예를 들어, 클래스 이름, 메소드 이름, 데이터베이스의 SQL 명령어 이름, 카산드라(Cassandra)의 쿼리(Query) 명령어 이름 등이 될 수 있다.
상술한 바와 같이, 제1 테이블 생성부(202)는 추출된 텍스트 정보 각각에 해시 함수를 적용하여 해시값을 획득하고, 상기 해시값을 제1 축약키로 설정함으로써 긴 문자열로 이루어지는 텍스트 정보를 약 10바이트의 짧은 문자열로 축약할 수 있다. 이렇게 생성된 제1 축약키는 상술한 제2 테이블의 값(Value)의 일부로 사용될 수 있다.
도 4는 본 발명의 일 실시예에 따른 제2 테이블의 예시도이다. 도 4에 도시된 바와 같이, 제2 테이블은 제2 축약키(Key) - 호출 흐름 정보(Value) 쌍들을 포함할 수 있다. 상술한 바와 같이, 제2 테이블 생성부(210)는 대상 서비스가 실행되는 과정에서 축약키 출력 코드에 의해 출력된 제1 축약키들을 순차적으로 나열함으로써 호출 흐름 정보를 획득하고, 순차적으로 나열된 제1 축약키들(즉, 호출 흐름 정보)에 해시 함수를 적용하여 해시값을 획득할 수 있다. 이때, 순차적으로 나열된 제1 축약키들의 해시값이 제2 축약키가 되며, 순차적으로 나열된 제1 축약키들이 제2 테이블의 값이 된다. 제2 축약키는 예를 들어, 하나 이상의 문자, 숫자, 또는 이들의 조합으로 이루어질 수 있다. 도 4에서는 제2 축약키가 4바이트의 크기를 갖는 문자 및 숫자의 조합으로 이루어지는 것으로 도시하였으나 이에 한정되는 것은 아니다.
도 5는 본 발명의 일 실시예에 따른 모니터링 서버(104)의 상세 구성을 나타낸 블록도이다. 도 5에 도시된 바와 같이, 모니터링 서버(104)는 복원부(502), 제1 테이블 저장소(504) 및 제2 테이블 저장소(506)를 포함한다.
복원부(502)는 제1 테이블 저장소(504)에 저장된 제1 테이블 및 제2 테이블 저장소(506)에 저장된 제2 테이블을 이용하여 현재 실행되고 있는 대상 서비스에 대한 프로파일링 정보를 획득한다. 상술한 바와 같이, 서비스 장치(102)는 서비스 장치(102)에 저장된 제1 테이블 및 제2 테이블을 모니터링 서버(104)에 실시간으로 전송할 수 있으며, 서비스 장치(102)로부터 수신된 제1 테이블 및 제2 테이블은 제1 테이블 저장소(504) 및 제2 테이블 저장소(506)에 각각 저장될 수 있다. 이에 따라, 서비스 장치(102)에 저장된 제1 테이블 및 제2 테이블은 모니터링 서버(104)에 저장된 제1 테이블 및 제2 테이블과 실시간으로 동기화될 수 있다.
복원부(502)는 현재 실행되고 있는 대상 서비스에 대한 제2 축약키 및 상기 대상 서비스의 기능 블록 각각에 대한 성능 측정 결과값을 서비스 장치(102)로부터 수신할 수 있으며, 제1 테이블 저장소(504)에 저장된 제1 테이블 및 제2 테이블 저장소(506)에 저장된 제2 테이블을 참조하여 서비스 장치(102)로부터 수신된 제2 축약키를 기능 블록 각각에 대한 텍스트 정보로 복원할 수 있다. 구체적으로, 복원부(502)는 제2 테이블을 참조하여 서비스 장치(102)로부터 수신된 제2 축약키를 순차적으로 나열된 제1 축약키들로 복원하고, 제1 테이블을 참조하여 상기 제1 축약키들 각각을 대응되는 기능 블록에 대한 텍스트 정보로 복원할 수 있다. 모니터링 서버(104)에서 복원된 텍스트 정보 각각은 서비스 장치(102)로부터 수신된 기능 블록 각각에 대한 성능 측정 결과값에 순차적으로 대응될 수 있다. 이에 따라, 프로파일링 정보는 모니터링 서버(104)에서 복원된 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다.
복원부(502)는 프로파일링 정보를 관리자 단말(108)로 전송할 수 있으며, 관리자는 관리자 단말(108)을 통해 상기 프로파일링 정보를 모니터링할 수 있다.
제1 테이블 저장소(504)는 서비스 장치(102)로부터 수신된 제1 테이블이 저장되는 저장소이다. 서비스 장치(102)는 새로운 제1 축약키 - 텍스트 정보 쌍을 획득할 때마다 서비스 장치(102)에 저장된 제1 테이블을 업데이트하고 이를 모니터링 서버(104)에 전송할 수 있다.
제2 테이블 저장소(506)는 서비스 장치(102)로부터 수신된 제2 테이블이 저장되는 저장소이다. 서비스 장치(102)는 새로운 제2 축약키 - 호출 흐름 정보 쌍을 획득할 때마다 서비스 장치(102)에 저장된 제2 테이블을 업데이트하고 이를 모니터링 서버(104)에 전송할 수 있다. 제1 테이블 저장소(504)에 저장된 제1 테이블 및 제2 테이블 저장소(506)에 저장된 제2 테이블은 복원부(502)가 서비스 장치(102)로부터 수신된 제2 축약키를 제1 축약키들 및 기능 블록 각각에 대한 텍스트 정보로 복원하는 데 사용될 수 있다.
도 6은 본 발명의 일 실시예에 따른 프로파일링 정보의 예시도이다. 도 6에 도시된 바와 같이, 프로파일링 정보는 모니터링 서버(104)에서 복원된 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다. 여기서, 성능 측정 결과값은 예를 들어, 성능 측정 코드에 의해 획득된 기능 블록 각각에 대한 응답 시간(ms)일 수 있다. 모니터링 서버(104)는 프로파일링 정보를 관리자 단말(108)로 전송할 수 있으며, 관리자는 관리자 단말(108)을 통해 상기 프로파일링 정보를 모니터링할 수 있다. 이에 따라, 관리자는 대상 서비스의 트랜잭션 내 전 구간에 대한 모니터링을 수행할 수 있으며 이로 인해 트랜잭션 내 병목 구간을 보다 정확하고 신속하게 찾아낼 수 있다.
도 7은 종래 기술에 따라 모니터링 대상이 되는 자바 트랜잭션의 예시도이며, 도 8은 본 발명의 일 실시예에 따라 모니터링 대상이 되는 자바 트랜잭션의 예시도이다. 여기서는, 사용자가 서비스 장치(102)에서 제공하는 웹 기반의 서비스를 제공 받기 위해 “회원 가입” 서비스를 서비스 장치(102)에 요청한 것으로 가정한다.
먼저, 도 7에 도시된 바와 같이, 종래 기술에 따르면 자바 트랜잭션 내 설정된 기능 블록(예를 들어, 사용자 ID 중복 여부 조회 SQL 실행 블록, 실명 인증 메소드 실행 블록, 회원정보 삽입 SQL 실행 블록)에 대해서만 모니터링이 가능하다. 즉, 종래 기술에 따르면, 트랜잭션 내 전 구간에 대한 모니터링이 불가능하므로 모니터링 범위 밖에서 문제가 발생할 경우 상기 문제에 대한 원인 분석을 할 수 없으며, 이에 따라 트랜잭션 내 정확한 병목 구간을 찾아내는 데 어려움이 있을 수 밖에 없다.
다음으로, 도 8에 도시된 바와 같이, 본 발명의 실시예들에 따르면 자바 트랜잭션 내 전 구간을 기능 블록 단위로 모니터링할 수 있으며, 이에 따라 관리자는 자바 트랜잭션 내 병목 구간을 보다 정확하고 신속하게 찾아낼 수 있다.
도 9는 본 발명의 일 실시예에 따른 서비스 모니터링 방법을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
S902 단계에서, 관리자 단말(108)은 서비스 가동 메시지를 서비스 장치(102)로 전송한다.
S904 단계에서, 서비스 장치(102)는 관리자 단말(108)로부터 서비스 가동 메시지를 수신함에 따라 제1 테이블을 생성한다. 이를 위해, 서비스 장치(102)는 문자열 추출 코드를 대상 서비스를 구성하는 기능 블록 각각에 삽입함으로써 기능 블록 각각에 대한 텍스트 정보를 추출하고, 추출된 텍스트 정보 각각에 해시 함수를 적용하여 해시값(제1 축약키)을 획득할 수 있다. 이에 따라, 서비스 장치(102)는 제1 축약키 및 텍스트 정보의 쌍을 포함하는 제1 테이블을 생성하고 이를 내부 데이터베이스에 저장할 수 있다.
S906 단계에서, 서비스 장치(102)는 제1 테이블을 모니터링 서버(104)로 전송할 수 있다. 모니터링 서버(104)는 서비스 장치(102)로부터 수신된 제1 테이블을 내부 데이터베이스에 저장할 수 있으며, 이에 따라 서비스 장치(102)에 저장된 제1 테이블과 모니터링 서버(1040에 저장된 제1 테이블이 동기화될 수 있다.
S908 단계에서, 서비스 장치(102)는 기능 블록 각각에 축약키 출력 코드 및 성능 측정 코드를 삽입한다. 이에 따라, 후술할 S912 및 S914 단계에서 대상 서비스가 시작됨에 따라 기능 블록이 실행되는 경우, 상기 기능 블록에 포함된 축약키 출력 코드가 상기 기능 블록에 대응되는 제1 축약키를 출력할 수 있으며, 상기 기능 블록에 포함된 성능 측정 코드가 상기 기능 블록의 성능 측정 결과값을 출력할 수 있다.
S910 단계에서, 서비스 장치(102)는 사용자 단말(106)로부터 서비스 요청 메시지를 수신한다.
S912 단계에서, 서비스 장치(102)는 사용자 단말(106)의 서비스 요청 메시지에 따라 상기 서비스 요청 메시지에 대응되는 서비스를 실행한다.
S914 단계에서, 상기 서비스의 트랜잭션 내 기능 블록들이 순차적으로 실행됨에 따라 축약키 출력 코드 및 성능 측정 코드에 의해 상기 기능 블록에 대응되는 제1 축약키 및 성능 측정 결과값이 출력될 수 있다.
S916 단계에서, 서비스 장치(102)는 출력된 제1 축약키들을 이용하여 제2 축약키를 획득한다. 구체적으로, 서비스 장치(102)는 출력된 제1 축약키들을 순차적으로 나열함으로써 기능 블록들의 호출 흐름 정보를 획득하고, 획득된 호출 흐름 정보를 해싱함으로써 제2 축약키를 획득할 수 있다.
S918 단계에서, 서비스 장치(102)는 제2 축약키 및 호출 흐름 정보의 쌍(pair)을 포함하는 제2 테이블을 생성한다. 또한, 서비스 장치(102)는 S916 단계에서 획득된 제2 축약키가 제2 테이블에 존재하는지의 여부를 조회한 후 상기 제2 축약키가 제2 테이블에 존재하지 않는 경우 상기 제2 축약키 - 호출 흐름 정보 쌍을 제2 테이블에 추가함으로써 제2 테이블을 업데이트할 수도 있다.
S920 단계에서, 서비스 장치(102)는 서비스 장치(102)에 저장된 제2 테이블, S914 및 S916 단계에서 획득된 제2 축약키 및 성능 측정 결과값을 모니터링 서버(104)로 전송한다.
S922 단계에서, 모니터링 서버(104)는 서비스 장치(102)로부터 수신된 제1 테이블 및 제2 테이블을 이용하여 대상 서비스에 대한 프로파일링 정보를 기능 블록 단위로 획득한다. 구체적으로, 모니터링 서버(104)는 서비스 장치(102)로부터 수신된 제1 테이블 및 상기 제2 테이블을 참조하여 서비스 장치(102)로부터 수신된 제2 축약키를 기능 블록 각각에 대한 텍스트 정보로 복원할 수 있다. 이에 따라, 프로파일링 정보는 모니터링 서버(104)에서 복원된 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함할 수 있다.
S924 단계에서, 모니터링 서버(104)는 프로파일링 정보를 관리자 단말(108)로 전송한다. 이에 따라, 관리자는 대상 서비스의 트랜잭션 내 전 구간에 대한 모니터링을 수행할 수 있으며 이로 인해 트랜잭션 내 병목 구간을 보다 정확하고 신속하게 찾아낼 수 있다.
또한, S926 단계에서, 서비스 장치(102)는 사용자 단말(106)의 서비스 요청에 따른 응답을 수행할 수 있다.
한편, S902 단계 내지 S908 단계는 대상 서비스의 실행 전에 수행될 수 있으며, S914 단계 내지 S926 단계는 대상 서비스의 실행 과정 중 또는 실행 이후 수행될 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100 : 서비스 모니터링 시스템
102 : 서비스 장치
104 : 모니터링 서버
106 : 사용자 단말
108 : 관리자 단말
202 : 제1 테이블 생성부
204, 504 : 제1 테이블 저장소
206 : 코드 삽입부
208 : 서비스 실행부
210 : 제2 테이블 생성부
212, 506 : 제2 테이블 저장소
502 : 복원부

Claims (18)

  1. 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하고, 상기 제1 축약키 및 상기 텍스트 정보의 쌍(pair)을 제1 테이블에 추가하며, 상기 대상 서비스가 실행되는 과정에서 상기 기능 블록들이 호출되는 순서를 나타내는 호출 흐름 정보를 제2 축약키로 변환하고, 상기 제2 축약키 및 상기 호출 흐름 정보의 쌍을 제2 테이블에 추가하는 서비스 장치; 및
    상기 서비스 장치로부터 상기 제1 테이블 및 상기 제2 테이블을 수신하고, 상기 제1 테이블 및 상기 제2 테이블을 이용하여 상기 각 대상 서비스에 대한 프로파일링 정보를 상기 기능 블록 단위로 획득하는 모니터링 서버를 포함하는, 서비스 모니터링 시스템.
  2. 청구항 1에 있어서,
    상기 서비스 장치는, 상기 대상 서비스의 실행 전, 상기 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입하는, 서비스 모니터링 시스템.
  3. 청구항 2에 있어서,
    상기 서비스 장치는, 상기 대상 서비스가 실행되는 과정에서 상기 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 상기 기능 블록들의 호출 흐름 정보를 상기 제2 축약키로 변환하는, 서비스 모니터링 시스템.
  4. 청구항 3에 있어서,
    상기 서비스 장치는, 출력된 상기 제1 축약키들을 순차적으로 나열함으로써 상기 호출 흐름 정보를 획득하고, 상기 호출 흐름 정보를 상기 제2 축약키로 변환하는, 서비스 모니터링 시스템.
  5. 청구항 4에 있어서,
    상기 제1 축약키는, 상기 텍스트 정보를 해싱함으로써 획득되는 해시값이며,
    상기 제2 축약키는, 상기 호출 흐름 정보를 해싱함으로써 획득되는 해시값인, 서비스 모니터링 시스템.
  6. 청구항 3에 있어서,
    상기 서비스 장치는, 출력된 상기 제1 축약키들로부터 획득된 제2 축약키 및 상기 성능 측정 코드에 의해 획득된 상기 기능 블록 각각에 대한 성능 측정 결과값을 상기 모니터링 서버로 전송하는, 서비스 모니터링 시스템.
  7. 청구항 6에 있어서,
    상기 성능 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 상기 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함하는, 서비스 모니터링 시스템.
  8. 청구항 6에 있어서,
    상기 모니터링 서버는, 상기 제1 테이블 및 상기 제2 테이블을 참조하여 상기 서비스 장치로부터 수신된 상기 제2 축약키를 상기 기능 블록 각각에 대한 텍스트 정보로 복원하는, 서비스 모니터링 시스템.
  9. 청구항 8에 있어서,
    상기 프로파일링 정보는, 상기 모니터링 서버에서 복원된 상기 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함하는, 서비스 모니터링 시스템.
  10. 서비스 장치에서, 각 대상 서비스를 구성하는 하나 이상의 기능 블록 각각에 대한 텍스트 정보를 제1 축약키로 변환하는 단계;
    상기 서비스 장치에서, 상기 제1 축약키 및 상기 텍스트 정보의 쌍(pair)을 제1 테이블에 추가하는 단계;
    상기 서비스 장치에서, 상기 대상 서비스가 실행되는 과정에서 상기 기능 블록들이 호출되는 순서를 나타내는 호출 흐름 정보를 제2 축약키로 변환하는 단계;
    상기 서비스 장치에서, 상기 제2 축약키 및 상기 호출 흐름 정보의 쌍을 제2 테이블에 추가하는 단계;
    모니터링 서버에서, 상기 서비스 장치로부터 상기 제1 테이블 및 상기 제2 테이블을 수신하는 단계; 및
    상기 모니터링 서버에서, 상기 제1 테이블 및 상기 제2 테이블을 이용하여 상기 각 대상 서비스에 대한 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계를 포함하는, 서비스 모니터링 방법.
  11. 청구항 10에 있어서,
    상기 서비스 장치에서, 상기 대상 서비스의 실행 전, 상기 기능 블록 각각에 상기 기능 블록에 대응되는 제1 축약키를 출력하기 위한 축약키 출력 코드 및 상기 기능 블록의 성능을 측정하기 위한 성능 측정 코드를 삽입하는 단계를 더 포함하는, 서비스 모니터링 방법.
  12. 청구항 11에 있어서,
    상기 호출 흐름 정보를 제2 축약키로 변환하는 단계는, 상기 대상 서비스가 실행되는 과정에서 상기 축약키 출력 코드에 의해 출력된 제1 축약키들을 이용하여 상기 기능 블록들의 호출 흐름 정보를 상기 제2 축약키로 변환하는, 서비스 모니터링 방법.
  13. 청구항 12에 있어서,
    상기 호출 흐름 정보를 제2 축약키로 변환하는 단계는, 출력된 상기 제1 축약키들을 순차적으로 나열함으로써 상기 호출 흐름 정보를 획득하고, 상기 호출 흐름 정보를 상기 제2 축약키로 변환하는, 서비스 모니터링 방법.
  14. 청구항 13에 있어서,
    상기 제1 축약키는, 상기 텍스트 정보를 해싱함으로써 획득되는 해시값이며,
    상기 제2 축약키는, 상기 호출 흐름 정보를 해싱함으로써 획득되는 해시값인, 서비스 모니터링 방법.
  15. 청구항 12에 있어서,
    상기 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계 이전에,
    상기 서비스 장치에서, 출력된 상기 제1 축약키들로부터 획득된 제2 축약키 및 상기 성능 측정 코드에 의해 획득된 상기 기능 블록 각각에 대한 성능 측정 결과값을 상기 모니터링 서버로 전송하는 단계를 더 포함하는, 서비스 모니터링 방법.
  16. 청구항 15에 있어서,
    상기 성능 측정 코드는, 상기 기능 블록의 실행시 상기 기능 블록의 실행 시작 시각 및 실행 종료 시각의 차이를 계산하여 상기 기능 블록의 응답 시간을 획득하고 상기 응답 시간을 상기 성능 측정 결과값으로 출력하는 하나 이상의 명령어를 포함하는, 서비스 모니터링 방법.
  17. 청구항 15에 있어서,
    상기 프로파일링 정보를 상기 기능 블록 단위로 획득하는 단계는, 상기 제1 테이블 및 상기 제2 테이블을 참조하여 상기 서비스 장치로부터 수신된 상기 제2 축약키를 상기 기능 블록 각각에 대한 텍스트 정보로 복원하는, 서비스 모니터링 방법.
  18. 청구항 17에 있어서,
    상기 프로파일링 정보는, 상기 모니터링 서버에서 복원된 상기 기능 블록 각각에 대한 텍스트 정보 및 상기 기능 블록 각각에 대한 성능 측정 결과값을 포함하는, 서비스 모니터링 방법.
KR1020160047547A 2016-04-19 2016-04-19 서비스 모니터링 시스템 및 방법 KR102433764B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160047547A KR102433764B1 (ko) 2016-04-19 2016-04-19 서비스 모니터링 시스템 및 방법
CN201710252986.5A CN107305517A (zh) 2016-04-19 2017-04-18 服务监控系统及方法
US15/491,003 US10671505B2 (en) 2016-04-19 2017-04-19 System and method for monitoring service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160047547A KR102433764B1 (ko) 2016-04-19 2016-04-19 서비스 모니터링 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20170119477A KR20170119477A (ko) 2017-10-27
KR102433764B1 true KR102433764B1 (ko) 2022-08-19

Family

ID=60038560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160047547A KR102433764B1 (ko) 2016-04-19 2016-04-19 서비스 모니터링 시스템 및 방법

Country Status (3)

Country Link
US (1) US10671505B2 (ko)
KR (1) KR102433764B1 (ko)
CN (1) CN107305517A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112583584B (zh) * 2020-11-30 2022-03-25 郑州信大捷安信息技术股份有限公司 一种基于随机数的服务监控系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100920414B1 (ko) 2008-05-30 2009-10-07 (주)제니퍼소프트 트랜잭션의 지정된 수행지점에서 자바 스택을 스냅샷하는자바 프로세스 모니터링 시스템 및 그 방법
US20130336329A1 (en) * 2012-06-15 2013-12-19 Sandhya Gopinath Systems and methods for distributing traffic across cluster nodes
US20160149820A1 (en) * 2014-11-25 2016-05-26 Anue Systems, Inc. Hash Level Load Balancing For Deduplication Of Network Packets

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1298514A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
KR100503776B1 (ko) 2005-03-12 2005-07-26 (주)위즈베이스 웹 어플리케이션 성능 분석 및 튜닝 방법
KR100750834B1 (ko) * 2005-10-06 2007-08-22 (주)아이피엠에스 자바 바이트 코드의 데이터 모니터링 시 모니터링된 데이터의 호출관계 규명 방법 및 이 방법을 이용한 알고리즘을 통해 자바 어플리케이션의 각종 성능 데이터를 추출하기 위한 컴퓨터 판독 가능한 기록 매체
US20070136470A1 (en) * 2005-12-08 2007-06-14 Microsoft Corporation Delivery of localized resource over a network
JP4304300B2 (ja) * 2006-11-01 2009-07-29 日本電気株式会社 ユーザ装置、サーバ、アップグレードサービスシステム、その方法およびプログラム
KR101115907B1 (ko) * 2009-09-02 2012-02-14 주식회사 엘지유플러스 웹 서비스의 사용자 체감 성능 모니터링 방법과 이를 위한 프로그램이 기록된 기록매체 및 컴퓨팅 장치
US8886827B2 (en) * 2012-02-13 2014-11-11 Juniper Networks, Inc. Flow cache mechanism for performing packet flow lookups in a network device
US9866452B2 (en) * 2013-04-29 2018-01-09 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for control of usage of one or more services for a user
GB2520489A (en) * 2013-11-20 2015-05-27 Ibm Deletion of content in digital storage systems
KR20150122924A (ko) * 2014-04-24 2015-11-03 (주)인시그널 자바스크립트 성능 평가 장치 및 성능 평가 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100920414B1 (ko) 2008-05-30 2009-10-07 (주)제니퍼소프트 트랜잭션의 지정된 수행지점에서 자바 스택을 스냅샷하는자바 프로세스 모니터링 시스템 및 그 방법
US20130336329A1 (en) * 2012-06-15 2013-12-19 Sandhya Gopinath Systems and methods for distributing traffic across cluster nodes
US20160149820A1 (en) * 2014-11-25 2016-05-26 Anue Systems, Inc. Hash Level Load Balancing For Deduplication Of Network Packets

Also Published As

Publication number Publication date
KR20170119477A (ko) 2017-10-27
CN107305517A (zh) 2017-10-31
US10671505B2 (en) 2020-06-02
US20170302541A1 (en) 2017-10-19

Similar Documents

Publication Publication Date Title
US10372803B2 (en) System, method and computer readable medium for binding authored content to the events used to generate the content
CA2866449C (en) Telemetry system for a cloud synchronization system
CA2943128C (en) Computer system to support failover in an event stream processing system
CN102882974B (zh) 一种通过网站识别版本号节省网站访问资源的方法
CN109951546B (zh) 基于智能合约的事务请求处理方法、装置、设备和介质
CN109241484B (zh) 一种基于加密技术的网页数据的发送方法及设备
CN110489421B (zh) 数据存储方法、装置、计算机可读存储介质和计算机设备
US9680719B2 (en) Communication system, client terminal, and server
KR102295593B1 (ko) 인증 문서를 자동으로 생성하는 기법
CN111683066A (zh) 异构系统集成方法、装置、计算机设备和存储介质
CN112241298A (zh) 页面显示方法及装置、存储介质、电子装置
CN113992738A (zh) 基于微服务网关的反向代理方法、装置、设备及存储介质
CN111459935B (zh) 物联网数据存储方法、存储系统、查询方法及存储介质
CN111339551B (zh) 数据的验证方法及相关装置、设备
WO2016147073A1 (en) Method and apparatus for identifying changed mailboxes in an internet message access protocol (imap) list
CN108600255B (zh) Mock服务管理方法、装置、计算机设备以及存储介质
KR102433764B1 (ko) 서비스 모니터링 시스템 및 방법
US20150088958A1 (en) Information Processing System and Distributed Processing Method
JP5961471B2 (ja) 複数の情報システムおける出力比較方法
CN109788019A (zh) 一种数据处理方法及代理服务器
CN103885877A (zh) 一种http的模拟浏览器测试脚本生成方法及装置
CN111984543B (zh) 指令测试方法、装置及系统
CN112306848B (zh) 微服务系统的架构视图生成方法及装置
CN112256714A (zh) 数据同步方法、装置、电子设备和计算机可读介质
CN111324586A (zh) 一种基于缓存的图片显示方法、装置、电子设备及介质

Legal Events

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