KR102247371B1 - 애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구 - Google Patents

애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구 Download PDF

Info

Publication number
KR102247371B1
KR102247371B1 KR1020207005239A KR20207005239A KR102247371B1 KR 102247371 B1 KR102247371 B1 KR 102247371B1 KR 1020207005239 A KR1020207005239 A KR 1020207005239A KR 20207005239 A KR20207005239 A KR 20207005239A KR 102247371 B1 KR102247371 B1 KR 102247371B1
Authority
KR
South Korea
Prior art keywords
application
software package
recovery
request
abnormal
Prior art date
Application number
KR1020207005239A
Other languages
English (en)
Other versions
KR20200027031A (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 우버 테크놀로지스, 인크.
Publication of KR20200027031A publication Critical patent/KR20200027031A/ko
Application granted granted Critical
Publication of KR102247371B1 publication Critical patent/KR102247371B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

애플리케이션 복구 시스템은, 애플리케이션이 비정상적으로 동작하고 있음을 판정하고 애플리케이션에 복구 명령을 제공함으로써, 클라이언트 장치에서 실행되는 애플리케이션을 복구하도록 구성된다. 클라이언트 장치에서 실행되는 애플리케이션은 애플리케이션의 메인 부분과 애플리케이션의 복구 부분을 포함한다. 애플리케이션의 복구 부분은 복구 명령 요청을 네트워크 시스템으로 전송한다. 네트워크 시스템은 복구 요청을 수신하고 애플리케이션의 메인 부분에 의해 생성된 동작 요청을 분석하여 실패한 기능 및 관련 소프트웨어 패키지를 식별한다. 복구 명령은 식별된 실패한 기능 및 관련 소프트웨어 패키지에 기초하여 결정되어 클라이언트 장치로 전송된다. 클라이언트 장치는 복구 명령을 적용하여 애플리케이션이 정상 동작을 복구하도록 애플리케이션을 수정한다.

Description

애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구
본 개시는 일반적으로 장치에서 실행되는 애플리케이션의 기능(function) 복원에 관한 것으로, 보다 구체적으로는 장치에서 실행되는 비정상적인 소프트웨어 패키지를 검출, 판정 및 수정하여 애플리케이션의 기능을 복원하는 것에 관한 것이다.
클라이언트 장치들 및 이들 장치에 설치된 애플리케이션은 애플리케이션에 포함된 소프트웨어 패키지를 실행하여 사용자에게 다양한 기능을 제공한다. 예를 들어, 애플리케이션은 사용자를 연결해서 인터넷 상의 정보에 액세스하고, 사용자들 간에 메시지를 보내는 등의 기능을 제공하여 트래블(travel)을 조정하기 위해 기능을 제공할 수 있다. 클라이언트 장치 및 애플리케이션이 수정되면 이러한 수정은 애플리케이션 실행에 영향을 미칠 수 있고, 애플리케이션 기능을 비정상적으로 만들어, 애플리케이션 동작 목표를 효과적으로 완료하지 못하게 할 수 있다.
경우에 따라, 애플리케이션의 오작동은, 사용자가 인식하지 못할 수 있어 애플리케이션을 차선의 조건에서 동작하게 할 수 있고, 애플리케이션이 완전한 기능을 구현하지 못하게 할 수 있다. 더 나쁜 경우에는, 사용자가 오작동을 인식할 수는 있지만, 이 오작동은 사용자가 애플리케이션을 복원하지 못하게 한다. 따라서, 애플리케이션의 실패한 기능(failing functions)을 자동으로 검출하고 정정하는 방법을 제공하는 것이 바람직하다.
애플리케이션 복구 시스템(본원에서는 간단히 "시스템"이라고도 함)은 비정상적인 애플리케이션 동작을 식별하고 애플리케이션을 올바른 동작으로 되돌리는 조치를 취하여 애플리케이션을 복구한다. 상이한 클라이언트 장치들이 동일 애플리케이션을 작동시켜 동일 기능을 제공하지만 상이하게 구성되어 있는 환경에서는, 애플리케이션 복구가 어렵다. 일례로, 제1 클라이언트 장치는 제1 세트의 소프트웨어 패키지를 갖는 애플리케이션을 포함하고 제2 클라이언트 장치는 제2 세트의 소프트웨어 패키지를 갖는 애플리케이션을 포함하는 2개의 클라이언트 장치가 동일한 기능을 제공한다. 각각의 애플리케이션은 설치된 소프트웨어 패키지(들)를 통해, 애플리케이션의 기능을 제공하는 서비스에서 애플리케이션 복구 시스템과 통신하는 서버에게 일련의 동작 요청을 생성한다. 예를 들어, 라이더와 제공자 간의 트래블을 조정하기 위한 애플리케이션을 제공하기 위해, 라이더의 장치는 라이더의 위치를 특정하고, 목적지에 대해 질의하며, 지도 데이터를 표시하는 등의 동작 요청을 생성할 수 있다. 실패한 기능을 식별 및 수정하고 복구 명령 세트를 결정하기 위해, 시스템은 장치에 설치되어 있는 소프트웨어 패키지 및 그 장치에 의해 생성된 동작 요청을 식별한다.
본 명세서의 예들에 따르면, 복구 명령 세트를 결정하기 위해, 네트워크 시스템은 먼저 애플리케이션의 비정상적인 동작을 식별한다. 애플리케이션의 비정상적인 동작은 애플리케이션과 연관된 적어도 하나의 실패한 기능이 존재함을 나타낸다. 네트워크 시스템은, 예컨대, 실행 소프트웨어 애플리케이션의 생성된 동작 요청을 분석함으로써 비정상적인 동작을 식별할 수 있다. 클라이언트 장치는, 실패한 기능(들)을 식별하는 것을 돕기 위해, 설치된 소프트웨어 패키지(또는 설치된 소프트웨어 패키지의 식별자(들))를 포함하는 복구 명령에 대한 요청을 네트워크 시스템에 전송한다.
네트워크 시스템은 수신된 설치된 소프트웨어 패키지(또는 설치된 소프트웨어 패키지의 식별자)를 사용하여 애플리케이션의 예상 동작을 식별한다. 식별된 예상 동작에 기초하여, 네트워크 시스템은 애플리케이션의 동작에 영향을 미칠 수 있는 실패한 기능(들) 및 이들의 관련 소프트웨어 패키지(들)를 식별한다. 식별은 복구 요청, 클라이언트 장치의 데이터 저장소, 소프트웨어 패키지 데이터 저장소, 또는 복구 명령 데이터 저장소와 같은 시스템에 포함된 모든 정보에 기초할 수 있다.
네트워크 시스템은, 식별된 실패한 기능, 관련 소프트웨어 패키지 및/또는 애플리케이션의 동작을 위한 환경의 임의의 다른 정보에 기초하여, 요청 클라이언트 장치에 대한 복구 명령 세트를 결정한다. 한 예에서, 복구 명령은 클라이언트 장치에 의해 실행될 경우에 소프트웨어 패키지를 디스에이블, 수정 또는 삭제할 수 있다. 복구 명령 세트를 결정할 때, 네트워크 시스템은 유사한 소프트웨어 패키지를 갖는 다른 요청에 대한 복구 명령 세트를 수정할 수도 있다. 복구 명령 세트를 결정한 후, 네트워크 시스템은 요청 클라이언트 장치에 복구 명령을 제공한다. 요청 클라이언트 장치는 복구 명령을 클라이언트 장치 및 애플리케이션에 적용하여 애플리케이션이 복구되도록 한다.
이상의 요약 및 후술하는 상세한 설명에 기재된 특징 및 이점은 모든 것을 망라한 것(all-inclusive)은 아니다. 많은 부가적인 특징 및 이점은 본원의 도면, 명세서 및 청구 범위를 고려하면 당업자에게 명백할 것이다.
도 1은 일부 실시예에 따른, 오작동하는 애플리케이션을 복구할 수 있는 트래블 조정 시스템에 대한 시스템 환경의 고수준 블록도이다.
도 2는 일부 예시적인 실시예에 따른, 애플리케이션을 복구하기 위한 복구 명령 세트를 결정하는데 사용되는 몇몇 클라이언트 장치 및 이들의 관련 기능 및 동작 요청의 테이블이다.
도 3은 일부 실시예에 따른, 네트워크 시스템이 애플리케이션을 복구하는 방법을 나타내는 흐름도이다.
도 4는 일부 실시예에 따른, 클라이언트 장치가 애플리케이션을 복구하는 방법을 도시한 흐름도이다.
도 5는 일부 실시예에 따른, 머신 판독 가능 매체로부터 명령을 판독 및 실행하기 위한 머신을 도시한 것이다.
도면은 단지 예시를 목적으로 본 발명의 실시예를 도시한 것이다. 당업자는 이하의 설명으로부터 본 명세서에 기술된 구조 및 방법의 대안적인 실시예가 본 명세서에 기술된 본 발명의 원리를 벗어나지 않고 채용될 수 있음을 쉽게 인식할 수 있을 것이다.
최신 클라이언트 장치는 거의 모든 유형의 환경에서 광범위한 기능을 수행할 수 있다. 이들 기능은 클라이언트 장치에서 실행되는 애플리케이션에 의해 달성된다. 이 설명의 맥락에서, 기능(function)은 클라이언트 장치에서 실행되는 애플리케이션의 고수준의 동작 목표(operational goals)를 나타낸다. 경우에 따라, 애플리케이션이 오작동할 수 있고 클라이언트 장치가 이 환경에서 애플리케이션의 기능을 제공하지 않거나 또는 잘못 제공할 수 있다. 여러 클라이언트 장치(100)가 동일한 애플리케이션을 실행하고 동일한 기능을 제공하지만 각 클라이언트 장치에는 상이한 버전의 애플리케이션이 설치되어 있는 환경에서, 개별 클라이언트 장치에서의 오작동의 원인을 판단하는 것은 어렵다.
도 1은 일부 실시예에 따른, 네트워크 시스템(130)을 통해 클라이언트 장치(100)에서 오작동하는 애플리케이션을 복구하기 위한 시스템 환경의 고수준 블록도이다. 도 1은 클라이언트 장치(100), 사용자(108), 네트워크(120) 및 네트워크 시스템(130)을 포함한다. 시스템 환경의 다른 실시예는 임의의 수의 사용자 장치(100) 및 다수의 네트워크 시스템(130)을 가질 수 있다. 도 1의 다양한 엔티티에 의해 수행되는 특정 기능은 다른 실시예에서 달라질 수 있다. 한 예에서, 시스템(130)은 사용자들 사이의 트래블을 조정하는데 사용될 수 있으며, 각각의 사용자는 제각기의 사용자 장치(100)를 작동한다.
각각의 클라이언트 장치(100)는 애플리케이션(들)(102)을 실행하기 위해 한 명 이상의 사용자(108)에 의해 사용되는 컴퓨팅 장치이다. 클라이언트 장치(100)는, 예를 들면, 클라이언트 장치(100)의 사용자 인터페이스를 통해 네트워크 시스템(130)과 상호작용하는 애플리케이션(102)을 실행하는 모바일 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 클라이언트 장치(100)는 임의의 다른 네트워킹 가능 장치이다.
사용자(108)가 클라이언트 장치(100)를 조작할 때, 애플리케이션(102)은 그 환경에서 임의의 수의 기능을 수행할 수 있다. 이 설명의 맥락에서, 기능은 클라이언트 장치(100)에서 실행되는 애플리케이션(102)의 고수준의 동작 목표를 나타낸다. 예를 들어, 기능을 수행하는 것은 사용자들 간의 트래블을 조정하는 것일 수 있다. 또한, 각각의 애플리케이션(102)은 임의의 수의 기능을 포함할 수 있고, 각 기능은 임의의 수의 하위 기능(sub-function)을 가질 수 있다. 하위 기능은 기능을 전체적으로 구성하는 세분화된 기능일 수 있다. 위 예를 사용하여, 사용자들 간의 트래블을 조정하는 기능은 사용자에게 트래블을 제공하고 사용자로부터 트래블을 요청하는 하위 기능을 가질 수 있다.
애플리케이션이 제대로 실행되면, 애플리케이션의 기능은 애플리케이션의 동작 목표를 제공한다. 반대로, 오작동하는 애플리케이션에서는, 기능이 잘못 실행되고 애플리케이션의 동작 목표를 제공하지 않는다. 본 개시의 맥락에서, 정확하게 실행되는 기능은 공칭 기능(nominal function)으로 지칭될 것이고, 부정확하게 실행되는 기능은 실패한 기능(failing function)으로 지칭될 것이다. 마찬가지로, 애플리케이션의 동작 목표를 성공적으로 제공하는 애플리케이션은 정상적으로 동작하는 것으로 기술되고, 애플리케이션의 동작 목표를 제공하지 않는 애플리케이션은 비정상적으로 동작하는 것으로 기술된다.
클라이언트 장치(100)는 각각의 클라이언트 장치(100)의 프로세서상에서 실행되는 애플리케이션(102) 및 보조 애플리케이션(114)과 같은 소프트웨어 애플리케이션을 포함한다. 클라이언트 장치(100)상에서 실행되는 애플리케이션(102)은 그 환경에서 기능(들)을 수행한다. 보조 애플리케이션(114)은 애플리케이션(102)의 복구와 연관된 기능을 수행할 수 있다(예를 들어, 복구 명령 세트를 로드하거나 복구 명령 세트를 실행할 수 있다). 일부 실시예들에서, 보조 애플리케이션(114)의 기능은 애플리케이션(102)에 포함된다. 또한, 애플리케이션 및 복구 애플리케이션은 네트워크(120)를 통해 서로 통신할 수 있고 또한 네트워크 시스템(130)과 통신할 수 있다. 애플리케이션(102)(및 114)의 예로는 운송 조정 애플리케이션, 웹 브라우저, 소셜 네트워킹 애플리케이션, 메시징 애플리케이션, 게임 애플리케이션, 미디어 소비 애플리케이션 등이 있다. 각각의 애플리케이션(102)은 클라이언트 장치(100), 클라이언트 장치 사용자(108) 또는 클라이언트 장치 사용자 그룹과 연관된 네트워크 시스템(130) 상의 사용자 계정에 링크될 수 있다.
애플리케이션(102)은 애플리케이션의 기능을 실행하기 위한 다수의 소프트웨어 패키지(104)를 포함한다. 소프트웨어 패키지(104)는, 환경에서 실행될 때 애플리케이션의 다양한 동작 활동에 영향을 미치는 애플리케이션(102)의 기능을 인에이블한다. 본 명세서에서 언급된 바와 같이, 소프트웨어 패키지(104)는 클라이언트 장치(100)의 프로세서 상에서 동작하는 컴퓨터 명령 세트이다. 일부 실시예들에서, 소프트웨어 패키지(104)는 하드웨어(예컨대, 계산 로직을 포함하는 하드웨어), 펌웨어 및/또는 소프트웨어 패키지(104)의 실행을 허용하는 임의의 다른 컴포넌트로 구현될 수 있다. 소프트웨어 패키지(104)는 개시된 방법의 일 실시예를 나타내고, 다른 실시예는 다른 소프트웨어 패키지(104)를 포함할 수 있다.
예를 들어, 제1 클라이언트 장치(100a)상에서 실행되는 애플리케이션(102)의 기능은 트래블을 조정하는 것이다(예컨대, 트래블 조정 애플리케이션). 제1 클라이언트 장치(100b)에서 실행되는 애플리케이션(102)은 트래블 조정 애플리케이션의 기능을 실행하기 위한 소프트웨어 패키지(104a 및 104b)를 포함한다. 더 많은 맥락이 있는 경우, 소프트웨어 패키지(104a)는 사용자들 간의 트래블을 조정하는 것과 연관되는 반면, 소프트웨어 패키지(104b)는 네트워크와의 인터페이스와 연관되며, 둘 다 애플리케이션의 기능과 연관된다. 경우에 따라, 소프트웨어 패키지는 애플리케이션의 동작 활동에 영향을 미치지 않으면서 애플리케이션의 동작을 위한 매개 변수(예컨대, 소프트웨어 설정)를 특정할 수 있다.
다른 실시예에서, 다양한 클라이언트 장치(100)가 동일한 기능을 달성하기 위해 임의의 수의 유사하거나 또는 상이한 소프트웨어 패키지(102)를 실행할 수 있다. 이들 중 하나의 구현예에서, 소프트웨어 패키지(102)는 클라이언트 장치의 컴퓨터 판독 가능한 영구 저장 장치에 저장되고, 메모리에 로딩되며, 클라이언트 장치의 컴퓨터의 하나 이상의 프로세서에 의해 실행될 수 있다. 예를 들어, 제2 클라이언트 장치(100b)에서 실행되는 애플리케이션(102)은 운송 조정 애플리케이션이다. 제2 클라이언트 장치(100b)에서 실행되는 애플리케이션(102)은 트래블 조정과 연관된 유사한 소프트웨어 패키지(104a)를 포함한다. 그러나, 제2 클라이언트 장치(100b)에서 실행되는 애플리케이션(102)은 네트워크와의 인터페이스와 연관된 상이한 소프트웨어 패키지(104c)를 포함한다. 이 예에서, 장치들(100)은 상이한 모델들이기 때문에, 각 장치 상의 네트워크와의 인터페이스와 연관된 소프트웨어 패키지는 유사하지 않다.
대안적인 실시예에서, 애플리케이션(102)은 본 명세서에 기술된 소프트웨어 패키지(104)가 없고/없거나 다른 방식으로 소프트웨어 패키지들(104) 사이에서 기능을 가능하게 할 수 있다. 상술한 실시예에서, 소프트웨어 패키지(104)는 애플리케이션(102)의 일부를 형성하는 독립형 소프트웨어 패키지로서 구현된다. 그러나, 소프트웨어 패키지는 또한 애플리케이션 자체의 일부가 아니면서 애플리케이션(102)의 동작에 영향을 미칠 수도 있다. 예를 들어, 애플리케이션(102)에 영향을 미치는 소프트웨어 패키지(104)는 다른 애플리케이션에도 영향을 미치는 보다 큰 더 복잡한 소프트웨어 패키지의 일부일 수 있다. 마찬가지로, 소프트웨어 패키지(104)는 하나 이상의 정적으로 또는 동적으로 링크된 라이브러리일 수 있다.
애플리케이션(102)의 동작 동안, 일련의 동작 요청(예컨대, 위치 정보 수신, 운송 제공자 요청 등)이 통상적으로 생성되어 애플리케이션의 기능과 연관된다. 이러한 동작 요청은 특정 애플리케이션에 설치된 소프트웨어 패키지에 의해 수정되거나 영향을 받을 수 있다. 일례에 따르면, 사용자는 사용자 장치(100)의 인터페이스를 통해 애플리케이션(102)을 동작시킨다. 사용자 장치(100)(또는 이 장치 상의 대응하는 애플리케이션)는 소프트웨어 패키지(104)의 실행 및 생성되거나 또는 생성되지 않을 수 있는 동작 요청을 기술하는 데이터를 수집한다. 정상 동작 중에, 소프트웨어 애플리케이션에 의해 생성된 동작 요청을 올바르게 실행하면, 전체적으로 그 환경에서 해당 애플리케이션의 공칭 기능이 수행된다.
넓게는, 동작 요청은 그 환경에서 기능의 실행을 용이하게 하는 애플리케이션(102)의 임의의 동작으로 기술될 수 있다. 이들 요청은 일반적으로 애플리케이션의 기능 및 애플리케이션에서 다른 서비스 또는 장치로의 요청(예컨대, 클라이언트 장치의 다른 구성 요소에 대한 요청 또는 네트워크의 다른 시스템에 대한 요청)을 반영한다. 추가적인 예로서, 동작 요청은 클라이언트 장치 인터페이스를 통해 클라이언트 장치로의 입력을 수신하는 것, 클라이언트 장치 인터페이스를 통해 클라이언트 장치에서 출력을 생성하는 것, 임의의 다른 클라이언트 장치 인터페이스 상호작용, 서버로의 요청, 서버로부터의 입력, 다른 소프트웨어 패키지로의 요청, 다른 소프트웨어 패키지로부터의 입력, 다른 애플리케이션으로의 요청, 다른 애플리케이션으로부터의 입력, 데이터베이스로의 요청, 데이터베이스로부터의 입력, 클라이언트 장치의 구성 요소(예컨대, 안테나, 사용자 인터페이스, 스피커 등)로부터의 입력, 또는 이 환경에서의 애플리케이션에 의해 생성될 수 있는 임의의 다른 동작 요청을 포함할 수 있다.
다른 예에서는, 제1 클라이언트 장치(100a)에서 실행되는 애플리케이션(102)은 운송을 조정하는 기능을 제공한다. 제1 클라이언트 장치(100a)에서 실행되는 애플리케이션(102)은 실행될 때 사용자(108)가 네트워크 시스템(130)과 상호작용하여 운송을 조정하게 하는 일련의 동작 요청을 생성하는 소프트웨어 패키지(104)를 포함한다. 일 예에서, 애플리케이션(102)은 실행될 때 클라이언트 장치의 위치를 결정하기 위한 동작 요청을 생성하는 소프트웨어 패키지(104a)를 포함한다. 또한, 애플리케이션(102)은 실행될 때 네트워크 시스템(130)으로부터 트래블을 요청하는 동작 요청을 생성하는 소프트웨어 패키지(104b)를 포함한다.
일부 실시예에서, 일반적으로 동작 요청을 실행하는 것으로 지칭되지만, 주어진 기능 또는 소프트웨어 패키지에 대한 동작 요청은 사용자(108)가 인터페이스와 상호작용할 때 사용자 장치(100)로부터 일련의 통신으로서 네트워크 시스템(130)으로 전송될 수 있다. 유사하게, 동작 요청은 장치 내 동작 요청 실행 동안 부분적으로 전송될 수 있다. 마찬가지로, 네트워크 시스템(130)은 복구 명령을 일련의 통신으로서 클라이언트 장치(100)에 전송할 수 있다.
전술한 바와 같이, 애플리케이션(102)의 소프트웨어 패키지(들)(104)의 실행은 전체적으로 이 환경에서 애플리케이션의 공칭 기능을 제공하는 동작 요청을 생성한다. 일반적으로, 정상 동작 동안 각각의 소프트웨어 패키지(104)는 실행될 때 특정 동작 요청 세트를 생성한다. 이러한 동작 요청을 예상 동작 요청이라고 한다. 예상 동작 요청은 시스템 내에서 다양한 방법을 사용하여 결정될 수 있다. 예를 들어, 애플리케이션(102)의 프로그래머는, 애플리케이션 또는 소프트웨어 패키지를 분배하기 전에 예상되는 동작 요청을 결정할 수 있고, 이 예상 동작 요청은 소프트웨어 패키지 데이터 저장소에 저장될 수 있으며, 클라이언트 장치의 사용자는 클라이언트 장치에 대한 예상 동작 요청을 설정할 수 있고, 네트워크 시스템은 소프트웨어 패키지의 정적 분석을 수행할 수 있으며, 네트워크 시스템은 이 환경의 다른 엔티티로부터 일련의 예상 동작 요청을 수신할 수 있고, 네트워크 시스템은 환경 내의 클라이언트 장치의 공칭 기능에 기초하여 예상 동작 요청 세트를 구축할 수 있거나 할 수 있다. 일부 실시예에서, 예상 동작 요청은 또한 예상된 동작 요청이 발생하는 시기를 나타내는 타이밍 또는 순서 구조를 포함할 수 있다.
그러나, 애플리케이션이 비정상적으로 동작하는 경우, 애플리케이션은 적어도 하나의 실패한 기능을 포함할 수 있다. 경우에 따라, 실패한 기능은 소프트웨어 패키지의 오작동에 기인한다. 이들 소프트웨어 패키지를 비정상적인 소프트웨어 패키지라고 한다. 비정상적인 소프트웨어 패키지는 예상 동작 요청과 다른 동작 요청을 생성할 수 있다. 하나의 실시예에서, 3가지 유형의 상이한 동작 요청, 즉, 예상 동작 요청에 추가하여 생성되는 추가 동작 요청(예컨대, 초과 동작 요청), 예상 동작 요청 대신에 생성되는 동작 요청(예컨대, 교체 동작 요청), 및 예상 동작 요청으로부터의 동작 요청 부족(예컨대, 누락 동작 요청)이 있을 수 있다. 편의상, 이러한 동작 요청을 모두 합쳐 비정상적인 동작 요청이라고 한다. 따라서, 애플리케이션이 비정상적으로 동작할 경우, 애플리케이션 기능을 제공하지 못하는 비정상적인 동작 요청이 생성될 수 있다. 일례에서, 비정상적인 동작 요청은 크래시 리포트(충돌 보고서)에 포함된다. 유사한 실시예에서, 네트워크 시스템은 비정상적인 동작 요청으로부터 크래시 리포트를 생성할 수 있다.
경우에 따라, 애플리케이션은 비정상적인 동작 요청을 계속 생성하면서 기능을 정상적으로 성공적으로 제공할 수 있다. 즉, 생성된 비정상적인 동작 요청은 애플리케이션의 동작 목표를 방해하지 않을 수 있다. 이러한 경우, 비정상적인 동작 요청은 이 환경에서 애플리케이션의 기능을 비효율적으로 실행하는 것으로 보여질 수 있다. 기능이 여전히 제공될 수도 있지만(그리고 사용자 관점에서 명백한 오류가 없을 수도 있지만), 본 명세서에 기술된 것과 같은 유사한 방법들은 비효율적인 애플리케이션을 식별하고 정정하는데 사용될 수 있다.
애플리케이션은 또한 복구 소프트웨어 패키지(110)를 포함할 수 있다. 복구 소프트웨어 패키지(110)는 애플리케이션(102)에 대한 복구 명령을 요청하고 적용한다. 일례로, 복구 명령의 요청 및 애플리케이션은 애플리케이션이 클라이언트 장치상에서 실행될 때마다(예컨대, 애플리케이션 로딩 동안) 발생한다. 복구 소프트웨어 패키지(110)는 또한 애플리케이션(102)의 동작 요청을 모니터링할 수 있다. 이들 동작 요청은 복구 소프트웨어 패키지(110)에 의해 복구 명령에 대한 요청의 일부로서 네트워크 시스템(130)에 제공될 수 있다. 다른 실시예에서, 복구 소프트웨어 패키지는 임의의 다른 시간에(예를 들어, 사용자로부터의 입력, 네트워크 시스템으로부터의 수신된 통지, 시간 임계치, 장치 데이터 저장소에 저장된 정보 등에 기초하여) 복구 명령을 요청하고 적용할 수 있다.
일례에서, 복구 소프트웨어 패키지(110)는 네트워크(120)를 통해 네트워크 시스템(130)으로부터 복구 명령 세트를 요청한다. 복구 명령 세트는 애플리케이션(102), 보조 애플리케이션(114) 또는 클라이언트 장치(100)에 의해 적용될 때 애플리케이션의 기능을 수정할 수 있다. 예를 들어 복구 명령은 비정상 기능이 정상 기능으로 돌아오도록 애플리케이션(또는 클라이언트 장치)을 수정한다.
일례에 따르면, 복구 명령에 대한 요청은 복구 소프트웨어 패키지(110)에 의해 네트워크 시스템(130)으로 전송되어 애플리케이션(102)의 비정상적인 기능을 판정한다. 클라이언트 장치가 이 환경에서 동작할 때 언제든지 요청이 발생할 수 있다. 일례에서, 요청은 애플리케이션 매니페스트, 장치 매니페스트 및 실행중인 애플리케이션과 연관된 생성된 동작 요청들 중 임의의 동작 요청을 포함할 수 있다. 애플리케이션 매니페스트는 설치된 애플리케이션 소프트웨어 패키지, 애플리케이션 버전 번호, 생성할 수 있는 동작 요청 리스트, 애플리케이션 설정 등을 포함할 수 있다. 장치 매니페스트는 설치된 애플리케이션 리스트, 디스플레이 설정 및 네트워크 설정 등을 포함할 수 있다. 또한, 요청은 장치 데이터 저장소에 포함된 정보, 클라이언트 장치의 위치, 또는 복구 소프트웨어 패키지에 의해 실행된 이전 복구 명령을 포함할 수 있다.
복구 소프트웨어 패키지(110)는 네트워크 시스템(130)으로부터 복구 명령 세트를 수신하여 애플리케이션의 소프트웨어 패키지(104)를 수정할 수 있다. 복구 명령을 실행한 후, 일부 실시예에서, 복구 소프트웨어 패키지(110)는 애플리케이션(102)으로부터의 동작 요청이 예상 동작 요청과 일치하는지를 판정하고, 이 판정에 기초하여 네트워크 시스템(130)으로부터 새로운 복구 명령 세트를 요청할 수 있다. 이러한 경우에, 후속 복구 명령 요청은 이전에 실행된 복구 명령과 연관된 정보 및 동작 요청을 포함할 수 있다.
복구 명령은 애플리케이션(102)을 복구하기 위한 임의의 수의 명령을 포함할 수 있다. 일부 예시적인 명령은, 임의의 수의 소프트웨어 패키지 디스에이블링, 제거, 또는 추가; 설치된 소프트웨어 패키지 수정; 애플리케이션에 의해 제공된 기능 디스에이블링, 제거, 수정 또는 추가; 장치 데이터 저장소에서 정보 제거, 추가 또는 수정(예컨대, 비밀번호, 캐시 지우기 등); 애플리케이션의 복원을 돕기 위해 보조 애플리케이션에 액세스하는 것(예컨대, 사용자가 수행할 명령을 검색하기 위해 웹 브라우저를 여는 것); 실행될 때 소프트웨어 패키지에 의해 생성된 동작 요청 또는 애플리케이션(102)을 복구할 수 있는 임의의 다른 명령을 수정하는 것을 포함한다.
복구 소프트웨어 패키지(110)는 애플리케이션의 의도된 기능을 제공하는 애플리케이션의 '메인 부분(main portion)'에 대한 '컴패니언(companion)' 또는 '보조 부분'으로 볼 수 있다. 이 예에서, 애플리케이션의 메인 부분은 애플리케이션의 하나 이상의 기능을 실행하는 것과 연관된 소프트웨어 패키지와 관련되고 이를 포함한다. 즉, 복구 소프트웨어 패키지(110)는 애플리케이션(102) 내에서 실행되지만 소프트웨어 패키지(104)에 의해 제공되는 기능은 복구 패키지(112)의 실행에 영향을 미치지 않는다.
복구 소프트웨어 패키지(110)의 기능을 설명하기 위해, 비정상적인 소프트웨어 패키지를 포함하는 애플리케이션의 간단한 예를 계속해서 살펴보자. 복구 패키지는 복구 명령에 대한 요청을 네트워크 시스템(130)에 전송한다. 복구 패키지는 네트워크 시스템(130)으로부터 복구 명령 세트를 수신한다. 복구 명령은 애플리케이션(102)의 비정상적인 동작을 야기하는 실패한 기능과 연관된 비정상적인 소프트웨어 패키지의 계산 로직에 대한 수정 및 보조 애플리케이션(114)을 실행하기 위한 명령을 포함한다. 복구 소프트웨어 패키지(110)는 애플리케이션을 복구하는 복구 명령을 실행한다. 비정상 기능을 판단하고 환경 내에서 애플리케이션을 복구하는 추가 예는 도 2와 관련하여 더 상세히 논의한다.
추가 또는 대안으로서, 복구 소프트웨어 패키지(110)는 동작 요청의 일관된 모니터링 및 분석에 기초하여 애플리케이션이 비정상적으로 동작한다고 판정한다. 한 예에 따르면, 비정상적인 동작 요청의 생성은 애플리케이션이 비정상적으로 동작하고 있음을 나타낸다. 이 경우, 애플리케이션이 비정상적으로 동작하고 있다고 판정하는 것은, 생성된 동작 요청을 네트워크 시스템(130)에 의한 분석을 위해 네트워크(120)를 통해 네트워크 시스템(130)에 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 복구 패키지(110)는 네트워크 시스템(130)에 액세스하지 않고 애플리케이션이 비정상적으로 기능하고 있음을 판정한다. 생성된 동작 요청에 더하여, 애플리케이션(102)은 이러한 요청의 실행이 비정상일 때 비정상적으로 동작하는 것으로 판정될 수 있다. 다른 실시예들에서, 복구 소프트웨어 패키지(110)는, 특정 시간 후에 동작 요청이 실행되지 않거나, 실행된 동작 요청의 응답 시간이 비정상(예컨대, 임계 값 위 또는 아래)이거나, 생성된 동작 요청이 반복적으로 실행되거나(예컨대, 실행 루프), 생성된 동작 요청이 실행되지 않거나, 실행된 동작 요청이 비정상 응답을 초래(예컨대, 장치의 GPS 질의가 장치 시간을 리턴)하는 경우, 또는 애플리케이션이 비정상적으로 동작하고 있음을 나타내는 동작 요청에 대한 임의의 다른 분석에 대해 애플리케이션이 비정상적으로 동작하고 있다고 판정할 수 있다. 장애 판정 컴포넌트 또는 모듈(142)은 다른 실시예에서의 비정상 동작에 대해 유사한 판정을 할 수 있다.
도 1의 클라이언트 장치를 계속 살펴보면, 장치 데이터 저장소(112)는 장치 사용자, 클라이언트 장치(100), 사용자 계정 등과 연관된 정보를 포함한다. 이 정보는 환경 내에서 애플리케이션의 기능을 제공할 때 애플리케이션(102)에 의해 액세스될 수 있다. 또한, 복구 명령을 실행할 때 정보가 액세스, 수정 또는 삭제될 수 있다. 일 실시예에서, 이 정보는 소프트웨어 패키지 및 동작 요청을 특정 장치, 사용자 계정, 장치 그룹 및 사용자 계정 그룹에 맞춤화(예컨대, 스크린 크기에 기초하여 출력을 표시하고, 언어 설정에 기초하여 데이터를 입력하는 등)하는데 사용될 수 있다. 장치 데이터 저장소에 저장된 정보는, 장치 간 보안 메트릭, 장치 내 보안 메트릭, 네트워크 보안 메트릭, 인증 프로토콜, 사용자 계정 정보 및 환경설정, 클라이언트 장치 정보 및 환경설정, 장치 사용자 정보 및 환경설정, 환경설정 및 변경 레코드, 위치 기반 정보, 클라이언트 장치에서 실행되는 애플리케이션, 클라이언트 장치에서 실행되는 소프트웨어 패키지, 소프트웨어 패키지와 연관된 수정, 예상 동작 요청 및 비정상적인 동작 요청, 그리고 이 환경에서 애플리케이션 복구와 연관된 기타 정보를 포함할 수 있다.
일례로서, 장치 데이터 저장소(112)는 장치 사용자(108)에 대한 지불 정보를 저장할 수 있다. 애플리케이션(102)의 기능은 지불 정보에 대한 액세스를 필요로 하고, 애플리케이션은 동작 요청에 응답하여 장치 데이터 저장소의 정보에 액세스할 수 있다. 다른 예로서, 장치 데이터 저장소는 클라이언트 장치에 대한 장치 내 보안 메트릭을 저장할 수 있다. 애플리케이션(102)의 기능은 클라이언트 장치의 하드웨어 구성에 대한 액세스를 필요로 하고, 애플리케이션은 저장된 장치 내 보안 메트릭(예컨대, 액세스 금지 또는 허용)에 기초한 동작 요청에 응답하여 구성에 액세스할 수 있다.
클라이언트 장치(100)는 네트워크(120)를 사용하여 환경 내의 다른 클라이언트 장치 및 네트워크 시스템과 통신할 수 있다. 네트워크(120)는 클라이언트 장치(100)와 네트워크 시스템(130) 사이의 통신 경로를 나타낸다. 일 실시예에서, 네트워크(120)는 인터넷이지만, LAN, MAN, WAN, 모바일, 유선 또는 무선 네트워크, 클라우드 컴퓨팅 네트워크, 전용 네트워크, 또는 가상 사설망(이들로 한정되는 것은 아님) 및 이들의 임의의 조합을 포함하는 임의의 네트워크일 수도 있다. 또한 SSL(Secure Sockets Layer), Secure HTTP 및/또는 VPN(Virtual Private Network)과 같은 기존의 암호화 기술을 사용하여 모든 링크 또는 일부 링크를 암호화할 수 있다. 다른 실시예에서, 엔티티는 전술한 것 대신에 또는 이에 더하여 맞춤형 및/또는 전용 데이터 통신 기술을 이용할 수 있다.
네트워크 시스템(130)은 클라이언트 장치(100)상에서 실행되는 애플리케이션(102)의 기능을 제공하는 것을 보조하고 네트워크(120)를 통해 애플리케이션(102)을 복구하는 것을 용이하게 한다. 네트워크 시스템(130)은 복구 이벤트 모듈(140), 장애 판정 모듈(142), 복구 명령 모듈(144), 클라이언트 장치 데이터 저장소(150), 소프트웨어 패키지 데이터 저장소(152) 및 복구 명령 데이터 저장소(154)를 포함한다. 네트워크 시스템(130)은 클라이언트 장치 상의 애플리케이션으로부터 동작 요청을 수신할 수 있다. 이에 응답하여, 네트워크 시스템(130)은 요청된 동작을 제공할 수 있다. 예를 들어, 트래블 조정 애플리케이션(120)은 가장 가까운 트래블 제공자의 위치 요청을 포함하는 동작 요청을 네트워크 시스템(130)에 전송한다. 네트워크 시스템(130)은 가장 가까운 제공자의 위치를 결정하고 그 정보를 클라이언트 장치(100) 상의 요청 애플리케이션에 반환한다. 또한, 네트워크 시스템(130)은 복구 명령에 대한 요청을 수신하고, 이 요청에 기초하여 복구 명령 세트를 결정하고, 복구 명령을 요청자에게 전송할 수 있다.
네트워크 시스템(130)은 특정 기능을 제공하기 위한 하드웨어 컴포넌트 및/또는 계산 로직으로 지칭되는 다수의 "모듈"을 포함한다. 즉, 모듈은 하드웨어, 펌웨어 및/또는 소프트웨어(예를 들어, 계산 로직을 포함하는 하드웨어 서버)로 구현될 수 있고, 다른 실시예는 추가 모듈을 포함할 수 있으며, 모듈들 사이에 기능을 분배할 수 있고, 더 많거나 적은 모듈에 기능을 부여할 수 있으며, 독립형 프로그램 또는 프로그램 네트워크의 일부로 구현될 수 있으며, 프로세서에 의해 실행 가능한 메모리에 로드될 수 있다.
네트워크 시스템(130)은 복구 이벤트 모듈(140)을 포함할 수 있다. 복구 이벤트 모듈(140)은 복구 소프트웨어 패키지(110)와 상호작용하여 애플리케이션에 복구 명령을 제공한다. 넓게는, 복구 이벤트 모듈(140)은 클라이언트 장치(100)로부터 복구 명령에 대한 요청을 수신하고, 이 요청을 장애 판정 모듈(142)에 전송하며, 복구 명령 모듈(144)로부터 복구 명령 세트를 수신하고, 복구 명령을 클라이언트 장치(100)에 전송한다. 일부 실시예에서, 복구 이벤트 모듈(140)은 다양한 네트워크(120) 경로를 사용하여 복구 명령을 클라이언트 장치(100)에 전달하도록 구성된다. 예를 들어, 비정상적으로 동작하는 애플리케이션이 더 이상 제1 통신 프로토콜(예컨대, 인-애플리케이션 통신)을 통해 복구 명령을 수신할 수 없는 경우, 복구 이벤트 모듈(140)은 제2 통신 프로토콜(예컨대, SMS 메시지)을 통해 클라이언트 장치(100)에 복구 명령을 제공할 수 있다. 일부 실시예에서, 복구 이벤트 모듈(140)은 요청 애플리케이션과 유사한 애플리케이션(102)(소프트웨어 패키지, 또는 결정된 복구 명령과 연관된 클라이언트 장치 정보를 포함함)에 복구 명령을 전송한다.
네트워크 시스템(130)은 복구 이벤트 모듈(140)로부터 복구 요청을 수신하는 장애 판정 모듈(142)을 포함할 수 있다. 전술한 바와 같이, 복구 요청은 애플리케이션 매니페스트, 장치 매니페스트, 동작 요청, 또는 애플리케이션의 실패한 기능을 판정하는데 도움을 줄 수 있는 임의의 다른 정보를 포함할 수 있다. 장애 판정 모듈은 수신된 복구 요청에 기초하여 요청 클라이언트 장치에 대한 예상되는 동작 요청 세트를 결정한다. 이어서, 장애 판정 모듈은 수신된 복구 요청, 예상되는 동작 요청 세트, 및 기능을 제공하는 클라이언트 장치로부터 수신된 실제 동작 요청에 기초하여 실패한 기능 및 관련 소프트웨어 패키지를 식별한다. 장애 판정 모듈은 또한 기능 실패를 일으키는 관련 소프트웨어 패키지로부터의 비정상적인 소프트웨어 패키지를 식별한다. 실패한 기능 및 관련 소프트웨어 패키지를 판정하기 위한 다양한 방법이 본 명세서에 설명된다.
일 실시예에서, 장애 판정 모듈(142)은 예상 동작 요청과 비정상적인 동작 요청 간의 차이를 분석함으로써 실패한 기능 및 비정상적인 소프트웨어 패키지를 결정할 수 있다. 즉, 장애 판정 모듈은 애플리케이션의 예상 동작 요청을 결정(또는 액세스)하고 이를 애플리케이션의 수신된 동작 요청과 비교한다. 예상되는 동작 요청과 수신된 동작 요청(즉, 비정상적인 동작 요청) 간의 차이에 기초하여, 장애 판정 모듈은 애플리케이션이 실패한 기능을 포함하고 있다고 판정한다. 이 예에서, 수신된 동작 요청과 연관된 모든 소프트웨어 패키지는 비정상적인 소프트웨어 패키지일 수 있다.
다른 실시예에서, 장애 판정 모듈(142)은 수신된 동작 요청을 분석함으로써 실패한 기능을 판별할 수 있다. 이 경우, 장애 판정 모듈은 이전 예와 유사한 비정상적인 동작 요청을 판정한다. 그러나, 이 예에서, 장애 판정 모듈은 비정상적인 동작 요청과 연관된 애플리케이션 매니페스트로부터 소프트웨어 패키지의 리스트를 판정한다. 일부 예에서, 소프트웨어 패키지는 소프트웨어 패키지 데이터 저장소 또는 클라이언트 장치 데이터 저장소로부터 액세스될 수 있다. 장애 판정 모듈은 비정상적인 동작 요청과 연관된 소프트웨어 패키지의 리스트를 분석하여, 그 리스트에서 어느 소프트웨어 패키지가 기능 실패를 일으킬 가능성이 가장 높은지를 판정한다. 정상적인 기능을 유발하는 소프트웨어 패키지를 판정하는 것은, 비정상적인 동작 요청의 수, 비정상적인 동작 요청의 심각도, 얼마나 최근에 소프트웨어 패키지가 설치되었는지 등을 기반으로 각 소프트웨어 패키지를 스코어링하는 것을 포함할 수 있다.
다른 실시예에서, 장애 판정 모듈은 수신된 요청의 애플리케이션 매니페스트에 포함된 소프트웨어 패키지의 정적 분석에 기초하여 실패한 기능 및 관련 소프트웨어 패키지(들)를 판정한다. 일 변형예에서, 소프트웨어 패키지는 소프트웨어 패키지 데이터 저장소(152)에 저장된다. 정적 분석은, 소프트웨어 패키지를 분석하고, 애플리케이션에 의해 실행될 때 각 소프트웨어 패키지에 의해 생성할 수 있는 동작 요청을 판별한다. 경우에 따라, 정적 분석은 또한 소프트웨어 패키지를 분석하고, 실행중인 소프트웨어 패키지가 예상 동작 요청 및 비정상 동작 요청(예컨대, 사용자 입력 오류, 변수 변경, 예기치 않은 소프트웨어 패키지 상호작용, 소프트웨어 버그 등)의 임의의 조합을 생성할 수 있는 방법을 결정한다. 정적 분석에 기초하여, 실패 판별 모듈은 실패한 기능 및 관련 소프트웨어 패키지를 식별할 수 있다.
다른 실시예에서, 장애 판정 모듈(142)은 클라이언트 장치 데이터 저장소에 액세스할 수 있으며, 요청 클라이언트 장치로부터의 수신된 동작 요청 및 소프트웨어 패키지를 환경 내의 대체 클라이언트 장치의 소프트웨어 패키지 및 예상 동작 요청과 비교할 수 있다. 예를 들어, 장애 판정 모듈은 대체 장치가 환경에서 공칭적으로 동작하고 있음을 미리 판정한다. 장애 판정 모듈은 대체 장치의 예상 동작 요청을 요청 장치의 수신된 동작 요청과 비교할 수 있다. 예상/수신된 동작 요청들 간의 차이의 비교에 기초하여, 장애 판정 모듈은 수신된 동작 요청이 비정상임을 판정한다. 또한, 대체/요청 장치의 연관된 애플리케이션 및 장치 매니페스트에 기초하여, 장애 판정 모듈은 비정상 동작 요청을 야기하는 실패한 기능 및 관련 소프트웨어 패키지를 결정할 수 있다. 대체 클라이언트 장치가 비정상적으로 동작하는 경우 유사한 분석을 수행할 수 있으며, 장애 판정 모듈은 클라이언트 장치들 사이에 비정상적인 동작을 일으킬 수 있는 유사한 소프트웨어 패키지를 판별할 수 있다.
이들 다양한 수단에 의해, 장애 판정 모듈(142)은 요청 애플리케이션 상에서 실행되는 임의의 소프트웨어 패키지, 관련 예상 동작 요청 및 비정상적인 동작 요청(존재할 경우), 또는 복구 요청과 연관된 임의의 다른 정보에 기초하여 애플리케이션의 실패한 기능을 결정할 수 있다. 유사하게, 각각의 소프트웨어 패키지가 실패한 기능과 연관되므로, 장애 판정 모듈은 실패한 기능을 야기할 수 있는 소프트웨어 패키지(104)를 판정할 수 있다. 이들 소프트웨어 패키지는, 하나 이상의 후보 소프트웨어 패키지의 동작에 영향을 주는 것에 의해, 애플리케이션을 복구하기 위한 복구 명령에 대한 후보 소프트웨어 패키지로 식별된다.
네트워크 시스템은 또한 복구 명령 모듈(144)을 포함할 수 있다. 복구 명령 모듈(144)은 장애 판정 모듈(142)로부터 실패한 기능을 수신한다. 결과적으로, 복구 명령 모듈(144)은 복구 명령 세트를 요청하는 애플리케이션(102)의 기능을 복구하기 위한 결정된 실패한 기능과 연관된 복구 명령 세트를 결정한다. 후보 소프트웨어 패키지(들)에 대한 복구 명령 세트의 결정은, 요청 애플리케이션(102)으로부터 수신된 동작 요청, 애플리케이션 매니페스트, 장치 매니페스트, 후보 소프트웨어 패키지, 클라이언트 장치 데이터베이스에 저장된 수신된 정보, 복구 명령 데이터베이스(154)에 저장된 복구 명령 및 정보, 또는 애플리케이션의 복구를 도울 수 있는 환경 내의 다른 정보에 기초할 수 있다.
일반적으로, 복구 명령은 애플리케이션의 이전 동작 요청 및 이전 복구 명령에 기초하여 애플리케이션에 대해 선택될 수 있다. 애플리케이션이 정상적으로 동작하면, 복구 명령은 애플리케이션을 수정하거나 변경하지 않을 것이다. 정상적인 동작이 없는 경우, 복구 명령은 애플리케이션의 동작에 영향을 주거나 사용자에게 다양한 정도로 영향을 주는 명령을 선택할 수 있다. 예를 들어, 소프트웨어 패키지를 디스에이블하는 복구 명령을 제공하는 것이, 캐시된 데이터를 삭제하는 것이나 사용자가 로그인을 다시 입력하도록 요청하는 것이나 또는 보조 애플리케이션이 사용자에게 명령을 제공하도록 하는 것보다 사용자 환경에 영향을 덜 줄 수 있다. 따라서, 복구 명령은 이전 복구 명령에 따른 복구 명령의 영향 수준을 상승시킬 수 있다. 소프트웨어 패키지에 의해 야기된 문제를 자동으로 치유하려고 시도하기 위해, 복구 명령 모듈(144)은 복구 명령에 영향을 미칠 소프트웨어 모듈을 결정할 수 있다.
일 실시예에서, 복구 명령 모듈(144)은 결정된 후보 소프트웨어 패키지 복구 이벤트 모듈에 액세스하여 복구 명령 세트를 결정할 수 있다. 이 경우, 복구 명령은 복구 명령 데이터 저장소에 저장된 복구 명령의 리스트 중 하나일 수 있다. 리스트 내의 각 복구 명령 세트는 실패한 기능 및 후보 소프트웨어 패키지와 사전에 연관될 수 있다.
다른 실시예에서, 복구 명령 모듈은 몇몇 후보에 대해 복구 명령에 대한 요청에서 수신된 정보에 기초하여 정정할 비정상적인 소프트웨어 패키지로서 단일 후보 소프트웨어 패키지를 선택한다. 이 실시예에서, 복구 명령 모듈은 다수의 소프트웨어 패키지를 동시에 수정하는 것이 아니라 복구 명령 세트당 하나의 후보 소프트웨어 패키지만을 수정하도록 구성될 수 있다.
다른 예에서, 요청 애플리케이션(102)으로 전송된 복구 명령 세트는 후보 소프트웨어 패키지(104)와 연관된 복구 명령 데이터 저장소(154)에 저장된 복구 명령 세트일 수 있다. 복구 명령 모듈(144)은 저장된 복구 명령 세트를 결정된 실패한 기능 및 복구 요청에 기초하여 수정할 수 있다. 복구 명령 모듈(144)은 수정된 복구 명령 세트를 복구 명령 세트를 요청하는 애플리케이션(102)에 전송할 수 있다. 다른 실시예에서, 복구 명령 세트는 유사한 소프트웨어 패키지 및 수정을 실행하는 애플리케이션에 미리 제공된 복구 명령 세트일 수 있으며 복구 명령 데이터 저장소(154)에 저장될 수 있다.
다른 실시예에서, 클라이언트 장치(100)에 제공된 복구 명령 세트는 클라이언트 장치를 유지하고, 클라이언트 장치는 비정상적으로 계속 동작한다. 클라이언트 장치는 네트워크 시스템(130)에 복구 요청을 다시 전송한다. 여기서, 네트워크 시스템(130)은 클라이언트 장치에 제공된 이전의 복구 명령 세트와 유사한 복구 명령 세트를 결정할 수 있다. 이 경우에, 복구 명령 모듈(144)은 클라이언트 장치로부터 수신된 동작 요청이 바뀌지 않았다고 판단할 수 있고, 애플리케이션을 복구하기 위한 새로운 복구 명령 세트를 생성할 수 있다.
네트워크 시스템은 클라이언트 장치 데이터 저장소, 소프트웨어 패키지 데이터 저장소 및 복구 명령 데이터 저장소를 포함할 수 있다. 클라이언트 장치 데이터 저장소는 실행 소프트웨어 패키지, 실행되는 수정, 사용자 정보, 클라이언트 장치 정보, 임의의 저장된 정보와 연관된 동작 요청 및 임의의 저장된 정보와 연관된 기능과 같은 클라이언트 장치와 연관된 정보를 저장할 수 있다. 소프트웨어 패키지 데이터 저장소는 애플리케이션(102)과 연관된 모든 소프트웨어 패키지(104) 및 수정(106)을 포함할 수 있다. 복구 명령 데이터 저장소(154)는 애플리케이션(102)의 복구 기능과 연관된 모든 복구 명령을 포함할 수 있다.
애플리케이션 복구
도 2는 네트워크 시스템(130) 및 클라이언트 장치가 애플리케이션을 복구하기 위해 취할 수 있는 프로세스의 예를 나타내는 테이블이다.
먼저, 예시된 모든 클라이언트 장치(100)는 애플리케이션(102)을 실행하고 있다. 애플리케이션은 이 환경에서 기능들(210) "A", "B" 및 "C"를 제공할 수 있다. 제1 예로서, 실행 애플리케이션은 빈스(Vince)가 자신의 클라이언트 장치(100a)에서 애플리케이션(102)의 인터페이스를 사용할 때 기능(210) "A"를 제공한다. 빈스의 클라이언트 장치(100a)는 기능 "A"와 연관된 소프트웨어 패키지(220) "1" 및 "2"를 포함한다. 복구 소프트웨어 패키지(110)는 네트워크 시스템(130)에 복구 명령 세트를 요청한다(230). 한 예에서, 요청은 장치 프로파일(즉, 하드웨어 구성 등) 및 애플리케이션 프로파일(즉, 설치된 소프트웨어 패키지 등)을 포함한다. 일부 실시예들에서, 요청은 복구 소프트웨어 패키지에 의해 결정된 예상된 동작 요청 및 비정상적인 동작 요청을 포함할 수 있다. 네트워크 시스템은 기능(210) "A" 및 소프트웨어 패키지 "1" 및 "2"와 연관된 예상 동작 요청 세트(240) "θ"를 결정한다. 빈스의 클라이언트 장치는 소프트웨어 패키지 "1" 및 "2"가 애플리케이션에 의해 실행될 때 실제 동작 요청(250) "α"을 생성한다. 따라서, 네트워크 시스템(130)은 실제 동작 요청 "α"가 비정상적인 동작 요청임을 판정한다. 네트워크 시스템(130)은 장애 판정 모듈(142) 및 복구 명령 모듈(144)을 사용하여 복구 요청과 판정된 비정상 기능 및 관련 소프트웨어 패키지에 기초하여 애플리케이션을 복구하기 위한 복구 명령 세트(260) "φ"를 결정한다.
계속해서, 실행 애플리케이션은 앨리스(Alice)가 애플리케이션의 인터페이스를 사용할 때 기능(210) "A"를 제공한다. 앨리스의 클라이언트 장치(100b)에서 실행되는 애플리케이션(102)은 기능 "A"와 연관된 소프트웨어 패키지(220) "1"을 포함한다. 복구 소프트웨어 패키지(110)는 네트워크 시스템(130)에 복구 명령 세트를 요청한다(230). 본 경우에서, 네트워크 시스템(130)은 기능 "A" 및 소프트웨어 패키지 "1"과 연관된 예상 동작 요청(240)이 없다고 판단한다. 앨리스의 클라이언트 장치(100b)는 소프트웨어 패키지 "1"이 애플리케이션에 의해 실행될 때 실제 동작 요청(250) "γ"을 생성한다. 따라서, 실제 동작 요청 "γ"는 비정상 동작 요청이고, 네트워크 시스템(130)은 애플리케이션의 비정상 기능을 판정한다. 네트워크 시스템(130)은 장애 판정 모듈(142) 및 복구 명령 모듈(144)을 사용하여 수신된 복구 요청과 결정된 비정상 기능 및 관련 소프트웨어 패키지에 기초하여 애플리케이션을 복구하기 위한 복구 명령 세트(260) "Δ"를 결정한다.
다른 예에서, 실행 애플리케이션은 닉(Nick)이 실행 애플리케이션의 인터페이스를 사용할 때 기능(210) "A" 및 "B"를 제공한다. 닉의 클라이언트 장치(100c)에서 실행되는 애플리케이션은 기능 "A" 및 "B"와 연관된 소프트웨어 패키지(220) "1" 및 "3"를 포함한다. 복구 소프트웨어 패키지(110)는 네트워크 시스템(130)에 복구 명령 세트를 요청한다(230). 네트워크 시스템(130)은 기능 "A" 및 "B" 및 소프트웨어 패키지 "1" 및 "3"과 연관된 예상 동작 요청 세트(240) "θ"를 결정한다. 닉의 클라이언트 장치(100c)는 소프트웨어 패키지 "1" 및 "3"이 애플리케이션에 의해 실행될 때 실제 동작 요청(240)을 생성하지 않는다. 본 경우에, 생성된 동작 요청이 없다는 것은 비정상 동작 요청을 나타내며, 네트워크 시스템은 애플리케이션의 비정상 기능을 판정한다. 네트워크 시스템은 장애 판정 모듈(142) 및 복구 명령 모듈(144)을 사용하여 수신된 복구 요청과 결정된 비정상 기능 및 관련 소프트웨어 패키지에 기초하여 애플리케이션을 복구하기 위한 복구 명령 세트 "φ"를 결정한다.
마지막으로, 실행 애플리케이션은 매리(Mary)가 애플리케이션의 인터페이스를 사용할 때 기능(210) "C"를 제공한다. 매리의 클라이언트 장치(100d)는 기능 "C"와 연관된 소프트웨어 패키지 "2"를 포함한다. 복구 소프트웨어 패키지(110)는 네트워크 시스템(130)에 복구 명령 세트를 요청한다(230). 네트워크 시스템은 소프트웨어 패키지 "2"가 애플리케이션에 의해 실행될 때 예상 동작 요청 세트(240) "α"를 결정한다. 매리의 클라이언트 장치는 소프트웨어 패키지 "2"가 애플리케이션에 의해 실행될 때 실제 동작 요청 세트(240) "α"를 생성한다. 본 예에서는, 비정상적인 동작 요청이 없다. 네트워크 시스템(130)은 기능 "C"가 공칭이라고 판정하고, 매리의 클라이언트 장치에 대한 복구 명령 세트를 결정하지 않는다(260).
도 2에 개시된 상황은 예로서 제공된다. 애플리케이션을 복구하기 위해 어떠한 수의 장치, 기능, 소프트웨어 패키지, 동작 요청 및 복구 명령도 사용될 수 있음에 주의하라.
도 3은 일부 실시예에 따른 애플리케이션의 복구를 설명하는 데이터 흐름을 나타내는 데이터 흐름도이다. 도 3의 다른 실시예는 더 많거나 또는 더 적은 단계 또는 다른 단계들을 포함할 수도 있고, 이들 단계는 도 3에 도시되고 본 명세서에 기술된 것과 다른 순서로 수행될 수도 있다. 일 실시예에서, 도 3의 데이터 흐름은 네트워크 시스템(130)에서 발생할 수 있지만, 환경 내의 임의의 요소 또는 요소들의 조합에서 발생할 수 있다.
먼저, 클라이언트 장치가 애플리케이션을 실행하고 공칭적으로 기능한다. 애플리케이션이 공칭 기능을 제공할 때, 네트워크 시스템이 네트워크를 통해 클라이언트 장치로부터의 동작 요청을 수신한다(310). 네트워크 시스템이 이들 요청에 기초하여 동작 요청에 대한 응답을 클라이언트 장치에 제공한다(320). 이 실시예에서, 네트워크 시스템(312)은 클라이언트 장치로부터의 동작 요청을 서비스하고, 수신한 동작 요청을 분석할 수 있다. 분석을 위해, 애플리케이션으로부터의 동작 요청을 서비스하는 다른 시스템으로부터 추가의 동작 요청이 수신될 수 있고, 클라이언트 장치 내의 동작 요청은 복구 요청에 의해 제공될 수도 있다.
예를 들어, 애플리케이션이 복구 패키지를 로드할 때 또는 복구 패키지가 애플리케이션의 비정상적인 기능을 식별할 때, 네트워크 시스템(130)이 애플리케이션을 실행하는 클라이언트 장치(100)의 복구 패키지로부터 네트워크(120)를 통해 복구 요청을 수신한다(330). 요청은 동작 요청, 장치 매니페스트, 애플리케이션 매니페스트, 및 클라이언트 장치 데이터 저장소의 정보를 비롯한 애플리케이션 및 클라이언트 장치에 대한 정보를 포함할 수 있다. 장애 판정 모듈이 클라이언트 장치의 예상 동작을 식별한다(340). 클라이언트 장치의 예상 동작을 식별하는 것(340)은 전술한 임의의 방법에서 예상 동작 요청 및 비정상 동작 요청의 세트를 결정하는 것을 포함할 수 있다.
계속해서, 장애 판정 모듈이 예상 동작 요청 및 비정상적인 동작 요청의 식별에 기초하여 실패한 기능을 식별한다(350). 장애 판정 모듈이 식별된 실패한 기능, 수신된 복구 요청, 비정상적인 동작 요청 및 예상 동작 요청에 기초하여, 실패한 기능에 영향을 미치는 설치된 소프트웨어 패키지를 식별한다(360).
복구 명령 모듈이 식별된 실패한 기능, 동작 요청 및 수신된 요청에 기초하여 복구 명령 세트를 결정한다(370). 마지막으로, 복구 이벤트 모듈이 결정된 복구 명령을 요청 클라이언트 장치에 제공한다(380).
도 4는 일부 실시예에 따른, 애플리케이션의 기능을 복구하기 위한 데이터 흐름을 나타내는 데이터 흐름도이다. 도 4의 대안적인 실시예는 더 많거나 더 적거나 또는 다른 단계들을 포함할 수 있으며, 이들 단계는 도 4에 도시되고 본 명세서에 기술된 것과 다른 순서로 수행될 수 있다. 일반적으로, 도 4의 데이터 흐름은 클라이언트 장치(100)에서 발생할 수 있지만, 환경 내의 임의의 요소 또는 요소들의 조합에서 발생할 수도 있다.
먼저, 클라이언트 장치가 애플리케이션을 로드한다(410). 애플리케이션이 복구 소프트웨어 패키지와 애플리케이션(412)의 메인 부분 및 관련 소프트웨어 패키지를 로딩한다(420). 애플리케이션의 메인 부분 및 관련 소프트웨어 패키지가 서버에 동작 요청을 제공하고(414), 그 응답으로 동작을 수신한다(416).
복구 소프트웨어 패키지가 장치 프로파일 및 애플리케이션 프로파일을 포함하는 복구 요청을 네트워크 시스템에 전송한다(430). 이에 응답하여, 복구 소프트웨어 패키지가 (필요한 경우) 네트워크 시스템으로부터 복구 명령 세트를 수신한다(440). 복구 소프트웨어 패키지가 애플리케이션의 기능을 복구하기 위해 애플리케이션에 복구 명령을 적용한다(450).
일부 실시예에서는, 복구 소프트웨어 패키지가 이러한 기능과 연관된 동작 요청을 생성할 때 애플리케이션의 메인 부분의 생성된 동작 요청을 모니터링한다(460). 전술한 바와 같이, 복구 소프트웨어 패키지는 애플리케이션의 비정상 기능을 식별하고(470), 애플리케이션의 식별된 비정상 기능에 기초하여 네트워크 시스템에 복구 요청을 전송할 수 있다(480).
도 5는 머신 판독 가능 매체로부터 명령을 판독 및 실행하기 위한 예시적인 머신의 구성 요소를 도시한 블록도이다. 구체적으로, 도 5는 시스템(130) 및 클라이언트 장치(100)를 예시적인 컴퓨터 시스템(500) 형태로 나타낸 도면이다. 컴퓨터 시스템(500)은, 머신으로 하여금 본 명세서에 기술된 방법(또는 프로세스) 중 임의의 하나 이상을 수행하게 하는 명령어(524)(예컨대, 프로그램 코드 또는 소프트웨어)를 실행하는데 사용될 수 있다. 대안적인 실시예에서, 머신은 독립형 장치 또는 다른 머신에 접속되는 연결된(예컨대, 네트워킹된) 장치로서 동작한다. 네트워킹된 배치에서, 머신은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신으로 동작하거나 피어 투 피어(또는 분산) 네트워크 환경에서 피어 머신으로 동작할 수 있다.
머신은 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 스마트 폰, 사물 인터넷(IoT) 기기, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 수행될 동작을 지정하는 명령(524)(순차적 또는 다른 방식)을 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신만 도시되어 있지만, "머신"이라는 용어는 또한 본 명세서에서 논의된 하나 이상의 방법을 수행하기 위해 명령어(524)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 간주되어야 한다.
예시적인 컴퓨터 시스템(500)은 하나 이상의 처리 유닛(일반적으로 프로세서(502))을 포함한다. 프로세서(502)는, 예를 들어, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 처리기(DSP), 제어기, 상태 머신, 하나 이상의 주문형 집적 회로(ASICs), 하나 이상의 무선 주파수 집적 회로(RFICs) 또는 이들의 임의의 조합이다. 컴퓨터 시스템(500)은 또한 메인 메모리(504)를 포함한다. 컴퓨터 시스템은 저장 유닛(516)을 포함할 수 있다. 프로세서(502), 메모리(504) 및 저장 유닛(516)은 버스(508)를 통해 통신한다.
또한, 컴퓨터 시스템(506)은 정적 메모리(506), (예컨대, 플라즈마 디스플레이 패널(PDP), 액정 디스플레이(LCD), 또는 프로젝터를 구동하기 위한) 그래픽 디스플레이(510)를 포함할 수 있다. 컴퓨터 시스템(500)은 또한 영숫자 입력 장치(512)(예컨대, 키보드), 커서 제어 장치(514)(예컨대, 마우스, 트랙볼, 조이스틱, 모션 센서 또는 다른 포인팅 장치), 신호 생성 장치(518)(예컨대, 스피커), 및 버스(508)를 통해 통신하도록 구성된 네트워크 인터페이스 장치(520)를 포함할 수 있다.
저장 유닛(516)은, 본 명세서에 기술된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어(524)(예컨대, 소프트웨어)가 저장되는 머신 판독 가능 매체(522)를 포함한다. 예를 들어, 명령어(524)는 도 2에 기술된 시스템(130)의 모듈의 기능을 포함할 수 있다. 명령어(524)는 또한, 컴퓨터 시스템(500)에 의해 실행되는 동안 메인 메모리(504) 내에 또는 프로세서(502) 내에(예컨대, 프로세서의 캐시 메모리 내에) 완전히 또는 적어도 부분적으로 상주할 수도 있는데, 메인 메모리(504) 및 프로세서(502) 또한 머신 판독 가능 매체를 구성한다. 명령어(524)는 네트워크 인터페이스 장치(520)를 통해 네트워크(526)를 통해 전송되거나 수신될 수 있다.
머신 판독 가능 매체(522)는 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독 가능 매체"라는 용어는 명령어(524)를 저장할 수 있는 단일 매체 또는 다중 매체(예컨대, 중앙 집중식 또는 분산 데이터베이스, 또는 관련 캐시 및 서버)를 포함하는 것으로 이해해야 한다. "머신 판독 가능 매체"라는 용어는 또한 머신에 의해 실행하기 위한 명령어(524)를 저장할 수 있고 머신으로 하여금 본 명세서에 개시된 하나 이상의 방법을 수행하게 하는 임의의 매체를 포함하는 것으로 이해해야 한다. "머신 판독 가능 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체, 및 자기 매체 형태의 데이터 저장소를 포함하지만 이에 제한되지는 않는다.
기타 고려 사항
본 발명의 실시예들에 대한 전술한 설명은 예시를 위해 제시되었으며, 이는 본 발명을 망라하고자 하는 것도 아니고 개시된 정확한 형태로 한정하고자 하는 것도 아니다. 관련 기술 분야의 통상의 기술자는 상기 개시에 비추어 많은 수정 및 변형이 가능하다는 것을 이해할 수 있다. 예를 들어, 본 발명은 잠재적인 안전사고에 대한 제공자의 개입을 예측하는 것을 논의하지만, 본 명세서의 방법 및 시스템은 머신 학습 모델을 사용하여 잠재적 사고에 대한 개입을 예측하고자 하는 임의의 목적을 위해 보다 일반적으로 사용될 수 있다.
이 설명의 일부분은 정보에 대한 연산의 기호 표현 및 알고리즘의 관점에서 실시예를 설명한다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 당업자가 그들의 작업 내용을 다른 당업자에게 효과적으로 전달하기 위해 일반적으로 사용된다. 이들 동작은 기능적으로, 계산상으로 또는 논리적으로 설명되었지만, 컴퓨터 프로그램 또는 등가의 전기 회로, 마이크로 코드 등에 의해 구현되는 것으로 이해된다. 또한, 이러한 동작의 구성을 모듈로 언급하는 것이 일반성을 잃지 않고 때론 편리한 것으로 입증되었다. 설명된 동작들 및 이들과 연관된 모듈들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합으로 구현될 수 있다.
본 명세서에 기술된 임의의 단계, 동작 또는 프로세스는 단독으로 또는 다른 장치와 조합하여 하나 이상의 하드웨어 또는 소프트웨어 모듈로 수행되거나 또는 구현될 수 있다. 일 실시예에서, 소프트웨어 모듈은 상술한 단계, 동작 또는 프로세스 중 임의의 것 또는 전부를 수행하기 위해 컴퓨터 프로세서에 의해 실행될 수 있는 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현된다.
실시예들은 또한 본 명세서에서의 동작을 수행하기 위한 장치와 관련될 수 있다. 이 장치는 요구되는 목적을 위해 특별하게 구성될 수도 있고/있거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨팅 장치를 포함할 수도 있다. 이러한 컴퓨터 프로그램은 비 일시적, 유형의 컴퓨터 판독 가능 저장 매체, 또는 컴퓨터 시스템 버스에 결합될 수 있는 전자 명령을 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있다. 또한, 본 명세서에서 언급된 임의의 컴퓨팅 시스템은 단일 프로세서를 포함할 수도 있고 또는 증가된 컴퓨팅 능력을 위해 다중 프로세서 설계를 채용하는 아키텍처일 수도 있다.
실시예들은 또한 본 명세서에 설명된 컴퓨팅 프로세스에 의해 생성되는 제품과 관련될 수 있다. 이러한 제품은 정보가 비 일시적, 유형의 컴퓨터 판독 가능 저장 매체 상에 저장되는, 컴퓨팅 프로세스로부터 생성된 정보를 포함할 수 있으며, 본 명세서에 설명된 컴퓨터 프로그램 제품 또는 다른 데이터 조합의 임의의 실시예를 포함할 수 있다.
마지막으로, 본 명세서에 사용된 언어는 주로 가독성 및 교육 목적을 위해 선택되었으며, 본 발명의 청구대상을 기술하거나 제한하기 위해 선택된 것은 아닐 수 있다. 그러므로, 특허권의 범위는 상세한 설명에 의해서가 아니라, 본 명세서에 기초한 출원에 첨부된 임의의 청구항에 의해 제한하고자 한다. 따라서, 실시예들의 개시는 다음의 청구 범위에서 설명되는 본 발명의 범위를 예시하기 위한 것이지 제한하려는 것은 아니다.

Claims (20)

  1. 애플리케이션의 기능을 복구하는 방법으로서,
    네트워크 시스템에 의해, (i) 네트워크 시스템으로부터 원격이며, (ii) 메인 부분(main portion) 및 복구 부분(recovery portion)을 갖는 애플리케이션을 실행하는 장치로부터 복구 명령에 대한 요청을 수신하는 단계 - 상기 요청은 상기 애플리케이션의 상기 복구 부분에 의해 생성되고 상기 애플리케이션의 상기 메인 부분의 동작에 영향을 미치는 소프트웨어 패키지 세트를 특정함 - 와,
    상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 동작을 반영하는 동작 요청 세트를 식별하는 단계 - 상기 동작 요청 세트는 상기 소프트웨어 패키지 세트 중의 비정상적 소프트웨어 패키지로부터 수신된 비정상적 동작 요청을 포함함 - 와,
    상기 비정상적 동작 요청과 연관된 후보 소프트웨어 패키지 세트를 식별하는 단계와,
    (i) 상기 장치의 동작 요청 세트 및 상기 후보 소프트웨어 패키지 세트와 (ii) 제2 장치로부터 수신된 제2 동작 요청 세트 및 제2 후보 소프트웨어 패키지 세트를 비교함으로써, 상기 비정상적 소프트웨어 패키지가 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 소프트웨어 패키지라고 판정하는 단계와,
    (i) 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 동작을 반영하는 상기 동작 요청 세트와 (ii) 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 예상 동작을 반영하는 예상 동작 요청 세트 사이의 차이 및 상기 비정상적 소프트웨어 패키지에 적어도 부분적으로 기초하여, 상기 애플리케이션의 상기 메인 부분을 수정하기 위한 복구 명령 세트를 결정하는 단계와,
    상기 복구 명령 세트를 상기 장치에 제공하는 단계를 포함하는,
    방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 비정상적 동작 요청과 연관된 후보 소프트웨어 패키지 세트를 식별하는 단계는,
    상기 애플리케이션의 상기 메인 부분의 정적 분석을 수행하여 상기 후보 소프트웨어 패키지 세트에 의해 영향을 받은 후보 동작 요청 세트를 식별하는 단계와,
    상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 동작 요청 세트와 상기 후보 소프트웨어 패키지 세트와 연관된 상기 후보 동작 요청 세트 사이의 차이에 적어도 기초하여, 상기 후보 소프트웨어 패키지 세트로부터 상기 비정상적 소프트웨어 패키지를 식별하는 단계를 포함하는,
    방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 제2 장치가 공칭적으로(nominally) 동작하는 경우, 상기 비교는 상기 장치에 대한 장치 매니페스트(device manifest) 및 상기 제2 장치에 대한 장치 매니페스트에 기초하여 상기 장치 상의 소프트웨어 패키지를 상기 비정상적 소프트웨어 패키지로 식별하는,
    방법.
  7. 제1항에 있어서,
    상기 제2 장치가 비정상적으로 동작하는 경우, 상기 비교는 상기 장치 및 상기 제2 장치 상에서 실행되는 소프트웨어 패키지를 상기 비정상적 소프트웨어 패키지로 식별하는,
    방법.
  8. 제1항에 있어서,
    상기 소프트웨어 패키지 세트에 의해 실행되는 하나 이상의 기능에 기초하여 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 예상 동작을 반영하는 상기 예상 동작 요청 세트를 식별하는 단계를 더 포함하되,
    상기 복구 명령 세트를 결정하는 것은 또한 상기 하나 이상의 기능에 기초하는,
    방법.
  9. 제1항에 있어서,
    상기 복구 명령 세트는 상기 장치에 설치된 제2 애플리케이션을 실행하기 위한 명령을 포함하는,
    방법.
  10. 제1항에 있어서,
    상기 복구 명령 세트를 결정하는 단계는, 이전에 제공된 복구 명령 세트를 식별하는 단계를 더 포함하고,
    상기 복구 명령 세트는 이전에 제공된 복구 명령에 기초하는,
    방법.
  11. 제1항에 있어서,
    상기 복구 명령 세트를 결정하는 단계는,
    상기 장치의 애플리케이션에 또한 설치되는 적어도 하나의 소프트웨어 패키지를 포함하는 소프트웨어 패키지 세트로 상기 애플리케이션을 실행하는 장치 세트를 결정하는 단계와,
    상기 복구 명령 세트를 상기 장치 세트로 전송하는 단계를 포함하는,
    방법.
  12. 시스템의 프로세서에 의해 실행 가능한 컴퓨터 프로그램 명령어를 저장하는 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는,
    네트워크 시스템에 의해, (i) 네트워크 시스템으로부터 원격이며, (ii) 메인 부분 및 복구 부분을 갖는 애플리케이션을 실행하는 장치로부터 복구 명령에 대한 요청을 수신 - 상기 요청은 상기 애플리케이션의 상기 복구 부분에 의해 생성되고 상기 애플리케이션의 상기 메인 부분의 동작에 영향을 미치는 소프트웨어 패키지 세트를 특정함 - 하게 하고,
    상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 동작을 반영하는 동작 요청 세트를 식별 - 상기 동작 요청 세트는 상기 소프트웨어 패키지 세트 중의 비정상적 소프트웨어 패키지로부터 수신된 비정상적 동작 요청을 포함함 - 하게 하고,
    상기 비정상적 동작 요청과 연관된 후보 소프트웨어 패키지 세트를 식별하게 하고,
    (i) 상기 장치의 동작 요청 세트 및 상기 후보 소프트웨어 패키지 세트와 (ii) 제2 장치로부터 수신된 제2 동작 요청 세트 및 제2 후보 소프트웨어 패키지 세트를 비교함으로써, 상기 비정상적 소프트웨어 패키지가 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 소프트웨어 패키지라고 판정하게 하고,
    (i) 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 동작을 반영하는 상기 동작 요청 세트와 (ii) 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 예상 동작을 반영하는 예상 동작 요청 세트 사이의 차이 및 상기 비정상적 소프트웨어 패키지에 적어도 부분적으로 기초하여, 상기 애플리케이션의 상기 메인 부분을 수정하기 위한 복구 명령 세트를 결정하게 하고,
    상기 복구 명령 세트를 상기 장치에 제공하게 하는 것인,
    컴퓨터 판독가능 저장 매체.
  13. 삭제
  14. 삭제
  15. 제12항에 있어서,
    상기 비정상적 동작 요청과 연관된 후보 소프트웨어 패키지 세트를 식별하는 것은, 상기 프로세서로 하여금 또한,
    상기 애플리케이션의 상기 메인 부분의 정적 분석을 수행하여 상기 후보 소프트웨어 패키지 세트에 의해 영향을 받은 후보 동작 요청 세트를 식별하게 하고,
    상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 동작 요청 세트와 상기 후보 소프트웨어 패키지 세트와 연관된 상기 후보 동작 요청 세트 사이의 차이에 적어도 기초하여, 상기 후보 소프트웨어 패키지 세트로부터 상기 비정상적 소프트웨어 패키지를 식별하게 하는,
    컴퓨터 판독가능 저장 매체.
  16. 삭제
  17. 제12항에 있어서,
    상기 제2 장치가 공칭적으로 동작하는 경우, 상기 비교는 상기 장치에 대한 장치 매니페스트와 상기 제2 장치에 대한 장치 매니페스트 사이의 차이에 기초하여 상기 장치 상에서 실행되는 소프트웨어 패키지를 상기 비정상적 소프트웨어 패키지로 식별하는,
    컴퓨터 판독가능 저장 매체.
  18. 제12항에 있어서,
    상기 제2 장치가 비정상적으로 동작하는 경우, 상기 비교는 상기 장치 및 상기 제2 장치 상에서 실행되는 소프트웨어 패키지를 상기 비정상적 소프트웨어 패키지로 식별하는,
    컴퓨터 판독가능 저장 매체.
  19. 제12항에 있어서,
    상기 명령어는 프로세서로 하여금 또한, 상기 소프트웨어 패키지 세트에 의해 실행되는 하나 이상의 기능에 기초하여 상기 애플리케이션의 상기 메인 부분에 영향을 미치는 상기 소프트웨어 패키지 세트의 예상 동작을 반영하는 상기 예상 동작 요청 세트를 식별하게 하고,
    상기 복구 명령 세트를 결정하는 것은 또한 상기 하나 이상의 기능에 기초하는,
    컴퓨터 판독가능 저장 매체.
  20. 제12항에 있어서,
    상기 복구 명령 세트는 상기 장치에 설치된 제2 애플리케이션을 실행하기 위한 명령을 포함하는,
    컴퓨터 판독가능 저장 매체.
KR1020207005239A 2017-07-24 2018-07-16 애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구 KR102247371B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,304 US10409685B2 (en) 2017-07-24 2017-07-24 Recovery of application functions via analysis of application operational requests
US15/658,304 2017-07-24
PCT/IB2018/055227 WO2019021104A1 (en) 2017-07-24 2018-07-16 RECOVERING APPLICATION FUNCTIONS VIA AN ANALYSIS OF FUNCTIONAL APPLICATIONS FOR APPLICATION

Publications (2)

Publication Number Publication Date
KR20200027031A KR20200027031A (ko) 2020-03-11
KR102247371B1 true KR102247371B1 (ko) 2021-05-03

Family

ID=63364107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207005239A KR102247371B1 (ko) 2017-07-24 2018-07-16 애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구

Country Status (8)

Country Link
US (1) US10409685B2 (ko)
EP (1) EP3659035B1 (ko)
JP (1) JP7191080B2 (ko)
KR (1) KR102247371B1 (ko)
CN (1) CN110998535B (ko)
AU (1) AU2018306528B2 (ko)
CA (1) CA3070666C (ko)
WO (1) WO2019021104A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7363049B2 (ja) * 2019-02-18 2023-10-18 日本電気株式会社 業務サービス提供システム、業務サービス復旧方法及び業務サービス復旧プログラム
CN113703946B (zh) * 2021-08-31 2023-07-14 中国联合网络通信集团有限公司 应用恢复方法及其装置、电子设备、计算机可读存储介质
CN114968761B (zh) * 2022-04-11 2023-07-21 杭州德适生物科技有限公司 一种基于互联网的软件运行环境安全监管系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086630A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for a self healing agent
US20150099510A1 (en) * 2010-11-05 2015-04-09 Interdigital Patent Holdings, Inc. Device validation, distress indication, and remediation
US20150193296A1 (en) * 2012-07-02 2015-07-09 Tencent Technology (Shenzhen) Company Limited Run-time error repairing method, device and system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922796B1 (en) * 2001-04-11 2005-07-26 Sun Microsystems, Inc. Method and apparatus for performing failure recovery in a Java platform
US6928579B2 (en) * 2001-06-27 2005-08-09 Nokia Corporation Crash recovery system
JP3916232B2 (ja) * 2002-11-27 2007-05-16 日本電気株式会社 ナレッジ型運用管理システム,方法およびプログラム
WO2004061681A1 (ja) * 2002-12-26 2004-07-22 Fujitsu Limited 運用管理方法および運用管理サーバ
US7992050B2 (en) 2008-05-21 2011-08-02 Sap Portals Israel Ltd. Method and apparatus for checking installed and executed systems
US8656444B2 (en) 2008-06-30 2014-02-18 Verizon Patent And Licensing Inc. System for proactively troubleshooting set top box issues
CN101377744B (zh) * 2008-09-24 2012-02-15 华为终端有限公司 一种终端设备软件升级恢复方法及装置
JP5648911B2 (ja) * 2010-12-27 2015-01-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation システム、プログラムおよび方法
US20130066869A1 (en) * 2011-09-13 2013-03-14 Yusuke Kusaka Computer system, method of managing a client computer, and storage medium
CN105117312B (zh) * 2015-08-20 2018-11-09 上海携程商务有限公司 自助式计算机排障系统
US10225272B2 (en) * 2016-05-31 2019-03-05 Ca, Inc. Ordered correction of application based on dependency topology
CN106095606B (zh) * 2016-06-12 2019-07-23 北京三快在线科技有限公司 一种服务器的软件故障处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086630A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for a self healing agent
US7506241B2 (en) * 2003-10-16 2009-03-17 International Business Machines Corporation Method and apparatus for a self healing agent
US20150099510A1 (en) * 2010-11-05 2015-04-09 Interdigital Patent Holdings, Inc. Device validation, distress indication, and remediation
US20150193296A1 (en) * 2012-07-02 2015-07-09 Tencent Technology (Shenzhen) Company Limited Run-time error repairing method, device and system

Also Published As

Publication number Publication date
EP3659035B1 (en) 2023-09-06
EP3659035A1 (en) 2020-06-03
CA3070666C (en) 2022-08-30
CN110998535B (zh) 2024-04-02
WO2019021104A1 (en) 2019-01-31
JP7191080B2 (ja) 2022-12-16
CA3070666A1 (en) 2019-01-31
CN110998535A (zh) 2020-04-10
AU2018306528B2 (en) 2021-01-28
US10409685B2 (en) 2019-09-10
AU2018306528A1 (en) 2020-01-30
JP2020528620A (ja) 2020-09-24
US20190026184A1 (en) 2019-01-24
KR20200027031A (ko) 2020-03-11

Similar Documents

Publication Publication Date Title
US9800598B2 (en) Detecting shared or compromised credentials through analysis of simultaneous actions
US9129108B2 (en) Systems, methods and computer programs providing impact mitigation of cyber-security failures
US9384114B2 (en) Group server performance correction via actions to server subset
KR102247371B1 (ko) 애플리케이션 동작 요청 분석을 통한 애플리케이션 기능 복구
US20230259386A1 (en) Data processing method based on container engine and related device
US11720687B2 (en) Method and apparatus for management of vulnerability disclosures
US20150319221A1 (en) Tracing business transactions based on application frameworks
US20180081751A1 (en) Server performance correction using remote server actions
US20160105529A1 (en) Distributed control over client-side requests for server resources
US11003499B1 (en) Resource allocation based on agent behavior in a simulation environment
US9092287B2 (en) Product deployment system
US11080402B2 (en) Methods and apparatus to validate and restore machine configurations
US20200351293A1 (en) Out-of-band management security analysis and monitoring
US10757223B2 (en) Alternative service pathway for service application
US11163663B2 (en) Method for improving end user experience in virtual desktop infrastructure by diagnosing potential performance problems
US20230021216A1 (en) Systems and methods for deploying secure edge platforms
US11474923B2 (en) Method for notifying user of operational state of web application
US9172717B2 (en) Security-aware admission control of requests in a distributed system
US20230350670A1 (en) Non-terminating firmware update
US11861627B1 (en) Using customer input to determine proper functionality of a block storage service
JP2013196543A (ja) 運用管理装置、方法、及び、プログラム

Legal Events

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