WO2024117383A1 - 애플리케이션의 성능을 측정하는 장치 및 방법 - Google Patents

애플리케이션의 성능을 측정하는 장치 및 방법 Download PDF

Info

Publication number
WO2024117383A1
WO2024117383A1 PCT/KR2023/001584 KR2023001584W WO2024117383A1 WO 2024117383 A1 WO2024117383 A1 WO 2024117383A1 KR 2023001584 W KR2023001584 W KR 2023001584W WO 2024117383 A1 WO2024117383 A1 WO 2024117383A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
metric
type
type application
information
Prior art date
Application number
PCT/KR2023/001584
Other languages
English (en)
French (fr)
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 쿠팡 주식회사
Publication of WO2024117383A1 publication Critical patent/WO2024117383A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Definitions

  • This disclosure relates to technology for providing a method for measuring the performance of an application.
  • a server that provides a service using an application is the entity that operates the service. It receives various data (e.g., metric data) from the devices of each user using the service and operates the service normally based on the received data. Determine whether it is performed. In other words, the server receives information about one or more measurement items from the device of each user using the service in order to evaluate the quality of the service provided to the user. Additionally, when one server operates multiple services using multiple different applications, the server individually receives information on one or more measurement items for each multiple service and measures the quality of each of the multiple services separately. must be evaluated.
  • various data e.g., metric data
  • the technical task is to enable a user to obtain source code that solves a specific problem from another user.
  • the technical task is to enable users to obtain source code that solves a specific problem according to various source code languages.
  • the technical task is to enable a user to obtain source code that solves a specific problem that requires the creation of source code including non-public information.
  • an application performance measurement device may be provided.
  • a device includes a communication circuit for communicating with at least one external device, one or more processors, and one or more memories storing instructions that cause the one or more processors to perform an operation when executed by the one or more processors. wherein the one or more processors obtain a first set of metrics for a first type of application, obtain a second set of metrics for a second type application, and configure the first set of metrics and the second metric. configured to determine a state of each of the first type application and the second type application based on information about at least one measurement item included in the set, wherein the first metric set and the second metric set include at least one Each can contain information about common measurement items.
  • the first type application is a type of application that provides a metric API (Application Programming Interface) that returns information about measurement items
  • the second type application is a type of application that does not provide the metric API. It can be.
  • the one or more processors obtain the first metric set by receiving a response according to a call of the metric API from the first type application, and obtain metric data at a predetermined specific time from the second type application.
  • the second metric set can be obtained by receiving.
  • the first type application may be a foreground application that operates based on user input
  • the second type application may be a background application that operates regardless of user input
  • the common measurement item may include at least one of Internet speed, API call latency, or a predetermined measurement item for managing specific software.
  • the one or more processors may obtain information about the at least one common measurement item from each of the first type application and the second type application by commonly using a specific pre-written function.
  • the first metric set or the second metric set may include information about measurement items defined by a user.
  • the first type application or the second type application is an application related to electronic commerce
  • the measurement items defined by the user include an application operation error code, whether an order fails due to an application error, and It may include at least one of: whether to cancel an order, or the number of orders per minute.
  • the one or more processors may sequentially process information about the at least one measurement item using a queue list.
  • the one or more processors may process information regarding the at least one measurement item using a predetermined number of threads.
  • a method for measuring application performance may be provided.
  • a method according to one aspect of the present disclosure is performed by an electronic device including a communication circuit for communicating with at least one external device, one or more processors, and one or more memories storing at least one instruction to be executed by the one or more processors. 1.
  • a method comprising: obtaining a first set of metrics relating to a first type of application; obtaining a second set of metrics for a second type of application; and determining a state of each of the first type application and the second type application based on information about at least one measurement item included in the first metric set and the second metric set,
  • the first metric set and the second metric set may each include information about at least one common measurement item.
  • the first type application is a type of application that provides a metric API (Application Programming Interface) that returns information about measurement items
  • the second type application is a type of application that does not provide the metric API. It can be.
  • the step of obtaining the first metric set includes obtaining the first metric set by receiving a response according to a call of the metric API from the first type application, and the second metric Obtaining the set may include obtaining the second metric set by receiving metric data at a predetermined specific point in time from the second type application.
  • the first type application may be a foreground application that operates based on user input
  • the second type application may be a background application that operates regardless of user input
  • the common measurement item may include at least one of Internet speed, API call latency, or a predetermined measurement item for managing specific software.
  • the method may further include obtaining information about the at least one common measurement item from each of the first type application and the second type application by commonly using a specific pre-written function.
  • the first metric set or the second metric set may include information about measurement items defined by a user.
  • the first type application or the second type application is an application related to electronic commerce
  • the measurement items defined by the user include an application operation error code, whether an order fails due to an application error, and It may include at least one of: whether to cancel an order, or the number of orders per minute.
  • the method may further include sequentially processing information about the at least one measurement item using a queue list.
  • a computer-readable recording medium may be disclosed.
  • a non-transitory computer-readable recording medium recording instructions that, when executed by one or more processors, cause the one or more processors to perform an operation, wherein the instructions cause the one or more processors to: Obtain a set of metrics, obtain a second set of metrics for a second type of application, and determine a metric name based on information about at least one measurement item included in the first metric set and the second metric set. and may be configured to generate matching data by matching metric types and transmit the matching data to an external device.
  • the application creation time can be shortened by increasing the reusability of pre-written code (i.e., a specific pre-written function).
  • information on measurement items that must be commonly measured for a plurality of applications can be managed in an integrated manner.
  • the computational burden on the server can be reduced.
  • traffic management of metric data can be easily performed.
  • FIG. 1 is an exemplary diagram conceptually illustrating an operation of an electronic device processing metric data obtained from one or more applications installed on a user terminal according to an embodiment of the present disclosure.
  • FIG. 2 is a diagram illustrating a system including a server, a user terminal, and a communication network according to an embodiment of the present disclosure.
  • FIG. 3 is a block diagram of a server according to an embodiment of the content disclosed herein.
  • Figure 4 is a block diagram of a user terminal according to an embodiment of the content disclosed in this specification.
  • Figure 5 is a flowchart of an operation in which a server measures the performance of a plurality of applications according to an embodiment of the present disclosure.
  • A, B, and C As used herein, “A, B, and C,” “A, B, or C,” “A, B, and/or C,” or “at least one of A, B, and C,” “A, B , or at least one of C,” “at least one of A, B, and/or C,” “at least one selected from A, B, and C,” “at least one selected from A, B, or C,” “A Expressions such as “at least one selected from , B, and/or C” may mean each listed item or all possible combinations of the listed items.
  • “at least one selected from A and B” means: (1) A, (2) at least one of A, (3) B, (4) at least one of B, (5) at least one of A and B It may refer to at least one of, (6) at least one of A and B, (7) at least one of B and A, and (8) both A and B.
  • the expression "based on” is used to describe one or more factors influencing the decision, act of judgment, or action described in the phrase or sentence containing the expression, and the expression refers to the It does not exclude additional factors that may influence the decision, act or action of judgment.
  • a component e.g., a first component
  • another component e.g., a second component
  • the expression that a component is “connected” or “connected” to another component means that the component is It may mean being connected or connected not only directly to another component, but also through another new component (e.g., a third component).
  • the expression “configured to” means “set to,” “having the ability to,” “changed to,” “made to,” or “to do,” depending on the context. It can have meanings such as “possible.”
  • the expression is not limited to the meaning of "specially designed in hardware," and for example, a processor configured to perform a specific operation is a general-purpose processor capable of performing that specific operation by executing software. It can mean.
  • FIG. 1 is an example conceptually illustrating an operation by the electronic device 10 to process metric data 23 obtained from one or more applications 21 and 22 installed on a user terminal according to an embodiment of the present disclosure. It's a degree.
  • metric data may be used as a general term for the value of at least one metric item indicating the performance or status of a service, software, program, or application provided to a user. Measurement items may be, for example, whether there is an Internet connection, network speed, etc.
  • the electronic device 10 may be a user terminal with an application installed. Additionally, the electronic device 10 may be a server external to the user terminal.
  • a method of measuring application performance is described assuming the electronic device 10 as a server. However, this is only an assumption for convenience of explanation and does not limit the present disclosure, and the disclosure content of the present specification
  • the application performance measurement method according to can also be performed on a user terminal where the application is installed.
  • the electronic device 10 receives metric data 23 from each of the first type application 21 and the second type application 22, and processes the received metric data 23 by a predetermined method to store the first type application.
  • the status of each of (21) and the second type application (22) can be determined.
  • the first type application 21 may refer to a type of application that provides a metric API (Application Programming Interface).
  • the first type application 21 may be referred to as a “long-term running application.”
  • the second type application 22, unlike the first type application, may be an application that does not provide an API that responds to a metric data transmission request from the outside.
  • the second type application 22 may be referred to as a “batch job application.”
  • the electronic device 10 may process the metric data 23 by using a queue list 11 or a thread pool 13 including a predetermined number of threads. This will be explained in detail below.
  • FIG. 2 is a diagram illustrating a system including a server 100, a user terminal 200, and a communication network 300 according to an embodiment of the present disclosure.
  • the server 100 and the user terminal 200 can send or receive information to each other through the communication network 300 according to the application performance measurement technology disclosed in this specification.
  • the server 100 may be an electronic device of a service provider that uses an application.
  • a service provider may be the operator of a service that uses the application disclosed in this specification.
  • the server 100 is an electronic device that transmits information or provides services to the user terminal 200 connected by wire or wirelessly, and may be, for example, an application server, proxy server, cloud server, etc.
  • the user terminal 200 may indicate one or more user terminals or a set of two or more user terminals.
  • each user terminal is a first user terminal 200-1 and a second user terminal 200-2.
  • ... may be referred to as the nth user terminal (200-n) (n is a natural number of 2 or more).
  • the user terminal 200 may be a user terminal that uses services provided by the server 100 through an application.
  • the user terminal 200 may be, for example, a smartphone, a tablet computer, a personal computer (PC), a mobile phone, a personal digital assistant (PDA), an audio player, or a wearable device. It may be at least one of (Wearable Device).
  • the term “device” is a term to refer to the device that is the subject of description
  • the term “external device” is a term used to refer to the device that is the subject of description. From this point of view, each can be used as a term to refer to a device that exists externally.
  • the server 100 when the server 100 is described as a “device,” the user terminal 200 may be called an “external device” from the perspective of the server 100.
  • the server 100 may be called an “external device” from the perspective of the user terminal 200. That is, each of the server 100 and the user terminal 200 may be referred to as a “device” and an “external device” or as an “external device” and an “apparatus”, respectively, depending on the viewpoint of the operating entity.
  • the communication network 300 may include both a wired or wireless communication network.
  • the communication network 300 can enable data to be exchanged between the server 100 and the user terminal 200.
  • a wired communication network may include, for example, a communication network based on a method such as USB (Universal Serial Bus), HDMI (High Definition Multimedia Interface), RS-232 (Recommended Standard-232), or POTS (Plain Old Telephone Service). .
  • Wireless communication networks include, for example, enhanced Mobile Broadband (eMBB), Ultra Reliable Low-Latency Communications (URLLC), Massive Machine Type Communications (MMTC), Long-Term Evolution (LTE), LTE Advance (LTE-A), and NR ( New Radio), UMTS (Universal Mobile Telecommunications System), GSM (Global System for Mobile communications), CDMA (Code Division Multiple Access), WCDMA (Wideband CDMA), WiBro (Wireless Broadband), WiFi (Wireless Fidelity), Bluetooth ), NFC (Near Field Communication), GPS (Global Positioning System), or GNSS (Global Navigation Satellite System).
  • the communication network 300 of this specification is not limited to the examples described above, and may include various types of communication networks that allow data to be exchanged between a plurality of subjects or devices without limitation.
  • FIG. 3 is a block diagram of the server 100 according to an embodiment of the content disclosed herein.
  • the server 100 may include one or more processors 110, communication circuits 120, or memory 130 as components. In some embodiments, at least one of these components of server 100 may be omitted, or other components may be added to server 100. In some embodiments, additionally or alternatively, some components may be integrated and implemented, or may be implemented as a single or plural entity. At least some of the components inside or outside the server 100 are connected to each other through a bus, General Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI), or Mobile Industry Processor Interface (MIPI), etc. to exchange data. Alternatively, signals can be given or received.
  • GPIO General Purpose Input/Output
  • SPI Serial Peripheral Interface
  • MIPI Mobile Industry Processor Interface
  • processor 110 may be referred to as processor 110.
  • the term processor 110 may refer to a set of one or more processors, unless the context clearly expresses otherwise.
  • the processor 110 may control at least one component of the server 100 connected to the processor 110 by running software (eg, commands, programs, etc.). Additionally, the processor 110 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 110 may load data, etc. from the memory 130 or store it in the memory 130 .
  • the communication circuit 120 may perform wireless or wired communication between the server 100 and another device (eg, the user terminal 200 or another server).
  • the communication circuit 120 may be used for wireless communication such as eMBB, URLLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, Bluetooth, NFC, GPS or GNSS. can be performed.
  • the communication circuit 120 may be wired according to a method such as USB (Universal Serial Bus), HDMI (High Definition Multimedia Interface), RS-232 (Recommended Standard-232), or POTS (Plain Old Telephone Service). Communication can be performed.
  • Memory 130 can store various data. Data stored in the memory 130 is data acquired, processed, or used by at least one component of the server 100, and may include software (eg, commands, programs, etc.). Memory 130 may include volatile or non-volatile memory. The term memory 130 may refer to a set of one or more memories, unless the context clearly expresses otherwise. As used herein, the expression “a set of instructions stored in the memory 130” or “a program stored in the memory 130” refers to an operating system, application, or application for controlling the resources of the server 100. It may be used to refer to middleware that provides various functions to an application so that it can utilize the resources of the server 100. In one embodiment, when the processor 110 performs a specific operation, the memory 130 may store instructions performed by the processor 110 and corresponding to the specific operation.
  • the server 100 may transmit data according to an operation result of the processor 110, data received by the communication circuit 120, or data stored in the memory 130 to an external device.
  • An external device may be a device for outputting (displaying or displaying) received data.
  • the external device may be, for example, the user terminal 200.
  • the processor 210 may control at least one component of the user terminal 200 connected to the processor 110 by running software (eg, commands, programs, etc.). Additionally, the processor 210 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 210 may load data, etc. from the memory 230 or store it in the memory 230 .
  • software eg, commands, programs, etc.
  • the processor 210 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 210 may load data, etc. from the memory 230 or store it in the memory 230 .
  • Memory 230 can store various data. Data stored in the memory 230 is data acquired, processed, or used by at least one component of the user terminal 200, and may include software (e.g., commands, programs, etc.) . Memory 230 may include volatile or non-volatile memory. The term memory 230 may refer to a set of one or more memories, unless the context clearly expresses otherwise. As used herein, the expression “a set of instructions stored in the memory 230” or “a program stored in the memory 230” refers to an operating system, an application, or an operating system for controlling the resources of the user terminal 200. It may be used to refer to middleware that provides various functions to an application so that the application can utilize the resources of the user terminal 200. In one embodiment, when the processor 210 performs a specific operation, the memory 230 may store instructions performed by the processor 210 and corresponding to the specific operation.
  • the user terminal 200 may further include an input unit 240.
  • the input unit 240 may be a component that transmits data received from the outside to at least one component included in the user terminal 200.
  • the input unit 240 may include a mouse, keyboard, or touch pad.
  • FIG. 5 is a flowchart of an operation in which the server 100 measures the performance of a plurality of applications according to an embodiment of the present disclosure.
  • the server 100 may obtain a first metric set related to a first type application (S510).
  • first type application may refer to a type of application that provides a metric API (Application Programming Interface).
  • metric API may refer to an API that returns information about measurement items.
  • the first type application may provide an API for responding to a GET request regarding at least one measurement item (eg, Internet speed, API call delay, etc.).
  • the first type application may be a foreground application that operates based on user input.
  • the first type application may be a type of application that interacts with the user through the output unit 250 of the user terminal 200 and exchanges data with the server 100.
  • the first type application may be an application created to provide various APIs that can be called externally, including the metric API described above, to operate as a foreground application.
  • a “metric set” is a set of metric data (or measurement index data) and may refer to a set including at least one measurement item.
  • a metric set may include at least one measurement item and a value for each measurement item.
  • a measurement item and a pair of values for the corresponding item may be referred to as “information regarding the measurement item.”
  • the first metric set may be a metric set containing information about at least one measurement item related to a first type application.
  • the server 100 may obtain a first metric set by receiving a response in response to a metric API call from a specific application (hereinafter also referred to as “A” application) corresponding to the first type application.
  • the first metric set may include information about at least one measurement item (eg, information about Internet speed, information about API call latency, etc.).
  • the processor 110 calls a metric API (e.g., GET request) that returns the speed of the currently connected Internet among the APIs provided by the "A" application installed on the user terminal 200, and in response, You can receive values about Internet speed from the "A" application.
  • a metric API e.g., GET request
  • the processor 110 may select a specific API used by the application to provide a service among the APIs provided by the "A" application installed on the user terminal 200 (for example, in the case of an application that provides an e-commerce service, You can call a metric API that returns the call latency (Latency) of an API that retrieves current shipping information from an external delivery company, and in response, receive a value about the API call latency from the "A" application. .
  • the server 100 may obtain a second metric set related to the second type application (S520).
  • second type application may refer to a type of application that does not provide a metrics API.
  • the second type application unlike the first type application, may be an application that does not provide an API that responds to a metric data transmission request from the outside.
  • the second type application may be a background application that operates regardless of user input.
  • the second type application may be an application that is installed on the user terminal 200 and then collects specific data of the user terminal 200 according to permissions granted by the user.
  • the second type application is a background application and may be a type of application that does not provide a metric API.
  • the second type application may be an application that transmits metric data to an external device (eg, the server 100, etc.) when a predetermined specific event (eg, error occurrence) occurs or a predetermined period elapses. That is, the second type application is an application that does not provide a metric API that can be freely called from the outside, and may be an application that transmits metric data calculated only at a specific time point defined in the application to an external device.
  • a predetermined specific event eg, error occurrence
  • the second metric set may be a metric set containing information about at least one measurement item related to a second type application.
  • the server 100 may obtain a second metric set by receiving metric data at a predetermined specific time from a specific application (hereinafter also referred to as “B” application) corresponding to the second type application.
  • the predetermined specific point in time may be set as the default when the “B” application is created or when it is downloaded to the user terminal 200.
  • the second metric set may include information about at least one measurement item (eg, information about Internet speed, information about API call latency, etc.).
  • the processor 110 may receive a value related to Internet speed at a predetermined specific time from the “B” application installed on the user terminal 200.
  • the processor 110 may receive a value related to the API call delay time from the “B” application installed on the user terminal 200 at a predetermined specific point in time.
  • the first metric set and the second metric set may each include information regarding at least one common measurement item.
  • common measurement items may include at least one of Internet speed, API call latency, or predetermined measurement items for managing specific software.
  • predetermined measurement items to manage specific software if both the first type application and the second type application use a data processing platform called "Kafka", the first metric set and the second metric set are Common metrics may include one or more indicators to monitor the current state of Kafka (e.g., amount of raw data, data throughput per unit time, etc.).
  • predetermined metrics for managing specific software if a first type application and a second type application both use a database called "Redis”, the first set of metrics and the second set of metrics are common. As a measurement item, it can include one or more indicators to monitor the current state of Redis (e.g. database capacity, etc.). Additionally, as another example regarding predetermined measurement items for managing specific software, when both the first type application and the second type application use a database management program called "HikariCP", a first metric set and a second metric set is a common measurement item and may include one or more indicators for monitoring the current state of HikariCP (e.g., performance of the connection pool, etc.).
  • HikariCP database management program
  • the server 100 may obtain information about at least one common measurement item from each of the first type application and the second type application by commonly using a specific pre-written function.
  • the pre-written specific function is a set of source codes and may refer to a function that can be commonly applied to a first type application or a second type application.
  • a specific function for obtaining Internet speed may be created in advance to receive an application identification number, user terminal identification number, etc. as input parameters.
  • the server 100 can obtain information about Internet speed from each of the first type application and the second type application by changing input parameters and commonly using a specific function for obtaining Internet speed.
  • the application creation time can be shortened by increasing the reusability of pre-written code (i.e., specific pre-written functions).
  • pre-written code i.e., specific pre-written functions.
  • measurement items that must be commonly measured for a plurality of applications can be measured by using the same specific function prepared in advance for each application.
  • Related information can be managed in an integrated manner.
  • the first metric set or the second metric set may include information regarding measurement items defined by the user.
  • the first metric set or the second metric set may include an application operation error code, whether an order fails due to an application error, or It may include at least one of order cancellation and number of orders per minute.
  • the application operation error code may mean, for example, if an error occurs when an application performs a specific operation, the corresponding error code (e.g., 401, 404, etc.).
  • whether an order fails due to an application error means a measurement item value assigned a value of "1” if the user's order fails due to an application operation error, and a value of "0" otherwise. can do.
  • whether an order is canceled by a user may mean a measurement item value assigned a value of “1” when the user directly cancels the order, and a value of “0” otherwise.
  • the server 100 may determine the status of each of the first type application and the second type application based on information about at least one measurement item included in the first metric set and the second metric set (S530). For example, the server 100 may determine whether the application is operating normally based on information about the Internet speed of each application, API call delay time information, etc. Specifically, if there is an error in the information about a specific measurement item among the information about each measurement item included in the metric set, the processor 110 can generate information that there is an error in the corresponding application and notify the user of the server 100. there is.
  • the server 100 sequentially processes information about at least one measurement item included in the first metric set and the second metric set using a queue list. You can.
  • the processor 110 may input information about measurement items included in each metric set into the cue list according to the time at which the first metric set or the second metric set is received. For example, the processor 110 may preferentially input information about measurement items included in the previously received metric set into the cue list. Additionally, the processor 110 may input information about measurement items included in the metric set into the cue list according to the priority of each application.
  • processor 110 receives both a first set of metrics for the first type application and a second set of metrics for the second type application. Even if the second metric set is received first, if the second metric set has not yet been entered into the cue list, the first metric set may be preferentially entered into the cue list.
  • the processor 110 may sequentially export and process information about measurement items from the cue list. That is, the processor 110 can process information about at least one measurement item received from different applications in a first-in-first-out manner.
  • the size of the above-described queue list may be variably determined depending on the number of applications managed by the server 100 or the performance of the server 100.
  • the processor 110 may process information regarding the at least one measurement item using a predetermined number of threads.
  • the predetermined number of threads for processing information about measurement items can be set to an appropriate number considering the number of main threads for providing services.
  • the predetermined number of threads for processing information about measurement items may be variably determined in consideration of the current time, service status, computational capacity of the server 100, etc.
  • the processor 110 sequentially processes information about measurement items from the cue list, but if an available thread currently exists, it exports information about the measurement items from the cue list and stores it in an available thread. Metric data can be processed by allocation.
  • the cue list is used. Since information can be processed sequentially while controlling traffic, the computational burden on the server 100 can be reduced. Additionally, since the present disclosure processes metric data using a queue list and a predetermined number of threads, the metric data management operation of the server 100 can be efficiently performed without impeding the performance of basic service operations.
  • the electronic device 10 on which the application performance measurement method of the present disclosure is performed is the user terminal 200.
  • the electronic device 10 is the server 100, content that overlaps with what was described above will be omitted and differences will mainly be described.
  • the user terminal 200 can classify metric data received from each application and transmit the classification result of each metric data to the server 100.
  • steps S510 and S520 of each step in FIG. 5 may be performed by the user terminal 200 similarly to those described above.
  • the processor 210 may transmit information about measurement items included in each metric set to the server 100 according to a predetermined method. Specifically, the processor 210 processes the first metric set and the second metric set received from each of the first type application and the second type application through at least one thread managed by the processor 210 and then ) can be transmitted.
  • the thread that the processor 210 uses to process metric data may be a thread that is distinct from a thread for running a first type application or a second type application.
  • the number of threads for processing metric data may be variably determined depending on the situation or performance of the user terminal 200 on which each application runs.
  • the processor 210 may match the metric name of the received measurement item information with the metric type and transmit the matching data to the server 100 .
  • the server 100 can reduce the computational burden by receiving matching data corresponding to the classification result for metric data from the processor 210.
  • the metric name may be the name of a specific function written in advance as described above, and may be determined in advance according to the measurement item to be measured. For example, metric names may be predetermined as “order_succeed_metric”, “status_true_metric”, “status_false_metric”, etc.
  • the metric type is a value for classifying a plurality of measurement items, and may be predetermined according to the metric name and stored in the memory 230.
  • the processor 210 may refer to the memory 230 to determine a metric type that matches the metric name and generate matching data. If the metric types are different between measurement items, the measurement items may be visually displayed differently to the manager or delivered at different times. Additionally, if the metric type is the same between measurement items, the measurement items may be visually displayed the same to the manager or delivered at the same time. For example, metric data may be displayed visually through a display (eg, dashboard) of the server 100. Metric types may include, for example, Counter, Gauge, Summary, Histogram, etc.
  • the user terminal 200 can separately process metric data representing the performance of each application while simultaneously running each application. This can reduce the computational burden on the server 100 side.
  • the user terminal 200 is assigned a separate thread and processes metric data asynchronously so as not to affect the performance or quality of the basic service provided by the application (e.g., ordering function in e-commerce). This has the effect of making traffic management of metric data easier.
  • Methods according to the present disclosure may be computer-implemented methods.
  • each step of the methods is shown and described in a predetermined order, but in addition to being performed sequentially, the steps may also be performed in any order that can be arbitrarily combined according to the present disclosure.
  • at least some of the steps may be performed in parallel, iteratively, or heuristically. This disclosure does not exclude making changes or modifications to the methods.
  • at least some steps may be omitted or other steps may be added.
  • Various embodiments of the present disclosure may be implemented as software recorded on a machine-readable recording medium.
  • the software may be software for implementing various embodiments of the present disclosure described above.
  • Software can be inferred from various embodiments of the present disclosure by programmers in the technical field to which this disclosure pertains.
  • software can be instructions (e.g. code or code segments) or programs that can be read by a device.
  • a device is a device that can operate according to commands called from a recording medium, and may be, for example, a computer.
  • the device may be an electronic device 10, a server 100, or a user terminal 200 according to embodiments of the present disclosure.
  • the device's processor may execute a called instruction and cause the device's components to perform a function corresponding to the instruction.
  • a recording medium may refer to any type of recording medium in which data is stored that can be read by a device.
  • Recording media may include, for example, ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage devices, etc.
  • the recording medium may be implemented in a distributed form, such as in a computer system connected to a network.
  • Software may be distributed, stored, and executed on a computer system, etc.
  • the recording medium may be a non-transitory recording medium.
  • a non-transitory recording medium refers to a tangible medium regardless of whether data is stored semi-permanently or temporarily, and does not include signals that are temporarily propagated.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 개시의 한 측면으로서, 애플리케이션 성능 측정 장치가 제공될 수 있다. 본 개시의 한 측면에 따른 장치는 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고, 상기 하나 이상의 프로세서는, 제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하고, 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각의 상태를 결정하도록 구성되고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함할 수 있다.

Description

애플리케이션의 성능을 측정하는 장치 및 방법
본 개시는 애플리케이션의 성능을 측정하는 방법을 제공하기 위한 기술에 관한 것이다.
애플리케이션(Application)을 이용한 서비스를 제공하는 서버는 해당 서비스를 운영하는 주체로서, 서비스를 이용하는 각 사용자의 장치로부터 다양한 데이터(예를 들어, 메트릭 데이터)를 수신하고 수신된 데이터에 기초하여 서비스가 정상적으로 수행되는지 여부를 판단한다. 즉, 서버는 사용자에게 제공되는 서비스의 품질을 평가하기 위해 해당 서비스를 이용하는 각 사용자의 장치로부터 하나 이상의 측정 항목에 관한 정보를 수신한다. 또한, 하나의 서버가 서로 다른 복수의 애플리케이션을 이용하여 복수의 서비스를 운영하는 경우, 해당 서버는 복수의 서비스마다 하나 이상의 측정 항목에 관한 정보를 개별적으로 수신하고 복수의 서비스 각각에 대한 품질을 별도로 평가해야 한다.
그러나, 종래에는 하나의 서버가 복수의 서비스를 운영할 때 서비스의 품질을 관리하기 위한 코드를 각 서비스마다 개별적으로 구현했기 때문에 동일 기능의 코드를 반복 작성해야 하는 한편, 복수의 서비스들 간에 통합된 방법으로 메트릭 데이터를 관리하는 방법이 요구되었다. 또한, 서비스 제공을 위한 연산 처리 부담이 증가하는 피크 시간대에는 메트릭 데이터를 관리하는 동작의 처리량을 조절하는 기술의 수요가 증가해왔다.
본 개시의 다양한 실시예에 따르면, 사용자에 의해 지정된 과제에 대해 솔루션을 제공하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예에 따르면, 사용자가 특정 과제를 해결하는 소스 코드를 다른 사용자로부터 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예들에 의하면, 사용자가 특정 과제를 해결하는 소스 코드를 다양한 소스 코드 언어에 따라 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예들에 의하면, 사용자가 비공개 정보를 포함하여 소스 코드의 작성이 요구되는 특정 과제를 해결하는 소스 코드를 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 한 측면으로서, 애플리케이션 성능 측정 장치가 제공될 수 있다. 본 개시의 한 측면에 따른 장치는 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고, 상기 하나 이상의 프로세서는, 제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하고, 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각의 상태를 결정하도록 구성되고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션은 측정 항목에 관한 정보를 반환하는 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션이고, 상기 제2 타입 애플리케이션은 상기 메트릭 API를 제공하지 않는 유형의 애플리케이션일 수 있다.
일 실시예에서, 상기 하나 이상의 프로세서는, 상기 제1 타입 애플리케이션으로부터 상기 메트릭 API의 호출에 따른 응답을 수신함으로써 상기 제1 메트릭 세트를 획득하고, 상기 제2 타입 애플리케이션으로부터 사전 결정된 특정 시점에 메트릭 데이터를 수신함으로써 상기 제2 메트릭 세트를 획득할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션은 사용자 입력에 기초하여 동작하는 포그라운드(Foreground) 애플리케이션이고, 상기 제2 타입 애플리케이션은 사용자 입력과 무관하게 동작하는 백그라운드(Background) 애플리케이션일 수 있다.
일 실시예에서, 상기 공통 측정 항목은, 인터넷 속도, API 호출 지연 시간(Latency) 또는 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 하나 이상의 프로세서는, 미리 작성된 특정 함수를 공통적으로 사용하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각으로부터 상기 적어도 하나의 공통 측정 항목에 관한 정보를 획득할 수 있다.
일 실시예에서, 상기 제1 메트릭 세트 또는 상기 제2 메트릭 세트는, 사용자에 의해 정의된 측정 항목에 관한 정보를 포함할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션 또는 상기 제2 타입 애플리케이션은 전자 상거래와 관련된 애플리케이션이고, 상기 사용자에 의해 정의된 측정 항목은, 애플리케이션 동작 오류 코드, 애플리케이션 오류에 따른 주문 실패 여부, 사용자에 의한 주문 취소 여부, 또는 분당 주문 수 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 하나 이상의 프로세서는, 상기 적어도 하나의 측정 항목에 관한 정보를 큐(Queue) 리스트를 이용하여 순차적으로 처리할 수 있다.
일 실시예에서, 상기 하나 이상의 프로세서는, 사전 결정된 개수의 쓰레드(Thread)를 사용하여 상기 적어도 하나의 측정 항목에 관한 정보를 처리할 수 있다.
본 개시의 다른 한 측면으로서, 애플리케이션 성능 측정 방법이 제공될 수 있다. 본 개시의 한 측면에 따른 방법은 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나의 명령을 저장하는 하나 이상의 메모리를 포함하는 전자 장치에 의해 수행되는 방법으로서, 제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하는 단계; 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하는 단계; 및 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각의 상태를 결정하는 단계를 포함하고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션은 측정 항목에 관한 정보를 반환하는 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션이고, 상기 제2 타입 애플리케이션은 상기 메트릭 API를 제공하지 않는 유형의 애플리케이션일 수 있다.
일 실시예에서, 상기 제1 메트릭 세트를 획득하는 단계는, 상기 제1 타입 애플리케이션으로부터 상기 메트릭 API의 호출에 따른 응답을 수신함으로써 상기 제1 메트릭 세트를 획득하는 단계를 포함하고, 상기 제2 메트릭 세트를 획득하는 단계는, 상기 제2 타입 애플리케이션으로부터 사전 결정된 특정 시점에 메트릭 데이터를 수신함으로써 상기 제2 메트릭 세트를 획득하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션은 사용자 입력에 기초하여 동작하는 포그라운드(Foreground) 애플리케이션이고, 상기 제2 타입 애플리케이션은 사용자 입력과 무관하게 동작하는 백그라운드(Background) 애플리케이션일 수 있다.
일 실시예에서, 상기 공통 측정 항목은, 인터넷 속도, API 호출 지연 시간(Latency), 또는 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 미리 작성된 특정 함수를 공통적으로 사용하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각으로부터 상기 적어도 하나의 공통 측정 항목에 관한 정보를 획득하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 제1 메트릭 세트 또는 상기 제2 메트릭 세트는, 사용자에 의해 정의된 측정 항목에 관한 정보를 포함할 수 있다.
일 실시예에서, 상기 제1 타입 애플리케이션 또는 상기 제2 타입 애플리케이션은 전자 상거래와 관련된 애플리케이션이고, 상기 사용자에 의해 정의된 측정 항목은, 애플리케이션 동작 오류 코드, 애플리케이션 오류에 따른 주문 실패 여부, 사용자에 의한 주문 취소 여부, 또는 분당 주문 수 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 상기 방법은, 상기 적어도 하나의 측정 항목에 관한 정보를 큐(Queue) 리스트를 이용하여 순차적으로 처리하는 단계를 더 포함할 수 있다.
본 개시의 다른 측면에 따르면 컴퓨터 판독 가능 기록매체가 개시될 수 있다. 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 동작을 수행하도록 하는 명령들을 기록한 비일시적 컴퓨터 판독 가능 기록매체에 있어서, 상기 명령들은, 상기 하나 이상의 프로세서로 하여금, 제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하고, 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하고, 상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 메트릭 이름 및 메트릭 타입을 매칭함으로써 매칭 데이터를 생성하고, 상기 매칭 데이터를 외부 장치로 전송하도록 구성될 수 있다.
본 개시의 다양한 실시예들에 의하면, 기 작성된 코드(즉, 미리 작성된 특정 함수)의 재사용성을 높여 애플리케이션 생성 시간을 단축시킬 수 있다.
본 개시의 다양한 실시예들에 의하면, 복수의 애플리케이션에 대해 공통으로 측정되어야 하는 측정 항목에 관한 정보가 통합적으로 관리될 수 있다.
본 개시의 다양한 실시예들에 의하면, 서버의 연산 부담을 감소시킬 수 있다.
본 개시의 다양한 실시예들에 의하면, 메트릭 데이터의 트래픽 관리를 용이하게 수행할 수 있다.
도 1은 본 개시의 일 실시예에 따라 사용자 단말에 설치된 하나 이상의 애플리케이션으로부터 획득되는 메트릭(metric) 데이터를 전자 장치가 처리하는 동작을 개념적으로 도시한 예시도이다.
도 2는 본 개시의 일 실시예에 따른 서버, 사용자 단말 및 통신망을 포함하는 시스템을 도시한 도면이다.
도 3은 본 명세서에 개시된 내용의 일 실시예에 따른 서버의 블록도이다.
도 4는 본 명세서에 개시된 내용의 일 실시예에 따른 사용자 단말의 블록도이다.
도 5는 본 개시의 일 실시예에 따라 서버가 복수의 애플리케이션의 성능을 측정하는 동작에 관한 순서도이다.
본 문서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 문서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 문서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 문서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 문서에서 사용되는 단수형의 표현은, 문맥상 다르게 뜻하지 않는 한 복수형의 의미를 포함할 수 있으며, 이는 청구항에 기재된 단수형의 표현에도 마찬가지로 적용된다.
본 문서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 문서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 문서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 문서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따라 사용자 단말에 설치된 하나 이상의 애플리케이션(21, 22)으로부터 획득되는 메트릭(metric) 데이터(23)를 전자 장치(10)가 처리하는 동작을 개념적으로 도시한 예시도이다. 본 개시에서 메트릭 데이터는 사용자에게 제공되는 서비스, 소프트웨어, 프로그램 또는 애플리케이션의 성능이나 상태를 나타내는 적어도 하나의 측정 항목(metric item)에 대한 값을 총칭하는 용어로서 사용될 수 있다. 측정 항목은 예를 들어, 인터넷 연결 여부, 네트워크 속도 등일 수 있다.
전자 장치(10)는 애플리케이션이 설치된 사용자 단말일 수 있다. 또한, 전자 장치(10)는 사용자 단말 외부의 서버일 수도 있다. 이하 본 명세서 내에서의 몇몇 실시예들에서는, 전자 장치(10)를 서버로 가정하고 애플리케이션 성능 측정 방법을 설명하지만 이는 설명의 편의를 위한 가정일 뿐 본 개시를 제한하지 않으며, 본 명세서의 개시내용에 따른 애플리케이션 성능 측정 방법은 애플리케이션이 설치된 사용자 단말에서도 수행될 수 있다.
전자 장치(10)는 제1 타입 애플리케이션(21) 및 제2 타입 애플리케이션(22) 각각으로부터 메트릭 데이터(23)를 수신하고, 수신된 메트릭 데이터(23)를 소정의 방법으로 처리함으로써 제1 타입 애플리케이션(21) 및 제2 타입 애플리케이션(22) 각각의 상태를 결정할 수 있다. 제1 타입 애플리케이션(21)은, 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션을 지칭할 수 있다. 제1 타입 애플리케이션(21)은 "long-term running 애플리케이션"으로 지칭될 수 있다. 제2 타입 애플리케이션(22)은, 제1 타입 애플리케이션과 달리 외부로부터의 메트릭 데이터 전송 요청에 대해 응답하는 API를 제공하지 않는 애플리케이션일 수 있다. 제2 타입 애플리케이션(22)은 "batch job 애플리케이션"으로 지칭될 수 있다.
전자 장치(10)는 큐(Queue) 리스트(11) 또는 사전 결정된 개수의 쓰레드(Thread)를 포함하는 쓰레드 풀(thread pool, 13)을 이용함으로써 메트릭 데이터(23)를 처리할 수 있다. 이에 대하여는 이하 구체적으로 설명한다.
도 2는 본 개시의 일 실시예에 따른 서버(100), 사용자 단말(200) 및 통신망(300)을 포함하는 시스템을 도시한 도면이다. 서버(100) 및 사용자 단말(200)은 본 명세서에서 개시된 애플리케이션 성능 측정 기술에 따라 통신망(300)을 통해 서로 정보를 주거나 받을 수 있다.
서버(100)는 애플리케이션을 이용하는 서비스 제공자의 전자 장치일 수 있다. 서비스 제공자는 본 명세서에 개시된 애플리케이션을 이용하는 서비스의 운영 주체일 수 있다. 서버(100)는, 유선 또는 무선으로 연결된 사용자 단말(200)에게 정보를 전송하거나 서비스를 제공하는 전자 장치로서, 예를 들어, 애플리케이션 서버, 프록시 서버, 클라우드 서버 등일 수 있다.
사용자 단말(200)은 하나 이상의 사용자 단말 또는 둘 이상의 사용자 단말 집합을 지시할 수 있다. 본 명세서의 개시 내용에 따른 다양한 실시예에서 사용자 단말(200)이 둘 이상의 사용자 단말 집합을 지시할 경우, 각각의 사용자 단말은 제1 사용자 단말(200-1), 제2 사용자 단말(200-2), ..., 제n 사용자 단말(200-n)로 지칭될 수 있다(n은 2 이상의 자연수).
사용자 단말(200)은 서버(100)가 애플리케이션을 통해 제공하는 서비스를 이용하는 사용자의 단말일 수 있다. 사용자 단말(200)은, 예를 들어, 스마트폰, 태블릿 컴퓨터(Tablet Computer), PC(Personal Computer), 이동 전화기(Mobile Phone), PDA(Personal Digital Assistant), 오디오 플레이어(Audio Player), 웨어러블 장치(Wearable Device) 중 적어도 하나일 수 있다.
본 명세서의 개시 내용에서 일 장치의 구성 또는 동작을 설명할 때, "장치"라는 용어는 설명의 대상이 된 장치를 지칭하기 위한 용어이고, "외부 장치"라는 용어는 설명의 대상이 된 장치의 관점에서 볼 때 외부에 존재하는 장치를 지칭하기 위한 용어로서 각각 사용될 수 있다. 예를 들어 서버(100)를 "장치"로 두고 설명할 경우, 서버(100)의 관점에서 사용자 단말(200)은 "외부 장치"로 불릴 수 있다. 또한, 예를 들어 사용자 단말(200)을 "장치"로 두고 설명할 경우, 사용자 단말(200)의 관점에서 서버(100)는 "외부 장치"로 불릴 수 있다. 즉, 서버(100) 및 사용자 단말(200) 각각은 동작 주체의 관점에 따라 각각 "장치" 및 "외부 장치"로 지칭되거나 각각 "외부 장치" 및 "장치"로 지칭될 수 있다.
통신망(300)은 유선 또는 무선 통신망을 모두 포함할 수 있다. 통신망(300)은 서버(100) 및 사용자 단말(200) 사이에서 데이터가 교환되도록 할 수 있다. 유선 통신망은 예를 들어, USB(Universal Serial Bus), HDMI(High Definition Multimedia Interface), RS-232(Recommended Standard-232) 또는 POTS(Plain Old Telephone Service) 등의 방식에 따른 통신망을 포함할 수 있다. 무선 통신망은 예를 들어, eMBB(enhanced Mobile Broadband), URLLC(Ultra Reliable Low-Latency Communications), MMTC(Massive Machine Type Communications), LTE(Long-Term Evolution), LTE-A(LTE Advance), NR(New Radio), UMTS(Universal Mobile Telecommunications System), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), WCDMA(Wideband CDMA), WiBro(Wireless Broadband), WiFi(Wireless Fidelity), 블루투스(Bluetooth), NFC(Near Field Communication), GPS(Global Positioning System) 또는 GNSS(Global Navigation Satellite System) 등의 방식에 따른 통신망을 포함할 수 있다. 본 명세서의 통신망(300)은 상술한 예시들에 한정되지 않으며, 복수의 주체 또는 장치 사이에서 데이터가 교환되도록 하는 다양한 종류의 통신망을 제한없이 포함할 수 있다.
도 3은 본 명세서에 개시된 내용의 일 실시예에 따른 서버(100)의 블록도이다. 서버(100)는 하나 이상의 프로세서(110), 통신 회로(120) 또는 메모리(130)를 구성요소로서 포함할 수 있다. 어떤 실시예에서는, 서버(100)의 이 구성요소들 중 적어도 하나가 생략되거나, 다른 구성요소가 서버(100)에 추가될 수 있다. 어떤 실시예에서는, 추가적으로 또는 대체적으로(in alternative to), 일부의 구성요소들이 통합되어 구현되거나, 단수 또는 복수의 개체로 구현될 수 있다. 서버(100) 내부 또는 외부의 구성요소들 중 적어도 일부의 구성요소들은 버스, GPIO(General Purpose Input/Output), SPI(Serial Peripheral Interface) 또는 MIPI(Mobile Industry Processor Interface) 등을 통해 서로 연결됨으로써 데이터 또는 시그널을 주거나 받을 수 있다.
하나 이상의 프로세서(110)는 프로세서(110)라고 표현될 수 있다. 프로세서(110)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 프로세서의 집합을 의미할 수 있다. 프로세서(110)는 소프트웨어(예를 들어, 명령, 프로그램 등)를 구동하여 프로세서(110)와 연결된 서버(100)의 적어도 하나의 구성요소를 제어할 수 있다. 또한 프로세서(110)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한 프로세서(110)는 데이터 등을 메모리(130)로부터 로드하거나 메모리(130)에 저장할 수 있다.
통신 회로(120)는, 서버(100)와 다른 장치(예를 들어, 사용자 단말(200) 또는 다른 서버) 사이의 무선 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신 회로(120)는 eMBB, URLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, 블루투스, NFC, GPS 또는 GNSS 등의 방식에 따른 무선 통신을 수행할 수 있다. 또한, 예를 들어, 통신 회로(120)는 USB(Universal Serial Bus), HDMI(High Definition Multimedia Interface), RS-232(Recommended Standard-232) 또는 POTS(Plain Old Telephone Service) 등의 방식에 따른 유선 통신을 수행할 수 있다.
메모리(130)는 다양한 데이터를 저장할 수 있다. 메모리(130)에 저장되는 데이터는, 서버(100)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나 또는 사용되는 데이터로서, 소프트웨어(예를 들어, 명령, 프로그램 등)를 포함할 수 있다. 메모리(130)는 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 메모리의 집합을 의미할 수 있다. 본 명세서에서 언급되는 "메모리(130)에 저장되는 명령(Instruction)들의 집합" 또는 "메모리(130)에 저장되는 프로그램"이라는 표현은, 서버(100)의 리소스를 제어하기 위한 운영체제, 어플리케이션 또는 어플리케이션이 서버(100)의 리소스들을 활용할 수 있도록 어플리케이션에 다양한 기능을 제공하는 미들 웨어 등을 지칭하기 위해 사용될 수 있다. 일 실시예에서, 프로세서(110)가 특정 연산을 수행할 때, 메모리(130)는 프로세서(110)에 의해 수행되고 특정 연산에 대응되는 명령들을 저장할 수 있다.
일 실시예에서, 서버(100)는 프로세서(110)의 연산 결과에 따른 데이터, 통신 회로(120)에 의해 수신된 데이터 또는 메모리(130)에 저장된 데이터 등을 외부 장치로 전송할 수 있다. 외부 장치는 수신된 데이터를 출력(표시 또는 표출)하기 위한 장치일 수 있다. 외부 장치는 예를 들어, 사용자 단말(200)일 수 있다.
도 4는 본 명세서에 개시된 내용의 일 실시예에 따른 사용자 단말(200)의 블록도이다. 사용자 단말(200)은 하나 이상의 프로세서(210), 통신 회로(220) 또는 메모리(230)를 구성요소로서 포함할 수 있다. 또한 사용자 단말(200)은 입력부(240) 또는 출력부(250) 중 적어도 하나를 더 포함할 수도 있다.
프로세서(210)는 소프트웨어(예를 들어, 명령, 프로그램 등)를 구동하여 프로세서(110)와 연결된 사용자 단말(200)의 적어도 하나의 구성요소를 제어할 수 있다. 또한 프로세서(210)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한 프로세서(210)는 데이터 등을 메모리(230)로부터 로드하거나 메모리(230)에 저장할 수 있다.
통신 회로(220)는, 사용자 단말(200)과 다른 장치(예를 들어, 서버(100) 또는 다른 사용자 단말) 사이의 무선 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신 회로(220)는 eMBB, URLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, 블루투스, NFC, GPS 또는 GNSS 등의 방식에 따른 무선 통신을 수행할 수 있다. 또한, 예를 들어, 통신 회로(220)는 USB, HDMI, RS-232 또는 POTS 등의 방식에 따른 유선 통신을 수행할 수 있다.
메모리(230)는 다양한 데이터를 저장할 수 있다. 메모리(230)에 저장되는 데이터는, 사용자 단말(200)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나 또는 사용되는 데이터로서, 소프트웨어(예를 들어, 명령, 프로그램 등)를 포함할 수 있다. 메모리(230)는 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 메모리(230)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 메모리의 집합을 의미할 수 있다. 본 명세서에서 언급되는 "메모리(230)에 저장되는 명령(Instruction)들의 집합" 또는 "메모리(230)에 저장되는 프로그램"이라는 표현은, 사용자 단말(200)의 리소스를 제어하기 위한 운영체제, 어플리케이션 또는 어플리케이션이 사용자 단말(200)의 리소스들을 활용할 수 있도록 어플리케이션에 다양한 기능을 제공하는 미들 웨어 등을 지칭하기 위해 사용될 수 있다. 일 실시예에서, 프로세서(210)가 특정 연산을 수행할 때, 메모리(230)는 프로세서(210)에 의해 수행되고 특정 연산에 대응되는 명령들을 저장할 수 있다.
일 실시예에서, 사용자 단말(200)은 입력부(240)를 더 포함할 수 있다. 입력부(240)는 외부로부터 수신된 데이터를 사용자 단말(200)에 포함된 적어도 하나의 구성요소로 전달하는 구성요소일 수 있다. 예를 들어, 입력부(240)는 마우스, 키보드, 또는 터치 패드 등을 포함할 수 있다.
일 실시예에서, 사용자 단말(200)은 출력부(250)를 더 포함할 수 있다. 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 표시(출력)하거나 외부로 전송(송출)할 수 있다. 예를 들어, 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 시각적으로 표시할 수 있다. 출력부(250)는 UI(User Interface) 정보 또는 GUI(Graphic User Interface) 정보 등을 표시할 수 있다. 이 경우, 출력부(250)는 액정 디스플레이(Liquid Crystal Display, LCD), 박막 트랜지스터 액정 디스플레이(Thin Film Transistor-Liquid Crystal Display, TFT-LCD), 유기 발광 다이오드(Organic Light-Emitting Diode, OLED), 플렉시블 디스플레이(Flexible Display), 3차원 디스플레이(3D Display), 전자잉크 디스플레이(E-ink Display) 중에서 적어도 하나를 포함할 수 있다. 또한, 예를 들어, 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 청각적으로 표시할 수 있다. 출력부(250)는 임의의 오디오 파일 포맷(예를 들어, MP3, FLAC, WAV 등) 방식을 따르는 오디오 데이터를 음향 장치를 통해 표시할 수 있다. 이 경우, 출력부(250)는 스피커, 헤드셋, 헤드폰 중 적어도 하나를 포함할 수 있다.
도 5는 본 개시의 일 실시예에 따라 서버(100)가 복수의 애플리케이션의 성능을 측정하는 동작에 관한 순서도이다.
서버(100)는 제1 타입 애플리케이션에 관한 제1 메트릭 세트를 획득할 수 있다(S510).
본 명세서의 개시내용에서 "제1 타입 애플리케이션"은 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션을 지칭할 수 있다. 여기서 "메트릭 API"란 측정 항목에 관한 정보를 반환하는 API를 지칭할 수 있다. 제1 타입 애플리케이션은 적어도 하나의 측정 항목(예를 들면, 인터넷 속도, API 호출 지연 등)에 관한 GET 요청(request)에 응답하기 위한 API를 제공할 수 있다. 제1 타입 애플리케이션은 사용자 입력에 기초하여 동작하는 포그라운드(Foreground) 애플리케이션일 수 있다. 구체적으로, 제1 타입 애플리케이션은 사용자 단말(200)의 출력부(250) 등을 통해 사용자와 상호작용(interaction)하고, 서버(100)와 데이터를 주고받는 유형의 애플리케이션일 수 있다. 제1 타입 애플리케이션은 포그라운드 애플리케이션으로서 동작하기 위해 상술한 메트릭 API를 포함하여 외부에서 호출될 수 있는 다양한 API를 제공하도록 만들어진 애플리케이션일 수 있다.
본 명세서의 개시내용에서 "메트릭 세트"는 메트릭 데이터(또는 측정 지표 데이터)에 관한 집합으로서, 적어도 하나의 측정 항목을 포함하는 집합을 지칭할 수 있다. 메트릭 세트는 적어도 하나의 측정 항목 및 각 측정 항목에 대한 값을 포함할 수 있다. 이하에서는 설명의 편의상 측정 항목 및 해당 항목에 대한 값의 쌍을 "측정 항목에 관한 정보"로 호칭할 수 있다.
제1 메트릭 세트는 제1 타입 애플리케이션과 관련된 적어도 하나의 측정 항목에 관한 정보를 포함하는 메트릭 세트일 수 있다. 예를 들어, 서버(100)는 제1 타입 애플리케이션에 해당하는 특정 애플리케이션(이하, "A" 애플리케이션이라고도 함)으로부터 메트릭 API의 호출에 따른 응답을 수신함으로써 제1 메트릭 세트를 획득할 수 있다. 제1 메트릭 세트는 적어도 하나의 측정 항목에 관한 정보(예를 들어, 인터넷 속도에 관한 정보, API 호출 지연 시간에 관한 정보 등)을 포함할 수 있다. 구체적으로, 프로세서(110)는 사용자 단말(200)에 설치된 "A" 애플리케이션이 제공하는 API 중 현재 연결된 인터넷의 속도를 반환하는 메트릭 API(예를 들면, GET 요청)를 호출하고, 그에 대한 응답으로 "A" 애플리케이션으로부터 인터넷 속도에 관한 값을 수신할 수 있다. 또한, 프로세서(110)는 사용자 단말(200)에 설치된 "A" 애플리케이션이 제공하는 API 중 애플리케이션이 서비스를 제공하기 위해 사용하는 특정 API(예를 들어, 애플리케이션 전자 상거래 서비스를 제공하는 애플리케이션인 경우, 외부의 배송 업체로부터 현재 배송 정보를 불러오는 API 등)의 호출 지연 시간(Latency)을 반환하는 메트릭 API를 호출하고, 그에 대한 응답으로 "A" 애플리케이션으로부터 API 호출 지연 시간에 관한 값을 수신할 수 있다.
서버(100)는 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득할 수 있다(S520).
본 명세서의 개시내용에서 "제2 타입 애플리케이션"은 메트릭 API를 제공하지 않는 유형의 애플리케이션을 지칭할 수 있다. 예를 들어, 제2 타입 애플리케이션은, 제1 타입 애플리케이션과 달리 외부로부터의 메트릭 데이터 전송 요청에 대해 응답하는 API를 제공하지 않는 애플리케이션일 수 있다. 제2 타입 애플리케이션은 사용자 입력과 무관하게 동작하는 백그라운드(Background) 애플리케이션일 수 있다. 구체적으로, 제2 타입 애플리케이션은 사용자 단말(200)에 설치된 후, 사용자로부터 허용된 권한에 따라 사용자 단말(200)의 특정 데이터를 수집하는 애플리케이션일 수 있다. 제2 타입 애플리케이션은 백그라운드 애플리케이션으로서 메트릭 API를 제공하지 않는 유형의 애플리케이션일 수 있다. 제2 타입 애플리케이션은 사전 결정된 특정 이벤트(예를 들어, 에러 발생)가 발생하거나 소정 주기가 경과함에 따라 메트릭 데이터를 외부 장치(예를 들어, 서버(100) 등)로 전송하는 애플리케이션일 수 있다. 즉, 제2 타입 애플리케이션은 외부로부터 자유롭게 호출될 수 있는 메트릭 API를 제공하지 않는 애플리케이션으로서, 해당 애플리케이션에서 정의된 특정 시점에만 산출된 메트릭 데이터를 외부 장치로 전송하는 애플리케이션일 수 있다.
제2 메트릭 세트는 제2 타입 애플리케이션과 관련된 적어도 하나의 측정 항목에 관한 정보를 포함하는 메트릭 세트일 수 있다. 예를 들어, 서버(100)는 제2 타입 애플리케이션에 해당하는 특정 애플리케이션(이하, "B" 애플리케이션이라고도 함)으로부터 사전 결정된 특정 시점에 메트릭 데이터를 수신함으로써 제2 메트릭 세트를 획득할 수 있다. 사전 결정된 특정 시점은 "B" 애플리케이션이 생성될 당시 또는 사용자 단말(200)에 다운될 당시에 기본값으로 설정될 수 있다. 제2 메트릭 세트는 적어도 하나의 측정 항목에 관한 정보(예를 들어, 인터넷 속도에 관한 정보, API 호출 지연 시간에 관한 정보 등)을 포함할 수 있다. 구체적으로, 프로세서(110)는 사용자 단말(200)에 설치된 "B" 애플리케이션으로부터 사전 결정된 특정 시점에 인터넷 속도에 관한 값을 수신할 수 있다. 또한, 프로세서(110)는 사용자 단말(200)에 설치된 "B" 애플리케이션으로부터 사전 결정된 특정 시점에 API 호출 지연 시간에 관한 값을 수신할 수 있다.
본 명세서의 개시내용에 따른 제1 메트릭 세트 및 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함할 수 있다. 예를 들어, 공통 측정 항목은, 인터넷 속도, API 호출 지연 시간(Latency) 또는 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목 중 적어도 하나를 포함할 수 있다. 이때, 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목에 관한 일례로서, 제1 타입 애플리케이션 및 제2 타입 애플리케이션이 모두 "Kafka"라는 데이터 처리 플랫폼을 사용하는 경우, 제1 메트릭 세트 및 제2 메트릭 세트는 공통 측정 항목으로서 Kafka의 현재 상태(예를 들면, 미처리 데이터의 양, 단위 시간당 데이터 처리량 등)를 모니터링하기 위한 하나 이상의 지표를 포함할 수 있다. 또한, 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목에 관한 다른 일례로서, 제1 타입 애플리케이션 및 제2 타입 애플리케이션이 모두 "Redis"라는 데이터베이스를 사용하는 경우, 제1 메트릭 세트 및 제2 메트릭 세트는 공통 측정 항목으로서 Redis의 현재 상태(예를 들면, 데이터베이스 용량 등)를 모니터링하기 위한 하나 이상의 지표를 포함할 수 있다. 또한, 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목에 관한 다른 일례로서, 제1 타입 애플리케이션 및 제2 타입 애플리케이션이 모두 "HikariCP"라는 데이터베이스 관리 프로그램을 사용하는 경우, 제1 메트릭 세트 및 제2 메트릭 세트는 공통 측정 항목으로서 HikariCP의 현재 상태(예를 들면, 커넥션 풀의 성능 등)를 모니터링하기 위한 하나 이상의 지표를 포함할 수 있다.
본 개시에 따른 일 실시예에서, 서버(100)는 미리 작성된 특정 함수를 공통적으로 사용하여 제1 타입 애플리케이션 및 제2 타입 애플리케이션 각각으로부터 적어도 하나의 공통 측정 항목에 관한 정보를 획득할 수 있다. 여기서 미리 작성된 특정 함수란, 소스 코드(Source code)의 집합으로서, 제1 타입 애플리케이션 또는 제2 타입 애플리케이션에 공통적으로 적용될 수 있는 함수를 지칭할 수 있다. 예를 들어, 인터넷 속도를 획득하기 위한 특정 함수는 입력 파라미터로서 애플리케이션 식별 번호, 사용자 단말 식별 번호 등을 수신하도록 미리 생성될 수 있다. 이때, 서버(100)는 인터넷 속도를 획득하기 위한 특정 함수를 입력 파라미터를 변경하고 공통적으로 사용함으로써 제1 타입 애플리케이션 및 제2 타입 애플리케이션 각각으로부터 인터넷 속도에 관한 정보를 획득할 수 있다. 이를 통해, 기 작성된 코드(즉, 미리 작성된 특정 함수)의 재사용성을 높여 애플리케이션 생성 시간을 단축시킬 수 있다. 또한, 본 개시에 따르면 제1 타입 애플리케이션 및 제2 타입 애플리케이션과 같이 서로 다른 유형의 애플리케이션이라도, 각 애플리케이션에 대해 미리 작성된 특정 함수를 동일하게 사용함으로써 복수의 애플리케이션에 대해 공통으로 측정되어야 하는 측정 항목에 관한 정보가 통합적으로 관리될 수 있다.
본 명세서의 개시내용에 따른 제1 메트릭 세트 또는 제2 메트릭 세트는 사용자에 의해 정의된 측정 항목에 관한 정보를 포함할 수 있다. 예를 들어, 제1 타입 애플리케이션 및/또는 제2 타입 애플리케이션이 전자 상거래와 관련된 애플리케이션인 경우, 제1 메트릭 세트 또는 제2 메트릭 세트는 애플리케이션 동작 오류 코드, 애플리케이션 오류에 따른 주문 실패 여부, 사용자에 의한 주문 취소 여부, 분당 주문 수 중 적어도 하나를 포함할 수 있다. 애플리케이션 동작 오류 코드란, 예를 들어, 애플리케이션이 특정 동작을 수행할 때 오류가 발생한 경우 해당 오류의 코드(예를 들어, 401, 404 등)를 의미할 수 있다. 애플리케이션 오류에 따른 주문 실패 여부란, 예를 들어, 애플리케이션의 동작 오류에 따라 사용자의 주문이 실패한 경우에 "1"의 값을 갖고 그렇지 않은 경우에 "0"의 값이 할당된 측정 항목 값을 의미할 수 있다. 사용자에 의한 주문 취소 여부란, 예를 들어, 사용자가 직접 주문을 취소한 경우에 "1"의 값을 갖고 그렇지 않은 경우에 "0"의 값이 할당된 측정 항목 값을 의미할 수 있다.
서버(100)는 제1 메트릭 세트 및 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 제1 타입 애플리케이션 및 제2 타입 애플리케이션 각각의 상태를 결정할 수 있다(S530). 예를 들어, 서버(100)는 각 애플리케이션의 인터넷 속도에 관한 정보, API 호출 지연 시간 정보 등에 따라 애플리케이션이 정상적으로 동작하는 지 여부를 결정할 수 있다. 구체적으로, 프로세서(110)는 메트릭 세트에 포함된 각 측정 항목에 관한 정보 중 특정 측정 항목에 관한 정보에 이상이 있을 경우 해당 애플리케이션에 에러가 있다는 정보를 생성하고 서버(100)의 사용자에게 알릴 수 있다.
본 개시에 따른 일 실시예에서, 서버(100)는 제1 메트릭 세트 및 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보를 처리할 때 큐(Queue) 리스트를 이용하여 순차적으로 처리할 수 있다. 프로세서(110)는 제1 메트릭 세트 또는 제2 메트릭 세트가 수신된 시각에 따라서 각 메트릭 세트에 포함된 측정 항목에 관한 정보들을 큐 리스트에 입력할 수 있다. 예를 들어, 프로세서(110)는 먼저 수신된 메트릭 세트에 포함된 측정 항목에 관한 정보들을 우선적으로 큐 리스트에 입력할 수 있다. 또한, 프로세서(110)는 각 애플리케이션의 우선순위에 따라서 메트릭 세트에 포함된 측정 항목에 관한 정보들을 큐 리스트에 입력할 수 있다. 예를 들어, 제1 타입 애플리케이션이 제2 타입 애플리케이션보다 우선순위가 높다고 설정된 경우, 프로세서(110)는 제1 타입 애플리케이션에 관한 제1 메트릭 세트 및 제2 타입 애플리케이션에 관한 제2 메트릭 세트를 모두 수신하였고 제2 메트릭 세트가 먼저 수신되었다고 하더라도 제2 메트릭 세트가 아직 큐 리스트에 입력되지 않은 경우에는 제1 메트릭 세트를 우선적으로 큐 리스트에 입력할 수 있다. 프로세서(110)는 큐 리스트로부터 측정 항목에 관한 정보를 순차적으로 반출 및 처리할 수 있다. 즉, 프로세서(110)는 선입선출(First-In-First-Out) 방식으로 서로 다른 애플리케이션들로부터 수신한 적어도 하나의 측정 항목에 관한 정보를 처리할 수 있다. 본 개시에 있어서, 상술한 큐 리스트의 사이즈는 서버(100)가 관리하는 애플리케이션의 개수 또는 서버(100)의 성능 등에 따라 가변적으로 결정될 수 있다.
프로세서(110)는 사전 결정된 개수의 쓰레드(Thread)를 사용하여 상기 적어도 하나의 측정 항목에 관한 정보를 처리할 수 있다. 측정 항목에 관한 정보를 처리하기 위한 쓰레드의 사전 결정된 개수는 서비스를 제공하기 위한 메인 쓰레드의 개수를 고려하여 적절한 수로 설정될 수 있다. 예를 들어, 측정 항목에 관한 정보를 처리하기 위한 쓰레드의 사전 결정된 개수는 현재 시간, 서비스 상황, 서버(100) 연산량 등을 고려하여 가변적으로 결정될 수 있다. 프로세서(110)는 큐 리스트로부터 측정 항목에 관한 정보를 순차적으로 처리하되, 현재 사용 가능한 가용 쓰레드(Thread)가 존재하는 경우에 큐 리스트로부터 측정 항목에 관한 정보를 반출하고, 이를 사용 가능한 가용 쓰레드에 할당함으로써 메트릭 데이터를 처리할 수 있다.
상술한 바와 같이 적어도 하나의 측정 항목에 관한 정보를 큐 리스트를 이용하여 처리하는 본 개시의 일 실시예에 따르면, 특정 시간대에 복수의 애플리케이션으로부터 측정 항목에 관한 정보가 집중적으로 수신되더라도 큐 리스트를 이용하여 트래픽을 조절하면서 순차적으로 정보를 처리할 수 있기 때문에 서버(100)의 연산 부담이 감소할 수 있다. 또한, 본 개시는 큐 리스트 및 사전 결정된 개수의 쓰레드를 사용하여 메트릭 데이터를 처리하기 때문에 서버(100)의 메트릭 데이터 관리 동작은 기본적인 서비스 동작의 성능을 저해하지 않으면서 효율적으로 수행될 수 있다.
이하에서는, 도 1을 참조하여 전술된 바와 같이 본 개시의 애플리케이션 성능 측정 방법이 수행되는 전자 장치(10)가 사용자 단말(200)인 경우의 추가 실시예들에 대하여 설명한다. 또한, 전자 장치(10)가 서버(100)인 경우에 관하여 상술된 바와 중복되는 내용에 대해서는 생략하고 차이점에 대하여 주로 설명한다.
본 개시에 따른 애플리케이션 성능 측정 방법이 사용자 단말(200)에서 수행될 경우, 사용자 단말(200)은 각 애플리케이션으로부터 수신된 메트릭 데이터를 분류하고, 각 메트릭 데이터의 분류 결과를 서버(100)로 전달할 수 있다. 즉, 사용자 단말(200)이 애플리케이션 성능 측정 방법을 수행할 경우, 도 5의 각 단계 중 S510 및 S520은 상술한 바와 유사하게 사용자 단말(200)에 의해 수행될 수 있다. 또한, 프로세서(210)는 소정의 방식에 따라 각 메트릭 세트에 포함된 측정 항목에 관한 정보를 서버(100)로 전달할 수 있다. 구체적으로, 프로세서(210)는 제1 타입 애플리케이션 및 제2 타입 애플리케이션 각각으로부터 수신되는 제1 메트릭 세트 및 제2 메트릭 세트를 프로세서(210)가 관리하는 적어도 하나의 쓰레드를 통해 처리한 후 서버(100)로 전달할 수 있다. 프로세서(210)가 메트릭 데이터를 처리하기 위해 사용하는 쓰레드는 제1 타입 애플리케이션 또는 제2 타입 애플리케이션을 구동하기 위한 쓰레드와 구분되는 쓰레드일 수 있다. 메트릭 데이터를 처리하기 위한 쓰레드(thread)의 수는 각 애플리케이션이 구동되는 사용자 단말(200)의 상황이나 성능에 따라서 가변적으로 결정될 수 있다.
프로세서(210)는 수신된 측정 항목 정보의 메트릭 이름(metric name)을 메트릭 타입(metric type)과 매칭하고, 그 매칭 데이터를 서버(100)로 전송할 수 있다. 서버(100)는 메트릭 데이터에 대한 분류 결과에 해당하는 매칭 데이터를 프로세서(210)로부터 수신함으로써 연산 부담을 줄일 수 있다. 메트릭 이름은 상술한 미리 작성된 특정 함수의 명칭일 수 있으며, 측정 대상이 되는 측정 항목에 따라 미리 결정될 수 있다. 예를 들어, 메트릭 이름은 "order_succeed_metric", "status_true_metric", "status_false_metric" 등으로 미리 결정될 수 있다. 또한, 메트릭 타입은 복수의 측정 항목을 분류하기 위한 값으로서, 메트릭 이름에 따라 미리 결정되어 메모리(230)에 저장되어 있을 수 있다. 프로세서(210)는 메모리(230)를 참조함으로써 메트릭 이름과 매칭되는 메트릭 타입을 결정하고 매칭 데이터를 생성할 수 있다. 만약 측정 항목들 간에 메트릭 타입이 서로 다른 경우, 해당 측정 항목들은 관리자에게 시각적으로 서로 다르게 표시되거나 또는 서로 다른 시점에 전달될 수 있다. 또한, 측정 항목들 간에 메트릭 타입이 서로 같은 경우, 해당 측정 항목들은 관리자에게 시각적으로 동일하게 표시되거나 또는 동일한 시점에 전달될 수 있다. 일례로, 메트릭 데이터는 서버(100)의 디스플레이(예를 들어, 대시보드)를 통해 시각적으로 표시될 수 있다. 메트릭 타입은 예를 들어, Counter, Gauge, Summary, Histogram 등을 포함할 수 있다.
상술한 바와 같이 본 개시의 애플리케이션 성능 측정 방법이 사용자 단말(200)에서 수행될 경우 사용자 단말(200)은 각 애플리케이션을 구동하면서 동시에 각 애플리케이션의 성능을 나타내는 메트릭 데이터를 별도로 처리할 수 있다. 이는 서버(100) 측의 연산 부담을 감소시킬 수 있다. 또한, 사용자 단말(200)은 애플리케이션에 의해 제공되는 기본적인 서비스(예를 들면, 전자 상거래의 주문 기능)의 성능 또는 품질에 영향을 주지 않기 위해 별도 쓰레드를 할당 받아 메트릭 데이터의 처리를 비동기적으로 처리할 수 있으므로 메트릭 데이터의 트래픽 관리가 용이해지는 효과를 갖는다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 전자 장치(10), 서버(100) 내지 사용자 단말(200)일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (20)

  1. 적어도 하나의 외부 장치와 통신하는 통신 회로;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고,
    상기 하나 이상의 프로세서는,
    제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하고,
    제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하고,
    상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각의 상태를 결정하도록 구성되고,
    상기 제1 메트릭 세트 및 상기 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함하는, 전자 장치.
  2. 제1항에 있어서,
    상기 제1 타입 애플리케이션은 측정 항목에 관한 정보를 반환하는 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션이고,
    상기 제2 타입 애플리케이션은 상기 메트릭 API를 제공하지 않는 유형의 애플리케이션인, 전자 장치.
  3. 제2항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 제1 타입 애플리케이션으로부터 상기 메트릭 API의 호출에 따른 응답을 수신함으로써 상기 제1 메트릭 세트를 획득하고,
    상기 제2 타입 애플리케이션으로부터 사전 결정된 특정 시점에 메트릭 데이터를 수신함으로써 상기 제2 메트릭 세트를 획득하는, 전자 장치.
  4. 제2항에 있어서,
    상기 제1 타입 애플리케이션은 사용자 입력에 기초하여 동작하는 포그라운드(Foreground) 애플리케이션이고,
    상기 제2 타입 애플리케이션은 사용자 입력과 무관하게 동작하는 백그라운드(Background) 애플리케이션인, 전자 장치.
  5. 제1항에 있어서,
    상기 공통 측정 항목은,
    인터넷 속도, API 호출 지연 시간(Latency) 또는 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목 중 적어도 하나를 포함하는, 전자 장치.
  6. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    미리 작성된 특정 함수를 공통적으로 사용하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각으로부터 상기 적어도 하나의 공통 측정 항목에 관한 정보를 획득하는, 전자 장치.
  7. 제1항에 있어서,
    상기 제1 메트릭 세트 또는 상기 제2 메트릭 세트는,
    사용자에 의해 정의된 측정 항목에 관한 정보를 포함하는, 전자 장치.
  8. 제7항에 있어서,
    상기 제1 타입 애플리케이션 또는 상기 제2 타입 애플리케이션은 전자 상거래와 관련된 애플리케이션이고,
    상기 사용자에 의해 정의된 측정 항목은,
    애플리케이션 동작 오류 코드, 애플리케이션 오류에 따른 주문 실패 여부, 사용자에 의한 주문 취소 여부, 또는 분당 주문 수 중 적어도 하나를 포함하는, 전자 장치.
  9. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 적어도 하나의 측정 항목에 관한 정보를 큐(Queue) 리스트를 이용하여 순차적으로 처리하는, 전자 장치.
  10. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    사전 결정된 개수의 쓰레드(Thread)를 사용하여 상기 적어도 하나의 측정 항목에 관한 정보를 처리하는, 전자 장치.
  11. 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나의 명령을 저장하는 하나 이상의 메모리를 포함하는 전자 장치에 의해 수행되는 방법으로서,
    제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하는 단계;
    제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하는 단계; 및
    상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각의 상태를 결정하는 단계를 포함하고,
    상기 제1 메트릭 세트 및 상기 제2 메트릭 세트는 적어도 하나의 공통 측정 항목에 관한 정보를 각각 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제1 타입 애플리케이션은 측정 항목에 관한 정보를 반환하는 메트릭 API(Application Programming Interface)를 제공하는 유형의 애플리케이션이고,
    상기 제2 타입 애플리케이션은 상기 메트릭 API를 제공하지 않는 유형의 애플리케이션인, 방법.
  13. 제12항에 있어서,
    상기 제1 메트릭 세트를 획득하는 단계는,
    상기 제1 타입 애플리케이션으로부터 상기 메트릭 API의 호출에 따른 응답을 수신함으로써 상기 제1 메트릭 세트를 획득하는 단계를 포함하고,
    상기 제2 메트릭 세트를 획득하는 단계는,
    상기 제2 타입 애플리케이션으로부터 사전 결정된 특정 시점에 메트릭 데이터를 수신함으로써 상기 제2 메트릭 세트를 획득하는 단계를 포함하는, 방법.
  14. 제12항에 있어서,
    상기 제1 타입 애플리케이션은 사용자 입력에 기초하여 동작하는 포그라운드(Foreground) 애플리케이션이고,
    상기 제2 타입 애플리케이션은 사용자 입력과 무관하게 동작하는 백그라운드(Background) 애플리케이션인, 방법.
  15. 제11항에 있어서,
    상기 공통 측정 항목은,
    인터넷 속도, API 호출 지연 시간(Latency), 또는 특정 소프트웨어를 관리하기 위해 사전 결정된 측정 항목 중 적어도 하나를 포함하는, 방법.
  16. 제11항에 있어서,
    미리 작성된 특정 함수를 공통적으로 사용하여 상기 제1 타입 애플리케이션 및 상기 제2 타입 애플리케이션 각각으로부터 상기 적어도 하나의 공통 측정 항목에 관한 정보를 획득하는 단계를 더 포함하는, 방법.
  17. 제11항에 있어서,
    상기 제1 메트릭 세트 또는 상기 제2 메트릭 세트는,
    사용자에 의해 정의된 측정 항목에 관한 정보를 포함하는, 방법.
  18. 제17항에 있어서,
    상기 제1 타입 애플리케이션 또는 상기 제2 타입 애플리케이션은 전자 상거래와 관련된 애플리케이션이고,
    상기 사용자에 의해 정의된 측정 항목은,
    애플리케이션 동작 오류 코드, 애플리케이션 오류에 따른 주문 실패 여부, 사용자에 의한 주문 취소 여부, 또는 분당 주문 수 중 적어도 하나를 포함하는, 방법.
  19. 제11항에 있어서,
    상기 적어도 하나의 측정 항목에 관한 정보를 큐(Queue) 리스트를 이용하여 순차적으로 처리하는 단계를 더 포함하는, 방법.
  20. 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 동작을 수행하도록 하는 명령들을 기록한 비일시적 컴퓨터 판독 가능 기록매체에 있어서,
    상기 명령들은, 상기 하나 이상의 프로세서로 하여금,
    제1 타입 애플리케이션에 관한 제1 메트릭(metric) 세트를 획득하고,
    제2 타입 애플리케이션에 관한 제2 메트릭 세트를 획득하고,
    상기 제1 메트릭 세트 및 상기 제2 메트릭 세트에 포함된 적어도 하나의 측정 항목에 관한 정보에 기초하여 메트릭 이름 및 메트릭 타입을 매칭함으로써 매칭 데이터를 생성하고,
    상기 매칭 데이터를 외부 장치로 전송하도록 구성되는, 컴퓨터 판독 가능 기록매체.
PCT/KR2023/001584 2022-11-28 2023-02-03 애플리케이션의 성능을 측정하는 장치 및 방법 WO2024117383A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2022-0161693 2022-11-28
KR1020220161693A KR102617002B1 (ko) 2022-11-28 2022-11-28 애플리케이션의 성능을 측정하는 장치 및 방법

Publications (1)

Publication Number Publication Date
WO2024117383A1 true WO2024117383A1 (ko) 2024-06-06

Family

ID=89377554

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2023/001584 WO2024117383A1 (ko) 2022-11-28 2023-02-03 애플리케이션의 성능을 측정하는 장치 및 방법

Country Status (2)

Country Link
KR (2) KR102617002B1 (ko)
WO (1) WO2024117383A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006289A1 (en) * 2007-06-29 2009-01-01 Numenta, Inc. Hierarchical Temporal Memory System with Enhanced Inference Capability
KR20090017586A (ko) * 2006-06-16 2009-02-18 마이크로소프트 코포레이션 Api의 성능을 측정하는 방법, 컴퓨터 시스템, 및 컴퓨터판독가능 매체
KR20130011491A (ko) * 2011-07-21 2013-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR20210100600A (ko) * 2018-10-02 2021-08-17 타마스 씨저 소프트웨어 테스팅
KR102365839B1 (ko) * 2020-08-12 2022-02-21 숭실대학교산학협력단 애플리케이션 성능 모니터링 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090017586A (ko) * 2006-06-16 2009-02-18 마이크로소프트 코포레이션 Api의 성능을 측정하는 방법, 컴퓨터 시스템, 및 컴퓨터판독가능 매체
US20090006289A1 (en) * 2007-06-29 2009-01-01 Numenta, Inc. Hierarchical Temporal Memory System with Enhanced Inference Capability
KR20130011491A (ko) * 2011-07-21 2013-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR20210100600A (ko) * 2018-10-02 2021-08-17 타마스 씨저 소프트웨어 테스팅
KR102365839B1 (ko) * 2020-08-12 2022-02-21 숭실대학교산학협력단 애플리케이션 성능 모니터링 방법 및 장치

Also Published As

Publication number Publication date
KR20240079187A (ko) 2024-06-04
KR102617002B1 (ko) 2023-12-27

Similar Documents

Publication Publication Date Title
WO2013154365A1 (ko) 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
WO2013165180A1 (ko) 로그 모니터링 방법, 그 서버 및 기록 매체
CN110753089A (zh) 一种管理客户端的方法、装置、介质和电子设备
WO2016190700A1 (ko) 통화 음질 개선을 위한 시스템 및 방법
WO2020096282A1 (en) Service-aware serverless cloud computing system
CN110619096B (zh) 用于同步数据的方法和装置
CN108804295A (zh) 日志信息记录方法和装置
WO2013002574A2 (ko) 사용자 친밀도 기반의 주소록 생성을 위한 시스템, 서버 장치, 단말 장치, 기록매체 및 사용자 친밀도 기반의 주소록 생성 방법
WO2015093731A1 (en) Electronic device and operating method thereof
WO2024117383A1 (ko) 애플리케이션의 성능을 측정하는 장치 및 방법
WO2015034246A1 (en) Electronic device and method of processing user input by electronic device
WO2015108282A1 (ko) 전자 장치의 광고 방법 및 그 전자 장치
WO2019000962A1 (zh) 收益计算方法、装置及计算机可读存储介质
WO2024143667A1 (ko) Api 호출에 관한 정보를 제공하는 장치, 방법 및 기록매체
WO2019160323A1 (ko) 어플리케이션과 관련된 데이터를 관리하기 위한 방법 및 그 전자 장치
WO2023177024A1 (ko) 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법
WO2022196853A1 (ko) 분산 시스템의 데이터 처리 방법 및 이를 위한 전자 장치
CN112379967B (zh) 模拟器检测方法、装置、设备及介质
CN112286808B (zh) 应用程序的测试方法、装置、电子设备及介质
WO2016159484A1 (ko) 모바일 단말의 사용자 정보를 이용한 맞춤형 콘텐츠 공유 방법 및 장치
WO2024147388A1 (ko) 동일한 네트워크에 연결된 장치의 식별
CN111382057B (zh) 测试用例生成方法,测试方法及装置,服务器及存储介质
CN113176937A (zh) 任务处理方法、装置和电子设备
WO2024071455A1 (ko) 과제에 대한 솔루션의 제공
KR102642735B1 (ko) Api 호출에 관한 정보를 제공하는 장치, 방법 및 기록매체