KR20240042122A - 예측적 시스템 시정 - Google Patents

예측적 시스템 시정 Download PDF

Info

Publication number
KR20240042122A
KR20240042122A KR1020247008649A KR20247008649A KR20240042122A KR 20240042122 A KR20240042122 A KR 20240042122A KR 1020247008649 A KR1020247008649 A KR 1020247008649A KR 20247008649 A KR20247008649 A KR 20247008649A KR 20240042122 A KR20240042122 A KR 20240042122A
Authority
KR
South Korea
Prior art keywords
system behavior
occurrence
corrective action
problematic
behavior
Prior art date
Application number
KR1020247008649A
Other languages
English (en)
Inventor
에릭 서턴
더스틴 가비
삼판나 샤하지 살룬케
우리 샤프트
Original Assignee
오라클 인터내셔날 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Priority claimed from PCT/US2020/041912 external-priority patent/WO2021025828A1/en
Publication of KR20240042122A publication Critical patent/KR20240042122A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62BHAND-PROPELLED VEHICLES, e.g. HAND CARTS OR PERAMBULATORS; SLEDGES
    • B62B3/00Hand carts having more than one axis carrying transport wheels; Steering devices therefor; Equipment therefor
    • B62B3/14Hand carts having more than one axis carrying transport wheels; Steering devices therefor; Equipment therefor characterised by provisions for nesting or stacking, e.g. shopping trolleys
    • B62B3/1404Means for facilitating stowing or transporting of the trolleys; Antitheft arrangements
    • 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/0727Error 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 storage system, e.g. in a DASD or network based storage system
    • 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/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J50/00Circuit arrangements or systems for wireless supply or distribution of electric power
    • H02J50/10Circuit arrangements or systems for wireless supply or distribution of electric power using inductive coupling
    • H02J50/12Circuit arrangements or systems for wireless supply or distribution of electric power using inductive coupling of the resonant type
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J50/00Circuit arrangements or systems for wireless supply or distribution of electric power
    • H02J50/80Circuit arrangements or systems for wireless supply or distribution of electric power involving the exchange of data, concerning supply or distribution of electric power, between transmitting devices and receiving devices
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/0042Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries characterised by the mechanical construction
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/02Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries for charging batteries from ac mains by converters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/048Fuzzy inferencing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

예측적 시스템 시정을 위한 기법들이 개시된다. 시스템(예컨대, 데이터베이스 시스템) 내의 하나 이상의 문제적 시스템 거동에 대한 하나 이상의 시스템-선택 시정 액션의 적용들과 연관된 속성들에 기초하여, 시스템은 하나 이상의 향후 시간에서의 특정 문제적 시스템 거동에 대한 시정 액션의 하나 이상의 향후 적용의 예측된 유효성을 결정한다. 시스템은 시정 액션의 하나 이상의 향후 적용의 예측된 유효성이 긍정적이지만 성능 기준을 만족시키지 않는다고 결정한다. 예측된 유효성이 긍정적이지만 성능 기준을 만족시키지 않는다고 결정하는 것에 응답하여, 시스템은 예측된 유효성이 성능 기준을 만족시키지 않는다는 것에 대응하는 통지를 생성한다. 시스템은 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않는다고 이미 결정함에도 불구하고, 특정 문제적 시스템 거동에 시정 액션을 적용한다.

Description

예측적 시스템 시정{PREDICTIVE SYSTEM REMEDIATION}
본 개시내용은 컴퓨터 하드웨어 및/또는 하드웨어 상에서 실행되는 소프트웨어의 시스템들을 관리하는 것에 관한 것이다.
컴퓨터 하드웨어 및/또는 하드웨어 상에서 실행되는 소프트웨어의 시스템들(이하, "컴퓨터 시스템들", 예컨대, 데이터베이스 시스템들, 가상 머신들, 클러스터들, 분산 시스템들, 및/또는 다른 종류의 컴퓨터 시스템들, 또는 이들의 조합들)은 다양한 종류의 문제적 시스템 거동들을 겪는다. 일반적으로, 문제적 시스템 거동은 컴퓨터 시스템 및/또는 컴퓨터 시스템에 의해 지원되는 서비스들에 대한 액세스, 컴퓨터 시스템에 의해 저장된 데이터의 데이터 무결성, 컴퓨터 시스템의 응답성, 및/또는 컴퓨터 시스템의 임의의 다른 성능 특성, 또는 이들의 조합에 영향을 미치는 임의의 종류의 거동이다. 비-문제적 시스템 거동은 해당 구성요소(들)가 의도된 대로 기능하고 있는 시스템 상태에 대응한다. 문제적 시스템 거동은, 예컨대, 컴퓨터 시스템에 대한 변경되거나 또는 예상치 못한 요구들, 또는 컴퓨터 시스템의 구성요소들 사이의 변경되거나 또는 예상치 못한 상호작용들로 인해, 컴퓨터 시스템의 하나 이상의 구성요소가 저하 및/또는 비-기능 상태에 있다는 것을 나타낸다. 예컨대, 문제적 시스템 거동은 컴퓨터 시스템의 하나 이상의 구성요소가 고장났고/고장났거나, 임박한 고장의 증상들을 보이고/보이거나, 예상대로 수행하고 있지 않는다는 것을 나타낼 수 있다. 문제적 시스템 거동들의 예들은, 대역폭 포화도; 느린 응답 시간; 높은 프로세서 활용도; 낮은 저장 공간(예컨대, 디스크 공간) 가용성; 시간 단위당(예컨대, 초당) 비정상적으로 높은 레이트의 요청들 및/또는 트랜잭션들; 트랜잭션당 느린 프로세싱 시간; 대기 상태들에서 소비되는 비정상적으로 긴 시간들(예컨대, 입력/출력 대기 시간들, 프로세서 대기 시간들 등); 및/또는 문제적인 것으로 한정 또는 정량화될 수 있는 임의의 다른 종류의 시스템 거동, 또는 이들의 임의의 조합을 포함할 수 있지만 이에 제한되지는 않는다.
문제적 시스템 거동을 해소하기 위해 다양한 시정 액션들이 이용가능하다. 시정 액션들의 예들은 더 많은 자원들을 할당하는 것, 소프트웨어 패치들을 적용하는 것, 캐시를 클리어링(clearing)하는 것, 또는 컴퓨터 시스템을 재시작하는 것을 포함한다. 일부 경우들에서, 시정 액션을 적용하는 것은 문제적 시스템 거동을 단지 일시적으로만 해결할 수 있다. 문제적 시스템 거동은 향후에 복귀될 수 있다. 문제적 시스템 거동이 시간 경과에 따라 악화되는 경우, 이에 대응하여, 적용가능한 시정 액션이 시간 경과에 따라 덜 효과적이게 될 수 있다.
이 섹션에서 설명되는 접근법들은 추구되었을 수 있는 접근법들이지만, 반드시, 이전에 구상 또는 추구되었던 접근법들인 것은 아니다. 따라서, 달리 나타내지 않는 한, 이 섹션에서 설명되는 접근법들 중 어떠한 것도 단지 이들이 이 섹션에 포함된 이유로 선행 기술의 자격을 갖는 것으로 간주되지 않아야 한다.
실시예들은 첨부 도면들의 도들에서 제한이 아닌 예로서 예시된다. 본 개시내용에서 "실시예" 또는 "일 실시예"에 대한 언급들은 반드시 동일한 실시예를 언급하는 것이 아니고, 그러한 언급들은 적어도 하나의 실시예를 의미한다는 것에 유의해야 한다.
도 1은 하나 이상의 실시예에 따른 시스템을 예시한다.
도 2a 및 도 2b는 하나 이상의 실시예에 따른, 예측적 시스템 시정을 위한 동작들의 세트를 예시한다.
도 3은 하나 이상의 실시예에 따른 예를 예시한다.
도 4는 하나 이상의 실시예에 따른 컴퓨터 시스템을 예시하는 블록도를 도시한다.
다음의 설명에서, 설명의 목적들로, 철저한 이해를 제공하기 위해 다수의 특정 세부사항들이 제시된다. 하나 이상의 실시예는 이러한 특정 세부사항들 없이 실시될 수 있다. 일 실시예에서 설명되는 특징들은 상이한 실시예에서 설명되는 특징들과 조합될 수 있다. 일부 예들에서, 널리 공지된 구조들 및 디바이스들은 본 발명을 불필요하게 모호하게 하는 것을 피하기 위해 블록도 형태를 참조하여 설명된다.
1. 일반적인 개요
2. 아키텍처 개요
3. 예측적 시스템 시정
4. 예시적인 예
5. 다양한 사항; 확장들
6. 하드웨어 개요
7. 컴퓨터 네트워크들 및 클라우드 네트워크들
8. 마이크로서비스 애플리케이션들
1. 일반적인 개요
하나 이상의 실시예는 예측적 시스템 시정을 위한 기법들을 포함한다. 시스템(예컨대, 데이터베이스 시스템) 내의 하나 이상의 문제적 시스템 거동에 대한 하나 이상의 시스템-선택 시정 액션의 적용들과 연관된 속성들에 기초하여, 시스템은 하나 이상의 향후 시간에서의 특정 문제적 시스템 거동에 대한 시정 액션의 하나 이상의 향후 적용의 예측된 유효성을 결정한다. 시스템은 시정 액션의 하나 이상의 향후 적용의 예측된 유효성이 긍정적이지만 하나 이상의 성능 기준을 만족시키지 않는다고 결정한다. 예측된 유효성이 긍정적이지만 하나 이상의 성능 기준을 만족시키지 않는다고 결정하는 것에 응답하여, 시스템은 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않는다는 것에 대응하는 통지를 생성한다. 시스템은, 시정 액션의 하나 이상의 향후 적용의 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않는다고 이미 결정함에도 불구하고, 특정 문제적 시스템 거동에 시정 액션을 적용한다.
본 명세서에서 설명되고/설명되거나 청구항들에 기재된 하나 이상의 실시예는 이러한 일반적인 개요 섹션에 포함되지 않을 수 있다.
2. 아키텍처 개요
도 1은 하나 이상의 실시예에 따른 시스템(100)을 예시한다. 도 1에 예시된 바와 같이, 시스템(100)은 관리 인터페이스(104), 자가-치유 시스템(102), 데이터 리포지토리(116), 및 이들의 다양한 구성요소들을 포함한다. 하나 이상의 실시예에서, 시스템(100)은 도 1에 예시된 구성요소들보다 더 많거나 또는 더 적은 구성요소들을 포함할 수 있다. 도 1에 예시된 구성요소들은 서로에 대해 로컬 및/또는 원격으로 있을 수 있다. 도 1에 예시된 구성요소들은 소프트웨어 및/또는 하드웨어로 구현될 수 있다. 각각의 구성요소는 다수의 애플리케이션 및/또는 머신에 걸쳐 분산될 수 있다. 다수의 구성요소는 하나의 애플리케이션 및/또는 머신으로 조합될 수 있다. 하나의 구성요소에 대해 설명되는 동작들은 다른 구성요소에 의해 대신 수행될 수 있다. 컴퓨터 네트워크들과 관련된 추가적인 실시예들 및/또는 예들이 아래에서 설명된다.
실시예에서, 관리 인터페이스(104)는 사용자(예컨대, 관리 역할을 하고/하거나 관리 기능들을 수행하는 사용자)와 자가-치유 시스템(102) 사이의 통신을 용이하게 하도록 구성된 하드웨어 및/또는 소프트웨어를 지칭한다. 관리 인터페이스(104)는 사용자 인터페이스 요소들을 렌더링하고, 사용자 인터페이스 요소들을 통해 입력을 수신한다. 인터페이스들의 예들은 그래픽 사용자 인터페이스(GUI), 커맨드 라인 인터페이스(CLI), 햅틱 인터페이스, 및 음성 커맨드 인터페이스를 포함한다. 사용자 인터페이스 요소들의 예들은 체크박스들, 라디오 버튼들, 드롭다운 리스트들, 리스트 박스들, 버튼들, 토글들, 텍스트 필드들, 날짜 및 시간 선택기들, 커맨드 라인들, 슬라이더들, 페이지들, 및 폼(form)들을 포함한다.
실시예에서, 관리 인터페이스(104)의 상이한 구성요소들은 상이한 언어들로 지정된다. 사용자 인터페이스 요소들의 거동은 자바스크립트와 같은 동적 프로그래밍 언어로 지정된다. 사용자 인터페이스 요소들의 콘텐츠는 하이퍼텍스트 마크업 언어(HTML) 또는 XML 사용자 인터페이스 언어(XUL)와 같은 마크업 언어로 지정된다. 사용자 인터페이스 요소들의 레이아웃은 캐스케이딩 스타일 시트(CSS)들과 같은 스타일 시트 언어로 지정된다. 대안적으로, 관리 인터페이스(104)는 자바, C, 또는 C++와 같은 하나 이상의 다른 언어로 지정된다.
실시예에서, 자가-치유 시스템(102)은 예측적 시스템 시정을 위해 본원에서 설명되는 동작들을 수행하도록 구성된 하드웨어 및/또는 소프트웨어를 지칭한다. 예측적 시스템 시정을 위한 동작들의 예들이 아래에서 설명된다. 자가-치유 시스템(102)은, 시정 액션(들)을 선택 및/또는 개시하기 위한 사용자 입력의 개입을 요구하지 않으면서, 하나 이상의 문제적 시스템 거동을 검출하고, 문제적 시스템 거동(들)에 하나 이상의 시스템-선택 시정 액션을 적용함으로써, '자가-치유'하도록 구성된다. 자가-치유 시스템(102)은 데이터베이스(106)를 포함하는 자가-치유 데이터베이스 시스템일 수 있다. 자가-치유 시스템(102)은 데이터베이스(106)에 영향을 미치는 문제적 시스템 거동들을 검출하고, 하나 이상의 시스템-선택 시정 액션들을 적용하여, 데이터베이스를 '치유'하도록 구성될 수 있다.
실시예에서, 문제적 시스템 거동은, 자가-치유 시스템(102)에 대한 액세스, 자가-치유 시스템(102)에 의해 저장된 데이터의 데이터 무결성, 자가-치유 시스템의 응답성, 및/또는 자가-치유 시스템(102)의 임의의 다른 성능 특성, 또는 이들의 조합에 영향을 미치는 임의의 종류의 거동일 수 있다. 문제적 시스템 거동은 하나 이상의 시스템 메트릭들과 연관될 수 있고, 여기서, 메트릭(들)의 상이한 값들은 비-문제적 시스템 거동들로부터 문제적 시스템 거동들에 이르는 범위의 상이한 시스템 상태들에 대응한다. 예컨대, 자가-치유 시스템(102)은, 대역폭 사용량, 응답 시간들, 프로세서 활용도, 저장 가용성, 트랜잭션 레이트들, 프로세싱 시간들, 대기 시간들, 및/또는 시스템 거동을 정량화하는 임의의 다른 종류의 메트릭, 또는 이들의 조합에 대응하는 메트릭들을 추적할 수 있다. 비-문제적 시스템 거동은 해당 구성요소(들)가 의도된 대로 기능하고 있는 시스템 상태에 대응한다. 문제적 시스템 거동은 자가-치유 시스템(102)의 하나 이상의 구성요소가 저하 및/또는 비-기능 상태에 있다는 것을 나타낸다. 예컨대, 문제적 시스템 거동은 자가-치유 시스템의 하나 이상의 구성요소가 고장났고/고장났거나, 임박한 고장의 증상들을 보이고/보이거나, 예상대로 수행하고 있지 않는다는 것을 나타낼 수 있다. 문제적 시스템 거동들의 예들은, 대역폭 포화도; 느린 응답 시간; 높은 프로세서 활용도; 낮은 저장 공간(예컨대, 디스크 공간) 가용성; 시간 단위당(예컨대, 초당) 비정상적으로 높은 레이트의 요청들 및/또는 트랜잭션들; 트랜잭션당 느린 프로세싱 시간; 대기 상태들에서 소비되는 비정상적으로 긴 시간들(예컨대, 입력/출력 대기 시간들, 프로세서 대기 시간들 등); 및/또는 임의의 다른 종류의 문제적 시스템 거동, 또는 이들의 조합을 포함할 수 있지만 이에 제한되지는 않는다.
실시예에서, 시정 액션은 하나 이상의 문제적 시스템 거동을 시정하도록 설계된 임의의 종류의 액션 또는 이들의 조합일 수 있다. 시정 액션은 자가-치유 시스템(102)의 구성요소(예컨대, 데이터베이스, 서비스, 가상 머신, 운영 시스템, 및/또는 자가-치유 시스템(102)의 임의의 다른 구성요소, 또는 이들의 조합)를 재시작 또는 리셋할 수 있다. 대안적으로 또는 추가적으로, 시정 액션은 자가-치유 시스템(102)에 대한 추가적인 자원들(예컨대, 네트워크 대역폭, 프로세서 사이클들, 메모리, 저장소, 및/또는 임의의 다른 종류의 자원, 또는 이들의 조합)을 프로비저닝(provision)할 수 있다. 예컨대, 자가-치유 시스템(102)은 데이터 센터, 가상 머신 환경, 및/또는 다수의 물리적 및/또는 가상 시스템들 사이에서 이용가능한 자원들이 할당되는 임의의 다른 종류의 동작 환경에서 동작할 수 있다. 시정 액션은 자가-치유 시스템(102)에 자유 자원들을 할당할 수 있고/있거나 다른 시스템으로부터 자가-치유 시스템(102)에 자원들을 재할당할 수 있다. 대안적으로 또는 추가적으로, 시정 액션은 자가-치유 시스템의 하나 이상의 구성요소를 재구성할 수 있다. 예컨대, 네트워크 인터페이스가 포화된 경우, 시정 액션은 그 네트워크 인터페이스를 통해 실시되는 트랜잭션들에 데이터 레이트 제한을 부과할 수 있다. 다수의 상이한 종류의 시정 액션 및/또는 이들의 조합이 다수의 상이한 종류의 문제적 시스템 거동에 적용될 수 있다.
실시예에서, 시정 엔진(108)은, 문제적 시스템 거동을 검출하는 것, 문제적 시스템 거동에 적용하기 위한 시정 액션을 선택하는 것, 및/또는 문제적 시스템 거동에 시정 액션을 적용하는 것을 위해 본원에서 설명되는 동작들을 수행하도록 구성된 하드웨어 및/또는 소프트웨어를 지칭한다. 시정 엔진(108)은 (예컨대, 폴링(polling), 로깅 에이전트(logging agent)들, 구성요소들이 이들의 건강(health) 상태를 주기적으로 보고하는 하트비트(heartbeat) 시스템, 및/또는 임의의 다른 종류의 모니터링, 또는 이들의 조합을 사용하여) 자가-치유 시스템(102)의 구성요소들을 모니터링하도록 구성될 수 있다. 모니터링에 기초하여, 시정 엔진(108)은 문제적 시스템 거동을 검출할 수 있다. 문제적 시스템 거동을 검출하는 것에 응답하여, 시정 엔진(108)은 하나 이상의 특정 문제적 시스템 거동에 적용가능한 것으로 지정되었을 수 있는 이용가능한 시정 액션들의 세트로부터 선택할 수 있다. 시정 엔진(108)은 문제적 시스템 거동에 시스템-선택 시정 액션을 적용할 수 있다.
실시예에서, 시정 엔진(108)은 하나 이상의 문제적 시스템 거동을 해결하기 위한 하나 이상의 시정 액션의 향후 유효성을 예측하도록 구성된다. 구체적으로, 시정 엔진(108)은, 시정 액션들의 향후 유효성을 예측하기 위해, 문제적 시스템 거동들에 대한 시정 액션들의 이전 적용들에 관한 정보를 사용할 수 있다. 시정 엔진(108)은 아래에서 설명되는 데이터 리포지토리(116)에 저장된 정보를 사용할 수 있다.
실시예에서, 자가-치유 시스템(102)은 머신 학습 엔진(109)을 포함한다. 머신 학습은 가변 입력들을 갖는 문제들을 해결하기 위한 컴퓨터에 의해 구현되는 사용자 독립적 프로세스들을 다루는 인공 지능의 분야에서의 다양한 기법들을 포함한다. 자가-치유 시스템(102)은, 하나 이상의 시정 액션의 향후 유효성을 예측하기 위해, 본원에서 설명되는 하나 이상의 동작을 수행하기 위해 머신 학습 엔진(109)을 사용하도록 구성될 수 있다.
실시예에서, 머신 학습 엔진(109)은 하나 이상의 동작을 수행하기 위해 머신 학습 모델(110)을 트레이닝한다. 머신 학습 모델(110)을 트레이닝하는 것은 머신 학습 모델에 대한 하나 이상의 입력이 주어지면 대응하는 출력을 컴퓨팅하는 함수를 생성하기 위해 트레이닝 데이터를 사용한다. 출력은 이전 머신 학습에 기초한 예측에 대응할 수 있다. 실시예에서, 출력은 제공된 입력(들)에 배정된 라벨, 분류, 및/또는 카테고리화를 포함한다. 머신 학습 모델(110)은 원하는 동작(들)(예컨대, 입력들의 라벨링, 분류, 및/또는 카테고리화)을 수행하기 위한 학습된 모델에 대응한다.
실시예에서, 머신 학습 엔진(109)은 지도 학습, 준-지도 학습, 비지도 학습, 강화 학습, 및/또는 다른 트레이닝 방법, 또는 이들의 조합을 사용할 수 있다. 지도 학습에서, 라벨링된 트레이닝 데이터는 입력/출력 쌍들을 포함하고, 여기서, 각각의 입력은 지도 신호로 또한 지칭되는 원하는 출력(예컨대, 라벨, 분류, 및/또는 카테고리화)으로 라벨링된다. 준-지도 학습에서, 일부 입력들은 지도 신호들과 연관되고, 다른 입력들은 지도 신호들과 연관되지 않는다. 비지도 학습에서, 트레이닝 데이터는 지도 신호들을 포함하지 않는다. 강화 학습은 피드백 시스템을 사용하고, 여기서, 머신 학습 엔진(109)은 특정 문제를 해결하려고 시도하는(예컨대, 하나 이상의 미리 정의된 성능 기준에 따라 특정 시나리오에서 성능을 최적화하려고 시도하는) 프로세스에서 긍정적 및/또는 부정적 강화를 수신한다. 실시예에서, 머신 학습 엔진(109)은 초기에 지도 학습을 사용하여 머신 학습 모델(110)을 트레이닝하고, 그 후에, 비지도 학습을 사용하여 지속적으로 머신 학습 모델(110)을 업데이트한다.
실시예에서, 머신 학습 엔진(109)은 입력들을 라벨링, 분류, 및/또는 카테고리화하기 위해 다수의 상이한 기법을 사용할 수 있다. 머신 학습 엔진(109)은 입력들을 입력들의 하나 이상의 특성("피처(feature)")을 설명하는 피처 벡터들로 변환할 수 있다. 머신 학습 엔진(109)은 피처 벡터들에 기초하여 입력들을 라벨링, 분류, 및/또는 카테고리화할 수 있다. 대안적으로 또는 추가적으로, 머신 학습 엔진(109)은 입력들에서의 공통성(commonality)들을 식별하기 위해 클러스터링(클러스터 분석으로 또한 지칭됨)을 사용할 수 있다. 머신 학습 엔진(109)은 그러한 공통성들에 기초하여 입력들을 그룹화(즉, 클러스터링)할 수 있다. 머신 학습 엔진(109)은 계층적 클러스터링, k-평균 클러스터링, 및/또는 다른 클러스터링 방법, 또는 이들의 조합을 사용할 수 있다. 실시예에서, 머신 학습 엔진(109)은 인공 신경망을 포함한다. 인공 신경망은 다수의 노드(인공 뉴런으로 또한 지칭됨) 및 노드들 사이의 에지들을 포함한다. 에지들은, 머신 학습이 진행됨에 따라 머신 학습 엔진(109)이 조정하는, 노드들 사이의 연결들의 강도들을 표현하는 대응하는 가중치들과 연관될 수 있다. 대안적으로 또는 추가적으로, 머신 학습 엔진(109)은 서포트 벡터 머신(support vector machine)을 포함할 수 있다. 서포트 벡터 머신은 입력들을 벡터들로서 표현한다. 머신 학습 엔진(109)은 벡터들에 기초하여 입력들을 라벨링, 분류, 및/또는 카테고리화할 수 있다. 대안적으로 또는 추가적으로, 머신 학습 엔진(109)은 입력들을 라벨링, 분류, 및/또는 카테고리화하기 위해 나이브 베이즈 분류기(naive Bayes classifier)를 사용할 수 있다. 대안적으로 또는 추가적으로, 특정 입력이 주어지면, 머신 학습 모델은 주어진 입력에 대한 출력을 예측하기 위해 결정 트리를 적용할 수 있다. 대안적으로 또는 추가적으로, 머신 학습 엔진(109)은 상호 배타적 옵션들의 고정 세트 중에서 입력을 라벨링, 분류, 및/또는 카테고리화하는 것이 불가능하거나 또는 비실용적인 상황들에서 퍼지 논리를 적용할 수 있다. 전술된 머신 학습 모델(110) 및 기법들은 단지 예시적인 목적으로 논의되고, 하나 이상의 실시예를 제한하는 것으로 해석되지 않아야 한다.
실시예에서, 머신 학습 엔진(109)이 머신 학습 모델(110)에 상이한 입력들을 적용하기 때문에, 대응하는 출력들이 항상 정확하지는 않다. 예로서, 머신 학습 엔진(109)은 머신 학습 모델(110)을 트레이닝하기 위해 지도 학습을 사용할 수 있다. 머신 학습 모델(110)을 트레이닝한 후에, 후속 입력이 라벨링된 트레이닝 데이터에 포함된 입력과 동일하고 출력이 트레이닝 데이터에서의 지도 신호와 동일한 경우, 출력은 확실히 정확하다. 입력이 라벨링된 트레이닝 데이터에 포함된 입력들과 상이한 경우, 머신 학습 엔진(109)은 부정확하거나 또는 불확실한 정확성을 갖는 대응하는 출력을 생성할 수 있다. 주어진 입력에 대한 특정 출력을 생성하는 것에 추가하여, 머신 학습 엔진(109)은 출력의 정확성에서의 신뢰도(또는 신뢰도의 부족)를 표현하는 표시자를 생성하도록 구성될 수 있다. 신뢰도 표시자는 수치 스코어, 부울 값, 및/또는 출력의 정확성에서의 신뢰도(또는 신뢰도의 부족)에 대응하는 임의의 다른 종류의 표시자를 포함할 수 있다.
실시예에서, 문제적 시스템 거동 및 후보 시정 액션이 주어지면, 머신 학습 엔진(109)은 문제적 시스템 거동을 해결하기 위한 후보 시정 액션의 향후 유효성을 예측하도록 구성될 수 있다. 머신 학습 엔진(109)은 문제적 시스템 거동들에 대한 시정 액션들의 이전 적용들 및/또는 시스템 거동들에서의 패턴들을 검출 및 저장하도록 구성될 수 있다. 머신 학습 엔진(109)은, 이러한 패턴들에 기초하여, 향후 시스템 거동들 및/또는 시정 액션들의 유효성을 예측하도록 구성될 수 있다.
실시예에서, 머신 학습 엔진(109)은 시즌 패턴(seasonal pattern)들(112)을 검출 및 저장하도록 구성된다. 시즌 패턴들(112)은 특정 시즌들, 즉, 시즌 요인들로 인해 시스템 거동들이 비교적 예측가능한 방식들로 변화될 수 있는 시간 기간들과 연관된 시스템 거동들의 패턴들이다. 예컨대, 휴일들 및 할인 이벤트들은 전형적으로 시즌 시스템 거동들과 연관된다. 시즌성은 미국 특허 출원 제15/186,938호에서 더 상세히 논의되고, 이는 그 전체가 본원에 참조로 포함된다.
실시예에서, 머신 학습 엔진(109)은 비-시즌 패턴들(114)을 검출 및 저장하도록 구성된다. 비-시즌 패턴들(114)은 특정 시즌들과 연관되지 않는 시스템 거동들의 패턴들이다. 비-시즌 패턴(114)은 시간 경과에 따른 시스템 거동에서의 경향(예컨대, 증가하는 대기 시간들)에 대응할 수 있다. 대안적으로 또는 추가적으로, 비-시즌 패턴(114)은 시간 경과에 따른 시스템 거동에서의 순환적 패턴(예컨대, 인식가능한 패턴에 따른 긴 대기 시간들과 짧은 대기 시간들 사이의 이동)에 대응할 수 있다. 대안적으로 또는 추가적으로, 시즌 패턴들(112) 및/또는 비-시즌 패턴들(114)은 문제적 시스템 거동들을 해결하기 위해 시정 액션들이 적용될 때의 시스템 거동들의 패턴들을 반영할 수 있다. 시즌 패턴들(112) 및/또는 비-시즌 패턴들(114)은 아래에서 설명되는 데이터 리포지토리(116)에 저장된 정보에 기초할 수 있다. 일반적으로, 실시예에서, 머신 학습 엔진(109)은 향후 시스템 거동들을 예측하기 위해 시즌 패턴들(112) 및/또는 비-시즌 패턴들(114)을 사용한다.
실시예에서, 머신 학습 엔진(109)은, 향후 시스템 거동들 및/또는 문제적 시스템 거동에 대한 시정 액션의 적용의 향후 유효성을 예측할 때, 시즌 패턴들(112) 및/또는 비-시즌 패턴들(114)을 고려하도록 구성된다. 향후 시스템 거동들 및/또는 문제적 시스템 거동에 대한 시정 액션의 적용의 향후 유효성을 예측하는 것이 아래에서 더 상세히 논의된다.
실시예에서, 시스템(100)은 데이터 리포지토리(116)를 포함한다. 데이터 리포지토리(116)는 하나 이상의 시스템 거동 정의(120)를 저장하도록 구성될 수 있다. 시스템 거동 정의(120)는 문제적 시스템 거동 또는 비-문제적 시스템 거동으로서 취급될 시스템 거동에 대응한다. 시스템 거동 정의(120)는 시스템 거동의 종류(예컨대, 프로세서 활용도) 및/또는 특정 시스템 자원(예컨대, 특정 네트워크 인터페이스)을 나타내는 데이터를 포함할 수 있다. 대안적으로 또는 추가적으로, 시스템 거동 정의(120)는 임계 메트릭(예컨대, 최대 프로세서 활용도, 자유 저장 공간의 최소량 등)을 포함할 수 있고, 그 임계 메트릭 이상인 경우, 대응하는 시스템 거동은 문제적인 것으로 고려된다. 실시예에서, 특정 시스템 거동이 '문제적인 것'으로 고려되는지 여부는 시스템 거동의 시즌 패턴들(112)에 적어도 부분적으로 기초한다. 예컨대, 비-피크 시즌 동안 문제적인 것으로 고려될 수 있는 시스템 거동(예컨대, 높은 프로세서 사용량, 높은 요청 레이트, 높은 대역폭 포화도 등)은 피크 시즌 동안(예컨대, 프로모션 또는 휴일 시즌 동안) 비-문제적인 것으로 고려될 수 있다. 하나 이상의 시스템 거동 정의(120)는 상이한 시즌들 및/또는 시즌들의 종류들에 대한 상이한 기준들을 포함할 수 있다.
대안적으로 또는 추가적으로, 데이터 리포지토리(116)는 하나 이상의 시정 액션 정의(122)를 저장하도록 구성될 수 있다. 시정 액션 정의(122)는 (예컨대, 시스템 거동 정의(120)에 의해 정의된 바와 같은) 문제적 시스템 거동을 시정하려고 시도하기 위해 자가-치유 시스템에 의해 선택가능한 거동에 대응한다. 시정 액션 정의(122)는 시정 액션 정의(122)에 대응하는 시정 액션이 적용되는 시스템 거동의 종류(예컨대, 높은 프로세서 활용도)를 나타내는 데이터를 포함할 수 있다. 시정 액션 정의(122)는 시정 액션 정의(122)를 대응하는 시스템 거동 정의(120)에 매핑함으로써(예컨대, 시정 액션 정의(122)에 시스템 거동 정의(120)의 고유 식별자를 포함시키는 것에 의해, 또는 시정 액션 정의(122)를 시스템 거동 정의(120)에 매핑하기 위한 일부 다른 기법에 의해) 적용가능한 시스템 거동을 나타낼 수 있다. 대안적으로 또는 추가적으로, 시정 액션 정의(122)는 적용될 시정 액션(들)을 나타낼 수 있다. 시정 액션들의 예들은 위에서 설명된다.
대안적으로 또는 추가적으로, 데이터 리포지토리(116)는 시정 이력(124)을 저장하도록 구성될 수 있다. 시정 이력(124)은 하나 이상의 문제적 시스템 거동에 대한 하나 이상의 시정 액션의 이전 적용(들)에 대응하는 데이터를 포함한다. 데이터는 적용(들)과 연관된 속성들을 포함할 수 있다. 예컨대, 속성은, 시정 액션이 적용된 시간; 시정 액션이 적용되기 전의 문제적 시스템 거동과 연관된 메트릭; 시정 액션이 적용된 후의 문제적 시스템 거동과 연관된 메트릭; 시정 액션의 적용이 문제적 시스템 거동을 시정하는 데 성공적이었는지 여부를 나타내는 데이터 값; 및/또는 하나 이상의 문제적 시스템 거동에 대한 하나 이상의 시정 액션의 하나 이상의 적용과 연관된 임의의 다른 종류의 정보를 나타낼 수 있다.
대안적으로 또는 추가적으로, 데이터 리포지토리(116)는 시정 구성(126)을 저장하도록 구성될 수 있다. 시정 구성(126)은 문제적 시스템 거동에 시정 액션을 적용하기 위한 하나 이상의 기준을 나타낸다. 문제적 시스템 거동에 시정 액션을 적용하기 위한 기준은 대응하는 시스템 거동이 문제적인 것으로 고려된다는 것을 나타내는 임계 메트릭과 상이할 수 있다. 예컨대, 기준은 시스템 거동이 적어도 특정 시간량 동안 또는 특정 양(예컨대, 임계 메트릭 초과 또는 미만의 특정 양 또는 퍼센트)만큼 문제가 있을 때에만 시정 액션이 적용되어야 한다는 것을 나타낼 수 있다. 대안적으로 또는 추가적으로, 시정 구성(126)은 상이한 시정 액션들에 대한 선호 순서, 시정 액션들이 적용될 수 있는 시각들(예컨대, 오프-피크 시간들 동안에만 자가-치유 시스템(102)을 재시작함), 특정 시정 액션을 시도하기 위한 최대 횟수, 및/또는 문제적 시스템 거동에 시정 액션을 적용하기 위한 임의의 다른 기준, 또는 이들의 조합을 나타낼 수 있다.
실시예에서, 시스템 거동 정의(120), 시정 액션 정의(122), 시정 구성(126), 및/또는 다른 저장 아이템, 또는 이들의 조합은, 시정 액션이 성공적인 것으로 고려되는지 여부에 대응하는, 시정 액션에 대한 하나 이상의 성능 기준을 포함할 수 있다. 시정 액션에 대한 하나 이상의 성능 기준은 향후의 어느 시간에서의 또는 향후의 특정 시간 윈도우 내의 그 시스템 거동의 예상되는 값, 또는 시스템 거동에 대한 상대적 개선에 대응할 수 있다. 예컨대, 하나 이상의 성능 기준은 프로세서 활용도에 관한 시정 액션이, 임의로 향후의 특정 시간 윈도우 동안, 현재 프로세서 활용도 레벨로부터 적어도 특정 퍼센트만큼 프로세서 활용도를 감소시킬 것으로 예상되는 경우, 그 시정 액션이 '성공적'인 것을 나타낼 수 있다. 다른 예로서, 하나 이상의 성능 기준은 저장 공간에 관한 시정 액션이, 임의로 향후의 특정 시간 윈도우 동안, 현재 활용되는 저장 공간의 적어도 특정 퍼센트를 자유롭게 할 것으로 예상되는 경우, 그 시정 액션이 '성공적'인 것을 나타낼 수 있다. 또 다른 예로서, 하나 이상의 성능 기준은, 시스템이, 임의로 향후의 특정 시간 윈도우 동안(예컨대, 다음 30일 동안), 임계 동작 상태에 들어가거나 또는 진입할 것으로 예측되지 않는 경우, 시정 액션이 '성공적'인 것을 나타낼 수 있고, 그 임계 동작 상태는 (예컨대, 시스템 관리자의 경험, 견식, 또는 위험 회피 성향에 기초하여) 사용자에 의해 정의되고/정의되거나, 성능을 심각하게 저하시키는 레벨들까지(예컨대, 컴퓨터 시스템의 실제 또는 가상 사용자들이 컴퓨터 시스템에 의해 제공되거나 또는 심지어 보장되는 이익들을 획득하는 것을 방지하는 포인트, 또는 컴퓨터 시스템의 소유자에게 컴퓨터 시스템의 용인되는 비용들 및 목적에 비해 용인가능하지 않게 많은 자원들의 양을 지불하게 하는 포인트까지) 상승된 부하들과 연관된다. 이 예에서, 향후의 지정된 시간 윈도우 내에 시스템이 그 임계 동작 상태에 진입할 것으로 예상되지 않는 한, 시정 액션은 기저 문제에 대한 더 맞춤화된 솔루션을 제공해야 하는 임의의 실제 필요성을 지연시키는 데 있어서 성공적이다. 대안적으로 또는 추가적으로, 시정 액션에 대한 하나 이상의 성능 기준은 절대적 메트릭에 대응할 수 있다. 예컨대, 하나 이상의 성능 기준은 프로세서 활용도에 관한 시정 액션이, 임의로 향후의 특정 시간 윈도우 동안, 프로세서 활용도를 특정 양(예컨대, 50 퍼센트 활용도) 미만으로 감소시킬 것으로 예상되는 경우, 그 시정 액션이 '성공적'인 것을 나타낼 수 있다. 다른 예로서, 하나 이상의 성능 기준은 저장 공간에 관한 시정 액션이, 임의로 향후의 특정 시간 윈도우 동안, 적어도 특정 양의 저장 공간(예컨대, 1 테라바이트)을 발생시킬 것으로 예상되는 경우, 그 시정 액션이 '성공적'인 것을 나타낼 수 있다. 다수의 상이한 종류의 성능 기준 및/또는 이들의 조합이 시정 액션에 대한 '성공'을 정의하는 데 사용될 수 있다.
실시예에서, 데이터 리포지토리(116)는 데이터를 저장하기 위한 임의의 타입의 저장 유닛 및/또는 디바이스(예컨대, 파일 시스템, 데이터베이스, 테이블들의 집합, 또는 임의의 다른 저장 메커니즘)이다. 추가로, 데이터 리포지토리(116)는 다수의 상이한 저장 유닛 및/또는 디바이스를 포함할 수 있다. 다수의 상이한 저장 유닛 및/또는 디바이스는 동일한 타입일 수 있거나 동일한 타입이 아닐 수 있거나, 또는 동일한 물리적 사이트에 위치될 수 있거나 동일한 물리적 사이트에 위치되지 않을 수 있다. 추가로, 데이터 리포지토리(116)는 시스템(100)의 하나 이상의 다른 구성요소와 동일한 컴퓨팅 시스템 상에서 구현될 수 있거나 또는 실행될 수 있다. 대안적으로 또는 추가적으로, 데이터 리포지토리(116)는 시스템(100)의 하나 이상의 다른 구성요소와 별개인 컴퓨팅 시스템 상에서 구현될 수 있거나 또는 실행될 수 있다. 데이터 리포지토리(116)는, 직접 연결을 통해 또는 네트워크를 통해, 시스템(100)의 하나 이상의 다른 구성요소에 통신가능하게 커플링될 수 있다.
시스템 거동 정의들(120), 시정 액션 정의들(122), 시정 이력(124), 및/또는 시정 구성(126)을 설명하는 정보는 시스템(100) 내의 구성요소들 중 임의의 것에 걸쳐 구현될 수 있다. 그러나, 이 정보는 명확성 및 설명의 목적으로 데이터 리포지토리(116) 내에 예시된다.
실시예에서, 시스템(100)의 하나 이상의 구성요소는 하나 이상의 디지털 디바이스 상에 구현된다. "디지털 디바이스"라는 용어는 일반적으로, 프로세서를 포함하는 임의의 하드웨어 디바이스를 지칭한다. 디지털 디바이스는 애플리케이션 또는 가상 머신을 실행하는 물리적 디바이스를 지칭할 수 있다. 디지털 디바이스들의 예들은 컴퓨터, 태블릿, 랩톱, 데스크톱, 넷북, 서버, 웹 서버, 네트워크 정책 서버, 프록시 서버, 일반 머신, 기능 특정 하드웨어 디바이스, 하드웨어 라우터, 하드웨어 스위치, 하드웨어 방화벽, 하드웨어 방화벽, 하드웨어 네트워크 어드레스 변환기(network address translator)(NAT), 하드웨어 로드 밸런서(hardware load balancer), 메인프레임, 텔레비전, 콘텐츠 수신기, 셋톱 박스, 프린터, 모바일 핸드셋, 스마트폰, 개인 휴대 정보 단말("PDA"), 무선 수신기 및/또는 송신기, 기지국, 통신 관리 디바이스, 라우터, 스위치, 제어기, 액세스 포인트, 및/또는 클라이언트 디바이스를 포함한다.
3. 예측적 시스템 시정
도 2a 및 도 2b는 하나 이상의 실시예에 따른, 예측적 시스템 시정을 위한 동작들의 예시적인 세트를 예시한다. 도 2a 및 도 2b에 예시된 하나 이상의 동작은 모두 함께 수정, 재배열, 또는 생략될 수 있다. 따라서, 도 2a 및 도 2b에 예시된 동작들의 특정 시퀀스는 하나 이상의 실시예의 범위를 제한하는 것으로 해석되지 않아야 한다.
실시예에서, 시스템(예컨대, 도 1의 자가-치유 시스템(102))은 시스템에 대한 하나 이상의 시정 액션의 적용들과 연관된 속성들을 획득한다(동작(202)). 위에서 논의된 바와 같이, 속성들은, 시정 액션이 적용된 시간; 시정 액션이 적용되기 전의 문제적 시스템 거동과 연관된 메트릭; 시정 액션이 적용된 후의 문제적 시스템 거동과 연관된 메트릭; 시정 액션의 적용이 문제적 시스템 거동을 시정하는 데 성공적이었는지 여부를 나타내는 데이터 값; 및/또는 하나 이상의 문제적 시스템 거동에 대한 하나 이상의 시정 액션의 하나 이상의 적용과 연관된 임의의 다른 종류의 정보를 포함하지만 이에 제한되지는 않는, 시정 액션(들)의 이전 적용들과 연관된 임의의 종류의 정보를 포함할 수 있다. 속성들은 머신 학습 모델을 트레이닝하기 위해 특별히 설계되어 시스템 내에 로딩된 라벨링된 트레이닝 데이터를 포함할 수 있다. 대안적으로 또는 추가적으로, 속성들은 시스템 동작 동안 획득된 라벨링되지 않은 데이터를 포함할 수 있다.
실시예에서, 시스템은 시정 액션들의 적용의 유효성을 예측하기 위해 머신 학습 모델을 트레이닝한다(동작(204)). 위에서 논의된 바와 같이, 시스템은 지도 학습, 비지도 학습, 강화 학습, 및/또는 다른 트레이닝 방법, 또는 이들의 조합을 사용하여 머신 학습 모델을 트레이닝할 수 있다. 시스템은, 머신 학습 모델을 트레이닝하기 위해, 라벨링된 및/또는 라벨링되지 않은 데이터(예컨대, 시스템에 대한 하나 이상의 시정 액션의 적용들과 연관된 속성들)를 사용할 수 있다.
실시예에서, 시스템은 시정 액션에 대한 하나 이상의 성능 기준을 구성하기 위해 사용자 입력을 수신한다(동작(206)). 위에서 논의된 바와 같이, 시정 액션에 대한 하나 이상의 성능 기준은, 시정 액션의 적용의 특정 인스턴스와 비교하여, 시정 액션이 성공적인 것으로 고려되는지 여부를 나타낸다. 실시예에서, 하나 이상의 성능 기준은 시스템이 사용자 인터페이스(예컨대, 도 1의 관리 인터페이스(104))를 통해 수신하는 하나 이상의 사용자에 의해 정의되는 기준을 포함한다.
실시예에서, 시스템은 문제적 시스템 거동들을 모니터링한다(동작(208)). 시스템은 (예컨대, 위에서 설명된 하나 이상의 모니터링 기법을 사용하여) 현재 시스템 거동들과 연관된 데이터를 획득함으로써, 문제적 시스템 거동들을 모니터링할 수 있다. 현재 시스템 거동들과 연관된 데이터에 기초하여, 시스템은 문제적 시스템 거동이 검출되는지 여부를 결정한다(동작(210)). 실시예에서, 특정 시스템 거동이 '문제적인 것'으로 고려되는지 여부는 시스템 거동의 시즌 패턴들에 적어도 부분적으로 기초한다. 비-피크 시즌 동안 문제적인 것으로 고려될 수 있는 시스템 거동(예컨대, 높은 프로세서 사용량, 높은 요청 레이트, 높은 대역폭 포화도 등)은 피크 시즌 동안(예컨대, 프로모션 또는 휴일 시즌 동안) 비-문제적인 것으로 고려될 수 있다. 시스템은 피크 시즌 동안 발생하는 이러한 거동들이 시즌의 종료 시에 진정 및/또는 자가-수정될 것이므로 시정 액션을 요구하지 않을 것으로 예측할 수 있다. 시스템 거동이 문제적인 것으로 고려되는지 여부는 하나 이상의 시스템 거동 정의(예컨대, 도 1의 시스템 거동 정의(120))에 대해 평가될 수 있다. 상이한 기준들이 상이한 시즌들 및/또는 시즌들의 종류들에 적용될 수 있다. 일반적으로, 실시예에서, 시스템은, 예상되는 시스템 거동으로부터 충분히(예컨대, 특정 수의 표준 편차와 같은 정의된 양 또는 정도만큼) 그리고 지속적으로 벗어나는 것으로 인해 문제가 되는 시스템 거동들을 모니터링한다.
실시예에서, 문제적 시스템 거동이 검출되었다고 결정하는 것에 응답하여, 시스템은 검출된 문제적 시스템 거동에 적용가능한 임의의 시정 액션이 이용가능한지 여부를 결정한다(동작(212)). 구체적으로, 시스템은 임의의 시정 액션 정의(예컨대, 도 1의 시정 액션 정의(122))가 검출된 특정 문제적 시스템 거동 및/또는 문제적 시스템 거동의 종류에 매핑되는지 여부를 결정할 수 있다. 검출된 문제적 시스템 거동에 적용가능한 시정 액션이 이용가능하지 않은 경우, 시스템은 시스템이 '자가-치유'될 수 없다는 것을 나타내는 통지를 생성할 수 있다(동작(214)). 시스템은 통지를 로깅하고/로깅하거나 통지를 사용자(예컨대, 시스템 관리자)에게 송신할 수 있다.
실시예에서, 검출된 문제적 시스템 거동에 적용가능한 시정 액션이 이용가능하다고 결정하는 것에 응답하여, 시스템은 문제적 시스템 거동에 대한 시정 액션의 적용의 예측된 유효성을 결정한다(동작(216)). 시스템은 문제적 시스템 거동의 현재 명시된 인스턴스에 대한 시정 액션의 적용의 예측된 유효성을 결정할 수 있다. 대안적으로, 시스템은 문제적 시스템 거동의 하나 이상의 향후 인스턴스에 대한 시정 액션의 적용의 예측된 유효성을 결정할 수 있다. 일부 경우들에서, 시정 액션을 적용하는 것은 문제적 시스템 거동을 일시적으로 해결할 수 있다. 그러나, 문제적 시스템 거동이 다시 발생할 수 있고, 시정 액션은 후속 적용들에서 덜 성공적일 수 있다. 예컨대, 시정 액션은 시간 경과에 따라 효과가 감소될 수 있다.
실시예에서, 시스템은, 문제적 시스템 거동에 대한 시정 액션의 적용의 예측된 유효성을 결정하기 위해, 머신 학습 모델(예컨대, 도 1의 머신 학습 모델(110))을 사용한다. 예측된 유효성은 시정 액션이 더 이상 유효하지 않을 것으로 예측되는 때(예컨대, 특정 시간량 및/또는 문제적 시스템 거동의 특정 수의 인스턴스 후)에 관한 정보를 포함할 수 있다. 예측된 유효성은 시정 액션이 성공적인 양 또는 정도 및/또는 성공적이지 않은 양 또는 정도를 나타내는 메트릭에 대응할 수 있다. 시스템은 문제적 시스템 거동의 현재 인스턴스에 시정 액션을 적용하기 전의 예측된 유효성을 결정할 수 있다. 대안적으로 또는 추가적으로, 시스템은, 시스템에서 현재 명시되지 않은 문제적 시스템 거동들에 대해 시스템이 임의의 취약성들을 갖는지 여부를 결정하기 위해, 시정 액션의 예측된 유효성을 사전에 결정할 수 있다.
실시예에서, 시스템은 시정 액션의 적용의 예측된 유효성이 하나 이상의 성능 기준을 만족시키는지 여부를 결정하고(동작(218)), 하나 이상의 성능 기준은, 시정 액션의 적용의 특정 인스턴스와 비교하여, 시정 액션이 성공적인 것으로 고려되는지 여부를 나타낸다. 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않거나, 또는 다른 방식으로, 시정 액션이 성공적이지 않을 것으로 예측된다는 것을 나타내는 경우, 시스템은 통지를 생성할 수 있다(동작(220)). 통지는 시스템의 예측과 연관된 임의의 종류의 정보, 이를테면, 문제적 시스템 거동; 시정 액션; 예측된 유효성; 시정 액션이 하나 이상의 성능 기준에 실패할 것으로 예측되는 타임프레임; 및/또는 시스템의 예측과 연관된 임의의 다른 종류의 정보, 또는 이들의 조합을 포함할 수 있다. 시스템은 통지를 로깅하고/로깅하거나 통지를 사용자(예컨대, 시스템 관리자)에게 송신할 수 있다. 실시예에서, 시스템은, 사용자가 개입하여 예측된 실패를 방지하기 위한 충분한 시간을 허용하기 위해, 시정 액션이 하나 이상의 성능 기준을 만족시키는 것에 실패할 것으로 예측되기 전의 특정 시간량 내에(예컨대, 일주일, 한 달, 또는 사용자에 의해 구성될 수 있는 임의의 다른 시간 기간 내에) 통지를 송신하도록 구성된다. 시간량은 사용자가 문제적 시스템 거동을 트러블슈팅(troubleshoot) 및/또는 해결하기 위해 예상되는 시간량에 적어도 부분적으로 기초할 수 있다. 시간량은, 예컨대, 본원에서 설명되는 바와 같은 시스템의 자가-치유 거동을 관리하기 위한 제어들을 포함하는 사용자 인터페이스를 통해, 사용자에 의해 구성가능할 수 있다. 실시예에서, 통지는, 사용자에 의해 선택될 때, 시스템의 자가-치유 거동을 관리하기 위한 제어들을 포함하는 그래픽 사용자 인터페이스로 사용자를 안내하는 링크(예컨대, 하이퍼링크, 애플리케이션 런처, 및/또는 다른 종류의 링크)를 포함한다. 대안적으로 또는 추가적으로, 통지 자체가 그러한 제어들을 갖는 그래픽 사용자 인터페이스를 포함할 수 있다. 자가-치유 거동을 관리하기 위한 명령어들에 대응하는 사용자 입력의 일부 예들이 아래에서 논의된다.
실시예에서, 시스템은 다른 시정 액션이 문제적 시스템 거동에 적용가능한지 여부를 결정한다(동작(222)). 시스템은 문제적 시스템 거동에 적용가능한 각각의 시정 액션의 적용의 유효성을 예측할 수 있다.
실시예에서, 시정 액션(또는 적용가능한 경우, 다수의 시정 액션)의 적용의 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않거나, 또는 시정 액션이 성공적이지 않을 것으로 다른 방식으로 예측되는 경우에도, 그럼에도 불구하고, 시스템은 문제적 시스템 거동의 현재 인스턴스에 시정 액션을 적용한다(동작(224)). 위에서 논의된 바와 같이, 시정 액션을 적용하는 것은 문제적 시스템 거동을 일시적으로 시정 및/또는 개선할 수 있다. 시스템은, 문제적 시스템 거동을 해소하기 위해 추가 액션이 취해질 때까지, 문제적 시스템 거동의 인스턴스들에 시정 액션을 계속 적용하여, 시스템의 능력이 미치는 한 '자가-치유'를 수행할 수 있다. 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않음에도 불구하고 시정 액션을 적용하는 것은, 시정 액션이 하나 이상의 성능 기준을 여전히 만족시키는 문제적 시스템 거동의 인스턴스들에 대해 및/또는 소정 시간 기간 동안, 시스템이 시정 액션을 계속 적용하게 허용할 수 있다. 시스템은, 시정 액션의 유효성이 하나 이상의 성능 기준을 만족시키는 것에 실패하는 문제적 시스템 거동의 인스턴스 및/또는 시점에 도달되기 전에, 시정 액션을 계속 적용할 수 있다.
실시예에서, 시스템은 문제적 시스템 거동에 다수의 시정 액션을 적용한다. 시스템은 특정 순서로 시정 액션들을 적용할 수 있다. 예컨대, 시스템은, 예측된 유효성, 시스템을 동작시키는 엔티티에 대한 예측된 비용, 복잡성(예컨대, 소프트웨어 패치를 적용하기 전에 더 많은 자원들을 할당하려고 시도하는 것, 또는 더 많은 자원들을 할당하기 전에 캐시를 클리어링하는 것), 또는 임의의 다른 순서화 기준, 또는 이들의 조합의 순서로, 시정 액션들을 적용할 수 있다. 대안적으로 또는 추가적으로, 시스템은 정의된 순서(예컨대, 관리 인터페이스를 통해 시스템 구성에서 관리자에 의해 지정된 특정 순서)에 따라 시정 액션들을 적용할 수 있다. 실시예에서, 시스템은, 적용될 때, 어떤 시정 액션들이 가장 유효한지에 대한 기록들을 저장하고, 문제적 거동들의 향후 인스턴스들에서 가장 유효한 시정 액션들에 선호를 부여한다. 대안적으로 또는 추가적으로, 시스템은 시정 액션들의 문제적 이차 효과들(예컨대, 소프트웨어 패치를 적용할 때의 시스템 다운타임)을 추적할 수 있고, 문제적 시스템 거동들의 향후 인스턴스들에서 가장 문제적 이차 효과들을 갖는 시정 액션들을 선호하지 않을 수 있다. 시스템은 문제적 이차 효과들을 갖는 것으로 알려진 시정 액션을 적용하기 전에 확인을 위해 사용자에게 프롬프팅할 수 있다.
실시예에서, 시정 액션이 하나 이상의 성능 기준을 만족시키지 않는 문제적 시스템 거동의 인스턴스 및/또는 시점에 도달되기 전에, 시정 액션의 적용의 유효성을 예측하는 것은, 시스템 관리자로 하여금, 시스템이 문제적 시스템 거동의 그 인스턴스 및/또는 그 시점에 도달하는 것을 방지하기 위해 (예컨대, 시스템으로부터의 통지에 응답하여) 추가 액션을 취하게 허용한다. 대안적으로 또는 추가적으로, 시정 액션을 적용하는 것이 하나 이상의 성능 기준을 만족시키지 않는 경우에도, 문제적 시스템 거동에 시정 액션을 계속 적용하는 것은 문제적 시스템 거동을 어느 정도까지 계속 완화시킬 수 있다.
실시예에서, 시스템은 문제적 시스템 거동에 대한 시정 액션(들)의 하나 이상의 적용에 기초하여 머신 학습 모델을 업데이트한다(동작(226)). 시스템은, 시스템 동작 동안 검출되는 문제적 시스템 거동들 및/또는 문제적 시스템 거동들에 적용되는 시정 액션들의 결과들에 기초하여, 지속적으로 머신 학습 모델을 업데이트하기 위해, 비지도 학습을 사용할 수 있다. 문제적 시스템 거동들에 대한 시정 액션들의 적용들과 연관된 속성들은 시스템의 시정 이력의 일부로서 저장될 수 있고, 시스템은 그 속성들을 사용하여 머신 학습 모델을 업데이트할 수 있다. 실시예에서, 지속적으로 머신 학습 모델을 업데이트하는 것은 문제적 시스템 거동들에 대한 시정 액션들의 적용의 유효성을 예측하는 시스템의 능력을 개선한다.
실시예에서, 시스템은 사용자 입력에 기초하여 자가-치유를 조정한다(동작(228)). 위에서 언급된 바와 같이, 사용자는 통지에서의 링크를 통해 도달되는 그래픽 사용자 인터페이스에서 입력을 공급할 수 있다. 사용자는 시스템 거동 정의, 시정 액션 정의, 시정 구성, 및/또는 시스템이 자가-치유를 위해 사용하는 임의의 다른 종류의 데이터, 또는 이들의 조합을 변경하기 위한 입력을 공급할 수 있다. 예컨대, 시스템은 시정 액션의 적용의 예측된 유효성이 하나 이상의 성능 기준을 만족시키지 않는다는 것을 사용자에게 통지할 수 있다. 통지에 응답하여, 사용자는 시스템에게 시정 액션을 적용하는 것을 자제할 것, 더 빈번하게 시정 액션을 적용할 것, 상이한 시정 액션(예컨대, 문제적 시스템 거동을 해소하기 위해 시스템에 의해 선택된 시정 액션과 상이한, 문제적 시스템 거동을 해소하기 위해 사용자에 의해 선택된 시정 액션)을 적용할 것, 하나 이상의 성능 기준을 조정할 것, 문제적 시스템 거동을 정의하는 임계치를 조정할 것, 및/또는 시스템의 자가-치유 거동에 대해 임의의 다른 종류의 변경을 행할 것, 또는 이들의 조합을 행할 것을 명령할 수 있다. 사용자-선택 시정 액션은 시스템에 대해 이미 정의된 시정 액션들의 세트로부터 선택될 수 있다. 대안적으로 또는 추가적으로, 사용자는, 문제적 시스템 거동이 재발하는 경우/재발할 때 시스템이 적용할, 시스템에 대해 이전에 정의되지 않은 새로운 시정 액션을 정의 및 선택할 수 있다. 다른 예로서, 시스템은 상이한 가중치들을 상이한 시정 액션들과 연관시킬 수 있고, 여기서, 가중치들은 시스템이 특정 상황에서 어떤 시정 액션을 적용할지 선택하는 데 도움을 준다. 사용자는 하나 이상의 특정 시정 액션에 대한 가중치(들)를 증가 또는 감소시키기 위해 사용자 입력을 공급할 수 있고, 그에 따라, 시스템은 문제적 시스템 거동이 재발하는 경우/재발할 때 조정된 가중치(들)를 사용한다. 대안적으로 또는 추가적으로, 사용자는 시정 액션의 문제적 이차 효과(예컨대, 시스템 구성요소 및/또는 다른 시스템의 구성요소의 성능 저하)를 시스템에게 통보하는 입력을 공급할 수 있고, 그에 따라, 시스템은 문제적 시스템 거동의 향후 인스턴스들에 대해 문제적 이차 효과를 고려한다. 대안적으로 또는 추가적으로, 사용자는 시스템 성능에 영향을 미쳤을 수 있는 (시스템-선택 시정 액션들과 대조적인) 사용자-개시 시정 액션들에 관한 정보를 저장할 수 있다. 예컨대, 사용자는, 네트워크 케이블을 교체하는 것, 프로세서를 업그레이드하는 것, 시스템을 상이한 지리적 위치로 이동시키는 것, 및/또는 문제적 시스템 거동을 증가 또는 완화시킬 수 있는 임의의 다른 종류의 사용자-개시 시정 액션, 또는 이들의 조합과 같은 시스템 유지보수에 대응하는 데이터를 입력할 수 있다. 대안적으로 또는 추가적으로, 사용자는 하나 이상의 문제적 시스템 거동이 해결된 것을 나타내는 입력을 공급할 수 있다. 해결은 시스템이 아직 검출하지 않았고/않았거나 검출하도록 구성되지 않은 종류일 수 있다. 대안적으로 또는 추가적으로, 사용자는 시스템에게 캐시, 이력, 및/또는 머신 학습 엔진과 연관된 다른 종류의 메모리를 클리어링할 것을 명령할 수 있다. 예컨대, 사용자는 시스템에게 머신 학습 엔진의 전체 메모리, 또는 특정 날짜 전의 머신 학습 엔진의 메모리를 클리어링할 것을 명령할 수 있다. 특정 날짜 전의 머신 학습 엔진의 메모리를 클리어링하는 것은, 오래된 이력 데이터를 제거함으로써, 예측들을 행하는 머신 학습 엔진의 능력을 개선할 수 있다. 일반적으로, 실시예에서, 시스템은 사용자에 의해 공급된 추가적인 정보에 기초하여 향후 예측들을 조정한다. 사용자 입력에 기초하여 자가-치유를 조정하는 것은, 시스템이 자가-치유를 위해 최선을 다할 수 있게 하면서, 여전히, 사용자들이 시스템의 동작을 제어하고, 문제적 시스템 거동들에 시스템이 어떻게 응답해야 하는지에 대한 인간 결정들을 행할 수 있게 할 수 있다.
4. 예시적인 예
상세한 예가 명확성의 목적으로 아래에서 설명된다. 아래에서 설명되는 구성요소들 및/또는 동작들은 특정 실시예들에 적용가능하지 않을 수 있는 하나의 특정 예로서 이해되어야 한다. 따라서, 아래에서 설명되는 구성요소들 및/또는 동작들은 청구항들 중 임의의 것의 범위를 제한하는 것으로 해석되지 않아야 한다.
도 3은 시간 경과에 따른 시스템 성능의 그래프(300)를 예시한다. 이 예에서, 시정 액션의 적용의 예측된 유효성이 시스템 성능(예컨대, 시간 단위당 이용가능한 프로세서 사이클들, 이용가능한 대역폭, 및/또는 임의의 다른 종류의 시스템 성능 메트릭, 또는 이들의 조합)을 참조하여 정의된다. 구체적으로, 시정 액션의 성공적인 적용에 대한 하나 이상의 성능 기준은 시스템 성능을 임계 레벨로 회복시키는 것에 대응한다. 그래프의 시작에서, 시스템 성능은 시간 경과에 따라 감소되고 있다. 시간(T1)에서, 시스템은 시정 액션을 적용하고, 그에 따라, 시스템 성능 개선이 개선된다. 시간(T1) 후에, 시스템 성능은 임계 레벨 위에 있지만 시스템 성능의 이전 높이에 도달하지는 않는다. 후속하여, 시스템 성능은 다시 감소되기 시작하고, 시간(T2)에서, 시스템은 다시 시정 액션을 적용한다. 시간(T3)에서, 시간들(T1 및 T2)에서의 시정 액션의 적용들의 결과들에 기초하여, 시스템은 시정 액션의 적용의 유효성이 시간(T5) 후에 하나 이상의 성능 기준(즉, 시스템 성능을 적어도 임계 레벨로 회복시키는 것)을 만족시키지 않을 것으로 예측한다. 예측에도 불구하고, 시간(T4)에서, 시스템은 다시 시정 액션을 적용한다. 시간(T4)에서 시정 액션을 적용하는 것은 추가적인 시간 기간 동안 시스템 성능이 임계 레벨 위에 머무를 수 있게 한다. 시간(T5)에서, 시스템 성능은 임계 레벨 아래로 떨어진다. 시간(T6)에서, 시스템은 다시 시정 액션을 적용하지만, 시간(T3)에서 예측된 바와 같이, 시정 액션은 하나 이상의 성능 기준을 만족시키지 않고, 즉, 시스템 성능을 적어도 임계 레벨로 회복시키는 것에 실패한다. 이 예에서, 시스템 성능이 시간(T5)에서 임계 레벨 아래로 떨어지는 것을 방지하거나, 또는 시간(T6)에서의 시정 액션의 적용이 하나 이상의 성능 기준을 만족시킬 수 있게 하기 위한 추가 액션이 취해지지 않았다. 그러나, 시간(T3)에서 생성되는 시스템 통지는, 관리자가 개입하고 일부 추가 액션을 취할 수 있게 하여(도 3에 도시되지 않음), 시스템 성능이 임계 레벨 위에서 유지되는 것, 및/또는 필요한 경우, 시정 액션들의 후속 적용들이 하나 이상의 성능 기준을 만족시키는 것을 보장할 수 있게 할 수 있다.
5. 다양한 사항; 확장들
실시예들은, 하드웨어 프로세서를 포함하고, 본원에서 설명되고/설명되거나 아래의 청구항들 중 임의의 것에 기재된 동작들 중 임의의 것을 수행하도록 구성된 하나 이상의 디바이스를 갖는 시스템에 관한 것이다.
실시예에서, 비-일시적 컴퓨터 판독가능 저장 매체는, 하나 이상의 하드웨어 프로세서에 의해 실행될 때, 본원에서 설명되고/설명되거나 아래의 청구항들 중 임의의 것에 기재된 동작들 중 임의의 것의 수행을 발생시키는 명령어들을 포함한다.
본원에서 설명되는 특징들 및 기능성들의 임의의 조합이 하나 이상의 실시예에 따라 사용될 수 있다. 전술된 명세서에서, 실시예들은 구현마다 변화될 수 있는 다수의 특정 세부사항들을 참조하여 설명되었다. 따라서, 본 명세서 및 도면들은 제한적 의미가 아니라 예시로 고려되어야 한다. 본 발명의 범위의 유일하고 배타적인 지표 및 출원인들에 의해 본 발명의 범위로 의도되는 것은, 임의의 후속 보정을 포함하여, 청구항들이 발행되는 특정 형태로 본 출원으로부터 발행되는 그러한 청구항들의 세트의 문자 상 및 동등한 범위이다.
6. 하드웨어 개요
일 실시예에 따르면, 본원에서 설명되는 기법들은 하나 이상의 특수 목적 컴퓨팅 디바이스(즉, 특정 기능성을 수행하도록 특별히 구성된 컴퓨팅 디바이스들)에 의해 구현된다. 특수 목적 컴퓨팅 디바이스들은 기법들을 수행하기 위해 하드 와이어링될 수 있거나, 또는 기법들을 수행하도록 영구적으로 프로그래밍된 디지털 전자 디바이스들, 이를테면, 하나 이상의 주문형 집적 회로(ASIC)들, 필드 프로그래머블 게이트 어레이(FPGA)들, 또는 네트워크 프로세싱 유닛(NPU)들을 포함할 수 있거나, 또는 펌웨어, 메모리, 다른 저장소, 또는 조합 내의 프로그램 명령어들에 따라 기법들을 수행하도록 프로그래밍된 하나 이상의 범용 하드웨어 프로세서를 포함할 수 있다. 이러한 특수 목적 컴퓨팅 디바이스들은 또한, 기법들을 달성하기 위해, 커스텀 하드 와이어드 로직, ASIC들, FPGA들, 또는 NPU들을 커스텀 프로그래밍과 조합할 수 있다. 특수 목적 컴퓨팅 디바이스들은 기법들을 구현하기 위한 하드 와이어드 및/또는 프로그램 로직을 포함하는 데스크톱 컴퓨터 시스템들, 휴대용 컴퓨터 시스템들, 핸드헬드(handheld) 디바이스들, 네트워킹 디바이스들, 또는 임의의 다른 디바이스일 수 있다.
예컨대, 도 4는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(400)을 예시하는 블록도이다. 컴퓨터 시스템(400)은 정보를 통신하기 위한 버스(402) 또는 다른 통신 메커니즘, 및 정보를 프로세싱하기 위해 버스(402)와 커플링된 하드웨어 프로세서(404)를 포함한다. 하드웨어 프로세서(404)는, 예컨대, 범용 마이크로프로세서일 수 있다.
컴퓨터 시스템(400)은 또한, 프로세서(404)에 의해 실행될 명령어들 및 정보를 저장하기 위해 버스(402)에 커플링된 메인 메모리(406), 이를테면, 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스를 포함한다. 메인 메모리(406)는 또한, 프로세서(404)에 의해 실행될 명령어들의 실행 동안 일시적 변수들 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다. 이러한 명령어들은, 프로세서(404)가 액세스가능한 비-일시적 저장 매체들에 저장될 때, 컴퓨터 시스템(400)을 명령어들에서 지정된 동작들을 수행하도록 커스터마이징된 특수 목적 머신으로 렌더링한다.
컴퓨터 시스템(400)은 프로세서(404)를 위한 정적 정보 및 명령어들을 저장하기 위해 버스(402)에 커플링된 판독 전용 메모리(ROM)(408) 또는 다른 정적 저장 디바이스를 더 포함한다. 자기 디스크 또는 광 디스크와 같은 저장 디바이스(410)가 정보 및 명령어들을 저장하기 위해 제공되고 버스(402)에 커플링된다.
컴퓨터 시스템(400)은 버스(402)를 통해 디스플레이(412), 이를테면, 액정 디스플레이(LCD), 플라즈마 디스플레이, 전자 잉크 디스플레이, 음극선관(CRT) 모니터, 또는 컴퓨터 사용자에게 정보를 디스플레이하기 위한 임의의 다른 종류의 디바이스에 커플링될 수 있다. 영숫자 및 다른 키들을 포함하는 입력 디바이스(414)가 정보 및 커맨드 선택들을 프로세서(404)로 통신하기 위해 버스(402)에 커플링될 수 있다. 대안적으로 또는 추가하여, 컴퓨터 시스템(400)은, 방향 정보 및 커맨드 선택들을 프로세서(404)로 통신하고 디스플레이(412) 상의 커서 움직임을 제어하기 위한 커서 제어부(416), 이를테면, 마우스, 트랙볼, 트랙패드, 터치스크린, 또는 커서 방향 키들을 통해 사용자 입력을 수신할 수 있다. 이러한 입력 디바이스는 전형적으로, 디바이스로 하여금 평면 내의 위치들을 지정할 수 있게 하는 2개의 축, 즉, 제1 축(예컨대, x) 및 제2 축(예컨대, y)의 2개의 자유도를 갖는다. 디스플레이(412)는 하나 이상의 감압형 센서, 멀티 터치 센서, 및/또는 제스처 센서를 통해 사용자 입력을 수신하도록 구성될 수 있다. 대안적으로 또는 추가하여, 컴퓨터 시스템(400)은 마이크로폰, 비디오 카메라, 및/또는 일부 다른 종류의 사용자 입력 디바이스(도시되지 않음)를 통해 사용자 입력을 수신할 수 있다.
컴퓨터 시스템(400)은, 컴퓨터 시스템과 조합하여 컴퓨터 시스템(400)이 특수 목적 머신이 되게 하거나 또는 컴퓨터 시스템(400)을 특수 목적 머신이 되게 프로그래밍하는, 커스터마이징된 하드 와이어드 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어, 및/또는 프로그램 로직을 사용하여, 본원에서 설명되는 기법들을 구현할 수 있다. 일 실시예에 따르면, 본원의 기법들은, 프로세서(404)가 메인 메모리(406)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 것에 대한 응답으로, 컴퓨터 시스템(400)에 의해 수행된다. 이러한 명령어들은 저장 디바이스(410)와 같은 다른 저장 매체로부터 메인 메모리(406)로 판독될 수 있다. 메인 메모리(406)에 포함된 명령어들의 시퀀스들의 실행은 프로세서(404)로 하여금 본원에서 설명되는 프로세스 단계들을 수행하게 한다. 대안적인 실시예들에서, 소프트웨어 명령어들 대신에 또는 이들과 조합하여 하드 와이어드 회로부가 사용될 수 있다.
본원에서 사용되는 바와 같은 "저장 매체들"이라는 용어는 머신으로 하여금 특정 방식으로 동작하게 하는 명령어들 및/또는 데이터를 저장하는 임의의 비-일시적 매체들을 지칭한다. 이러한 저장 매체들은 비-휘발성 매체들 및/또는 휘발성 매체들을 포함할 수 있다. 비-휘발성 매체들은, 예컨대, 저장 디바이스(410)와 같은 광 또는 자기 디스크들을 포함한다. 휘발성 매체들은 메인 메모리(406)와 같은 동적 메모리를 포함한다. 저장 매체들의 일반적인 형태들은, 예컨대, 플로피 디스크, 플렉서블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광 데이터 저장 매체, 홀들의 패턴들을 갖는 임의의 물리적 매체, RAM, 프로그래머블 판독 전용 메모리(PROM), 및 소거가능 PROM(EPROM), FLASH-EPROM, 비-휘발성 랜덤 액세스 메모리(NVRAM), 임의의 다른 메모리 칩 또는 카트리지, CAM(content-addressable memory), 및 TCAM(ternary content-addressable memory)을 포함한다.
저장 매체들은 전송 매체들과 구별되지만 전송 매체들과 함께 사용될 수 있다. 전송 매체들은 저장 매체들 사이에서 정보를 전송하는 데 참여한다. 예컨대, 전송 매체들은 버스(402)를 포함하는 와이어들을 포함하는 동축 케이블들, 구리 와이어, 및 광섬유들을 포함한다. 전송 매체들은 또한, 전파 및 적외선 데이터 통신들 동안 생성되는 것들과 같은 음파 또는 광파의 형태를 취할 수 있다.
다양한 형태들의 매체들이 실행을 위해 프로세서(404)로 하나 이상의 명령어의 하나 이상의 시퀀스를 운반하는 데 관여될 수 있다. 예컨대, 명령어들은 초기에, 원격 컴퓨터의 자기 디스크 또는 솔리드 스테이트 드라이브 상에서 운반될 수 있다. 원격 컴퓨터는 그의 동적 메모리 내에 명령어들을 로딩하고, 이더넷 제어기 또는 Wi-Fi 제어기와 같은 네트워크 인터페이스 제어기(NIC)를 거쳐 네트워크를 통해 명령어들을 전송할 수 있다. 컴퓨터 시스템(400)에 대해 로컬인 NIC는 네트워크로부터 데이터를 수신하고, 버스(402) 상에 데이터를 배치할 수 있다. 버스(402)는 데이터를 메인 메모리(406)로 운반하고, 그로부터 프로세서(404)는 명령어들을 검색 및 실행한다. 메인 메모리(406)에 의해 수신된 명령어들은 임의로, 프로세서(404)에 의한 실행 전 또는 후에 저장 디바이스(410) 상에 저장될 수 있다.
컴퓨터 시스템(400)은 또한, 버스(402)에 커플링된 통신 인터페이스(418)를 포함한다. 통신 인터페이스(418)는 로컬 네트워크(422)에 연결된 네트워크 링크(420)에 대한 양방향 데이터 통신 커플링을 제공한다. 예컨대, 통신 인터페이스(418)는 ISDN(integrated services digital network) 카드, 케이블 모뎀, 위성 모뎀, 또는 대응하는 타입의 전화선에 대한 데이터 통신 연결을 제공하기 위한 모뎀일 수 있다. 다른 예로서, 통신 인터페이스(418)는 호환가능 LAN(local area network)에 대한 데이터 통신 연결을 제공하기 위한 LAN 카드일 수 있다. 무선 링크들이 또한 구현될 수 있다. 임의의 이러한 구현에서, 통신 인터페이스(418)는 다양한 타입의 정보를 표현하는 디지털 데이터 스트림들을 운반하는 전기, 전자기, 또는 광 신호들을 전송 및 수신한다.
네트워크 링크(420)는 전형적으로, 하나 이상의 네트워크를 통한 다른 데이터 디바이스에 대한 데이터 통신을 제공한다. 예컨대, 네트워크 링크(420)는 로컬 네트워크(422)를 통한 인터넷 서비스 제공자(ISP)(426)에 의해 동작되는 데이터 장비 또는 호스트 컴퓨터(424)에 대한 연결을 제공할 수 있다. ISP(426)는 차례로, 현재 일반적으로 "인터넷"(428)으로 지칭되는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스들을 제공한다. 로컬 네트워크(422)와 인터넷(428) 둘 모두는 디지털 데이터 스트림들을 운반하는 전기, 전자기, 또는 광 신호들을 사용한다. 컴퓨터 시스템(400)으로 그리고 컴퓨터 시스템(400)으로부터 디지털 데이터를 운반하는, 다양한 네트워크들을 통한 신호들 및 네트워크 링크 (420) 상의 그리고 통신 인터페이스(418)를 통한 신호들은 전송 매체들의 예시적인 형태들이다.
컴퓨터 시스템(400)은, 네트워크(들), 네트워크 링크(420), 및 통신 인터페이스(418)를 통해, 메시지들을 전송할 수 있고, 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버(430)는, 인터넷(428), ISP(426), 로컬 네트워크(422), 및 통신 인터페이스(418)를 통해, 애플리케이션 프로그램에 대한 요청된 코드를 송신할 수 있다.
수신된 코드는 수신될 때 프로세서(404)에 의해 실행될 수 있고/있거나 추후의 실행을 위해 저장 디바이스(410) 또는 다른 비-휘발성 저장소에 저장될 수 있다.
7. 컴퓨터 네트워크들 및 클라우드 네트워크들
하나 이상의 실시예에서, 컴퓨터 네트워크는 본원에서 설명되는 바와 같은 기법들을 활용하는 소프트웨어를 실행하는 노드들의 세트 사이의 연결성을 제공한다. 노드들은 서로 로컬 및/또는 원격으로 있을 수 있다. 노드들은 링크들의 세트에 의해 연결된다. 링크들의 예들은 동축 케이블, 비차폐 연선 케이블, 구리 케이블, 광섬유, 및 가상 링크를 포함한다.
노드들의 서브세트는 컴퓨터 네트워크를 구현한다. 이러한 노드들의 예들은 스위치, 라우터, 방화벽, 및 네트워크 어드레스 변환기(NAT)를 포함한다. 노드들의 다른 서브세트는 컴퓨터 네트워크를 사용한다. 이러한 노드들("호스트들"로 또한 지칭됨)은 클라이언트 프로세스 및/또는 서버 프로세스를 실행할 수 있다. 클라이언트 프로세스는 (특정 애플리케이션의 실행 및/또는 특정 양의 데이터의 저장과 같은) 컴퓨팅 서비스에 대한 요청을 행한다. 서버 프로세스는 요청된 서비스를 실행하고/실행하거나 대응하는 데이터를 리턴함으로써 응답한다.
컴퓨터 네트워크는 물리적 링크들에 의해 연결된 물리적 노드들을 포함하는 물리적 네트워크일 수 있다. 물리적 노드는 임의의 디지털 디바이스이다. 물리적 노드는 기능 특정 하드웨어 디바이스, 이를테면, 하드웨어 스위치, 하드웨어 라우터, 하드웨어 방화벽, 및 하드웨어 NAT일 수 있다. 추가적으로 또는 대안적으로, 물리적 노드는, 각각의 기능들을 수행하는 다양한 가상 머신들 및/또는 애플리케이션들을 실행하도록 구성되는 것과 같은, 태스크를 수행하기 위한 컴퓨팅 파워를 제공하는 임의의 물리적 자원일 수 있다. 물리적 링크는 2개 이상의 물리적 노드를 연결하는 물리적 매체이다. 링크들의 예들은 동축 케이블, 비차폐 연선 케이블, 구리 케이블, 및 광섬유를 포함한다.
컴퓨터 네트워크는 오버레이 네트워크일 수 있다. 오버레이 네트워크는 (물리적 네트워크와 같은) 다른 네트워크 위에 구현된 논리적 네트워크이다. 오버레이 네트워크 내의 각각의 노드는 기저 네트워크 내의 각각의 노드에 대응한다. 따라서, 오버레이 네트워크 내의 각각의 노드는 (오버레이 노드에 대해 어드레싱하기 위한) 오버레이 어드레스와 (오버레이 노드를 구현하는 언더레이 노드를 어드레싱하기 위한) 언더레이 어드레스 둘 모두와 연관된다. 오버레이 노드는 디지털 디바이스 및/또는 소프트웨어 프로세스(이를테면, 가상 머신, 애플리케이션 인스턴스, 또는 스레드)일 수 있다. 오버레이 노드들을 연결하는 링크는 기저 네트워크를 통해 터널로서 구현된다. 터널의 양 단부에 있는 오버레이 노드들은 이들 사이의 기저 멀티-홉 경로를 단일 논리적 링크로서 취급한다. 터널링은 캡슐화 및 역캡슐화를 통해 수행된다.
실시예에서, 클라이언트는 컴퓨터 네트워크에 대해 로컬 및/또는 원격으로 있을 수 있다. 클라이언트는 사설 네트워크 또는 인터넷과 같은 다른 컴퓨터 네트워크들을 통해 컴퓨터 네트워크에 액세스할 수 있다. 클라이언트는 HTTP(Hypertext Transfer Protocol)와 같은 통신 프로토콜을 사용하여 컴퓨터 네트워크에 요청들을 통신할 수 있다. 요청들은 인터페이스, 이를테면, 클라이언트 인터페이스(이를테면, 웹 브라우저), 프로그램 인터페이스, 또는 애플리케이션 프로그래밍 인터페이스(API)를 통해 통신된다.
실시예에서, 컴퓨터 네트워크는 클라이언트들과 네트워크 자원들 사이의 연결성을 제공한다. 네트워크 자원들은 서버 프로세스들을 실행하도록 구성된 하드웨어 및/또는 소프트웨어를 포함한다. 네트워크 자원들의 예들은 프로세서, 데이터 저장소, 가상 머신, 컨테이너, 및/또는 소프트웨어 애플리케이션을 포함한다. 네트워크 자원들은 다수의 클라이언트들 사이에서 공유된다. 클라이언트들은 서로 독립적으로 컴퓨터 네트워크로부터 컴퓨팅 서비스들을 요청한다. 네트워크 자원들은 온-디맨드 방식으로 요청들 및/또는 클라이언트들에 동적으로 배정된다. 각각의 요청 및/또는 클라이언트에 배정된 네트워크 자원들은, 예컨대, (a) 특정 클라이언트에 의해 요청된 컴퓨팅 서비스들, (b) 특정 테넌트(tenant)에 의해 요청된 집성된 컴퓨팅 서비스들, 및/또는 (c) 컴퓨터 네트워크에 요청된 집성된 컴퓨팅 서비스들에 기초하여, 스케일 업 또는 다운될 수 있다. 이러한 컴퓨터 네트워크는 "클라우드 네트워크"로 지칭될 수 있다.
실시예에서, 서비스 제공자는 하나 이상의 최종 사용자에게 클라우드 네트워크를 제공한다. SaaS(Software-as-a-Service), PaaS(Platform-as-a-Service), 및 IaaS(Infrastructure-as-a-Service)를 포함하지만 이에 제한되지는 않는 다양한 서비스 모델들이 클라우드 네트워크에 의해 구현될 수 있다. SaaS에서, 서비스 제공자는 네트워크 자원들 상에서 실행되고 있는 서비스 제공자의 애플리케이션들을 사용하는 능력을 최종 사용자들에게 제공한다. PaaS에서, 서비스 제공자는 커스텀 애플리케이션들을 네트워크 자원들 상에 배치하는 능력을 최종 사용자들에게 제공한다. 커스텀 애플리케이션들은 서비스 제공자에 의해 지원되는 프로그래밍 언어들, 라이브러리들, 서비스들, 및 툴들을 사용하여 생성될 수 있다. IaaS에서, 서비스 제공자는 네트워크 자원들에 의해 제공되는 프로세싱, 저장소, 네트워크들, 및 다른 기본 컴퓨팅 자원들을 프로비저닝하는 능력을 최종 사용자들에게 제공한다. 운영 시스템을 포함하는 임의의 애플리케이션들이 네트워크 자원들 상에 배치될 수 있다.
실시예에서, 사설 클라우드, 공용 클라우드, 및 하이브리드 클라우드를 포함하지만 이에 제한되지는 않는 다양한 배치 모델들이 컴퓨터 네트워크에 의해 구현될 수 있다. 사설 클라우드에서, 네트워크 자원들은 하나 이상의 엔티티의 특정 그룹에 의한 독점적 사용을 위해 프로비저닝된다(본원에서 사용되는 바와 같은 "엔티티"라는 용어는 기업, 조직, 사람, 또는 다른 엔티티를 지칭함). 네트워크 자원들은 엔티티들의 특정 그룹의 구내들에 대해 로컬 및/또는 원격으로 있을 수 있다. 공용 클라우드에서, 클라우드 자원들은 서로 독립적인 다수의 엔티티("테넌트들" 또는 "고객들"로 또한 지칭됨)에 대해 프로비저닝된다. 컴퓨터 네트워크 및 그의 네트워크 자원들은 상이한 테넌트들에 대응하는 클라이언트들에 의해 액세스된다. 이러한 컴퓨터 네트워크는 "멀티-테넌트 컴퓨터 네트워크"로 지칭될 수 있다. 여러 테넌트들이 상이한 시간들에 및/또는 동시에 동일한 특정 네트워크 자원을 사용할 수 있다. 네트워크 자원들은 테넌트들의 구내들에 대해 로컬 및/또는 원격으로 있을 수 있다. 하이브리드 클라우드에서, 컴퓨터 네트워크는 사설 클라우드 및 공용 클라우드를 포함한다. 사설 클라우드와 공용 클라우드 사이의 인터페이스는 데이터 및 애플리케이션 이동성(portability)을 허용한다. 사설 클라우드에 저장된 데이터와 공용 클라우드에 저장된 데이터는 인터페이스를 통해 교환될 수 있다. 사설 클라우드에서 구현되는 애플리케이션들과 공용 클라우드에서 구현되는 애플리케이션들은 서로 종속성들을 가질 수 있다. 사설 클라우드에서의 애플리케이션으로부터 공용 클라우드에서의 애플리케이션으로의(또는 그 반대의) 호출은 인터페이스를 통해 실행될 수 있다.
실시예에서, 멀티-테넌트 컴퓨터 네트워크의 테넌트들은 서로 독립적이다. 예컨대, (운영, 테넌트 특정 관행들, 직원들, 및/또는 외부 세계에 대한 식별을 통한) 하나의 테넌트는 다른 테넌트와 별개일 수 있다. 상이한 테넌트들은 컴퓨터 네트워크에 대해 상이한 네트워크 요건들을 요구할 수 있다. 네트워크 요건들의 예들은 프로세싱 속도, 데이터 저장량, 보안 요건들, 성능 요건들, 처리량 요건들, 레이턴시 요건들, 복원성 요건들, 서비스 품질(QoS) 요건들, 테넌트 격리, 및/또는 일관성을 포함한다. 동일한 컴퓨터 네트워크는 상이한 테넌트들에 의해 요구되는 상이한 네트워크 요건들을 구현할 필요가 있을 수 있다.
하나 이상의 실시예에서, 멀티-테넌트 컴퓨터 네트워크에서, 테넌트 격리는 상이한 테넌트들의 애플리케이션들 및/또는 데이터가 서로 공유되지 않는 것을 보장하도록 구현된다. 다양한 테넌트 격리 접근법들이 사용될 수 있다.
실시예에서, 각각의 테넌트는 테넌트 ID와 연관된다. 멀티-테넌트 컴퓨터 네트워크의 각각의 네트워크 자원은 테넌트 ID로 태깅된다(tagged). 테넌트는, 테넌트와 특정 네트워크 자원들이 동일한 테넌트 ID와 연관되는 경우에만, 특정 네트워크 자원에 액세스하게 허가된다.
실시예에서, 각각의 테넌트는 테넌트 ID와 연관된다. 컴퓨터 네트워크에 의해 구현되는 각각의 애플리케이션은 테넌트 ID로 태깅된다. 추가적으로 또는 대안적으로, 컴퓨터 네트워크에 의해 저장된 각각의 데이터 구조 및/또는 데이터세트는 테넌트 ID로 태깅된다. 테넌트는, 테넌트와 특정 애플리케이션, 데이터 구조, 및/또는 데이터세트가 동일한 테넌트 ID와 연관되는 경우에만, 특정 애플리케이션, 데이터 구조, 및/또는 데이터세트에 액세스하게 허가된다.
예로서, 멀티-테넌트 컴퓨터 네트워크에 의해 구현된 각각의 데이터베이스는 테넌트 ID로 태깅될 수 있다. 대응하는 테넌트 ID와 연관된 테넌트만이 특정 데이터베이스의 데이터에 액세스할 수 있다. 다른 예로서, 멀티-테넌트 컴퓨터 네트워크에 의해 구현된 데이터베이스 내의 각각의 엔트리는 테넌트 ID로 태깅될 수 있다. 대응하는 테넌트 ID와 연관된 테넌트만이 특정 엔트리의 데이터에 액세스할 수 있다. 그러나, 데이터베이스는 다수의 테넌트에 의해 공유될 수 있다.
실시예에서, 가입 리스트는 어떤 테넌트들이 어떤 애플리케이션들에 액세스할 권한을 갖는지를 나타낸다. 각각의 애플리케이션에 대해, 애플리케이션에 액세스하도록 권한부여된 테넌트들의 테넌트 ID들의 리스트가 저장된다. 테넌트는, 테넌트의 테넌트 ID가 특정 애플리케이션에 대응하는 가입 리스트에 포함되는 경우에만, 특정 애플리케이션에 액세스하게 허가된다.
실시예에서, 상이한 테넌트들에 대응하는 네트워크 자원들(이를테면, 디지털 디바이스들, 가상 머신들, 애플리케이션 인스턴스들, 및 스레드들)은 멀티-테넌트 컴퓨터 네트워크에 의해 유지되는 테넌트 특정 오버레이 네트워크들로 격리된다. 예로서, 테넌트 오버레이 네트워크 내의 임의의 소스 디바이스로부터의 패킷들은 동일한 테넌트 오버레이 네트워크 내의 다른 디바이스들로만 송신될 수 있다. 테넌트 오버레이 네트워크 상의 소스 디바이스로부터 다른 테넌트 오버레이 네트워크들 내의 디바이스들로의 임의의 송신들을 금지하기 위해, 캡슐화 터널들이 사용된다. 구체적으로, 소스 디바이스로부터 수신된 패킷들은 외부 패킷 내에 캡슐화된다. 외부 패킷은 (테넌트 오버레이 네트워크 내의 소스 디바이스와 통신하는) 제1 캡슐화 터널 엔드포인트로부터 (테넌트 오버레이 네트워크 내의 목적지 디바이스와 통신하는) 제2 캡슐화 터널 엔드포인트로 송신된다. 제2 캡슐화 터널 엔드포인트는 소스 디바이스에 의해 송신된 원래의 패킷을 획득하기 위해 외부 패킷을 역캡슐화한다. 원래의 패킷은 제2 캡슐화 터널 엔드포인트로부터 동일한 특정 오버레이 네트워크 내의 목적지 디바이스로 송신된다.
8. 마이크로서비스 애플리케이션들
하나 이상의 실시예에 따르면, 본원에서 설명되는 기법들은 마이크로서비스 아키텍처에서 구현된다. 이러한 맥락에서 마이크로서비스는 다양한 애플리케이션들을 구축하기 위해 다른 마이크로서비스들에 논리적으로 커플링될 수 있는 엔드포인트들을 갖는 독립적으로 배치가능하도록 설계된 소프트웨어 로직을 지칭한다. 마이크로서비스들을 사용하여 구축된 애플리케이션들은 모놀리식(monolithic) 애플리케이션들과 구별되고, 모놀리식 애플리케이션들은 단일 고정 유닛으로서 설계되고, 일반적으로는 단일 논리적 실행 파일(executable)을 포함한다. 마이크로서비스 애플리케이션들에 의해, 상이한 마이크로서비스들은 별개의 실행 파일들로서 독립적으로 배치가능하다. 마이크로서비스들은 HTTP(HyperText Transfer Protocol) 메시지들을 사용하여 그리고/또는 API 엔드포인트들을 통해 다른 통신 프로토콜들에 따라 통신할 수 있다. 마이크로서비스들은 개별적으로 관리 및 업데이트되고, 상이한 언어들로 기입되고, 다른 마이크로서비스들과 독립적으로 실행될 수 있다.
마이크로서비스들은 애플리케이션들을 관리 및 구축하는 데 있어서 유연성을 제공한다. 상이한 애플리케이션들은, 마이크로서비스들의 소스 코드를 변경하지 않으면서, 마이크로서비스들의 상이한 세트들을 연결함으로써, 구축될 수 있다. 따라서, 마이크로서비스들은 상이한 애플리케이션들을 구축하기 위해 다양한 방식들로 배열될 수 있는 논리적 구축 블록들로서 작용한다. 마이크로서비스들은, 마이크로서비스 관리자에 노출된 트리거 이벤트들의 세트로부터의 트리거 이벤트들이 발생할 때, 마이크로서비스 관리자(이를테면, IFTTT(If-This-Then-That), 자피어(Zapier), 또는 OSSA(Oracle Self-Service Automation))와 같은 것)에게 통지하는 모니터링 서비스들을 제공할 수 있다. 애플리케이션에 대해 노출되는 마이크로서비스들은 대안적으로 또는 추가적으로, 마이크로서비스 관리자로부터 수신되는 데이터에 기초하여, (값들을 전달하는 것, 액션들을 다른 트리거들에 연결하는 것, 및/또는 마이크로서비스 관리자에서 다른 액션들로부터 전달되는 데이터에 의해 마이크로서비스 관리자를 통해 제어가능 및 구성가능한) 애플리케이션에서 액션을 수행하는 액션 서비스들을 제공할 수 있다. 마이크로서비스 트리거들 및/또는 액션들은 임의로 상이한 애플리케이션들에서 발생하는 액션들의 레시피들을 형성하도록 함께 연쇄될 수 있고, 그렇지 않은 경우, 그 임의로 상이한 애플리케이션들은 서로를 인식하지 못하거나 또는 서로에 대한 제어 또는 종속성을 갖지 않는다. 이러한 관리되는 애플리케이션들은, 관리되는 애플리케이션이 단독으로 또는 다른 애플리케이션들과 조합하여 사용될 때마다 재인증을 요구함 없이, 예컨대, 관리자에 대한 사용자-공급 애플리케이션 크리덴셜들로 인증되거나 또는 마이크로서비스 관리자에 플러그 인될 수 있다.
하나 이상의 실시예에서, 마이크로서비스들은 GUI를 통해 연결될 수 있다. 예컨대, 마이크로서비스들은 GUI의 윈도우, 프레임, 다른 요소 내에 논리적 블록들로서 디스플레이될 수 있다. 사용자는 애플리케이션을 구축하기 위해 사용되는 GUI의 영역 내로 마이크로서비스들을 드래그 및 드롭할 수 있다. 사용자는 유향 화살표들 또는 임의의 다른 GUI 요소를 사용하여 하나의 마이크로서비스의 출력을 다른 마이크로서비스의 입력에 연결할 수 있다. 애플리케이션 빌더는 (예컨대, 데이터타입들, 크기 제한들 등을 체크함으로써) 출력 및 입력들이 호환가능한 것을 확인하기 위해 검증 테스트들을 실행할 수 있다.
트리거들
하나 이상의 실시예에 따르면, 위에서 설명된 기법들은 마이크로서비스 내에 캡슐화될 수 있다. 다시 말하면, 마이크로서비스는 위의 기법들에 기초하여 (본원에서 "타겟" 마이크로서비스로 지칭되는 다른 플러그 인된 애플리케이션들에 의한 임의적 사용을 위해 마이크로서비스 관리자로) 통지를 트리거링할 수 있고/있거나 GUI 블록으로서 표현되고 하나 이상의 다른 마이크로서비스에 연결될 수 있다. 트리거 조건은 값들에 대한 절대적 또는 상대적 임계치들, 및/또는 분석할 데이터의 양 또는 지속기간에 대한 절대적 또는 상대적 임계치들을 포함할 수 있고, 그에 따라, 마이크로서비스 관리자에 대한 트리거는 임계치를 넘은 것을 플러그 인된 마이크로서비스 애플리케이션이 검출할 때마다 발생한다. 예컨대, 사용자는, 값이 트리거링 임계치를 넘은 것을 마이크로서비스 애플리케이션이 검출할 때, 마이크로서비스 관리자로 트리거를 요청할 수 있다.
일 실시예에서, 트리거는, 만족될 때, 타겟 마이크로서비스에 의한 소비를 위한 데이터를 출력할 수 있다. 다른 실시예에서, 트리거는, 만족될 때, 트리거가 만족된 것을 나타내는 이진 값을 출력하거나, 또는 트리거 조건이 만족된 필드 이름 또는 다른 컨텍스트 정보를 출력한다. 추가적으로 또는 대안적으로, 타겟 마이크로서비스는, 경보가 다른 마이크로서비스들에 입력되도록, 하나 이상의 다른 마이크로서비스에 연결될 수 있다. 다른 마이크로서비스들은, 추가적인 자원들을 배치하는 것, 시스템 구성들을 조정하는 것, 및/또는 GUI들을 생성하는 것을 포함하지만 이에 제한되지는 않는 위의 기법들에 기초하여, 응답 액션들을 수행할 수 있다.
액션들
하나 이상의 실시예에서, 플러그 인된 마이크로서비스 애플리케이션은 마이크로서비스 관리자에 액션들을 노출시킬 수 있다. 노출된 액션들은 입력으로서 데이터 또는 데이터 객체의 식별 또는 데이터의 위치를 수신할 수 있고, 이는 데이터가 데이터 클라우드 내로 이동되게 한다.
하나 이상의 실시예에서, 노출된 액션들은 입력으로서 기존의 경보 임계치들을 증가 또는 감소시키라는 요청을 수신할 수 있다. 입력은 기존의 애플리케이션-내 경보 임계치들, 및 임계치를 증가시킬지 또는 감소시킬지 또는 삭제할지를 식별할 수 있다. 추가적으로 또는 대안적으로, 입력은 마이크로서비스 애플리케이션에게 새로운 애플리케이션-내 경보 임계치들을 생성할 것을 요청할 수 있다. 애플리케이션-내 경보들은 애플리케이션에 로그 인되는 동안 사용자에게 경보들을 트리거링할 수 있거나, 또는 마이크로서비스 관리자에 플러그 인된 다른 애플리케이션들을 통하는 것이 아니라, 마이크로서비스 애플리케이션 자체 내에서 이용가능한 디폴트 또는 사용자-선택 경보 메커니즘들을 사용하여, 사용자에게 경보들을 트리거링할 수 있다.
하나 이상의 실시예에서, 마이크로서비스 애플리케이션은, 이력 데이터를 식별하거나, 그 위치를 나타내거나, 또는 이력 데이터를 제공하고 요청되는 출력의 한도 또는 범위를 정의하는 입력에 기초하여, 출력을 생성 및 제공할 수 있다. 액션은, 트리거링될 때, 마이크로서비스 애플리케이션으로 하여금, 예컨대, 데이터 모델로서 또는 데이터 모델을 설명하는 집합체 데이터로서 출력을 제공, 저장, 또는 디스플레이하게 한다.
전술된 명세서에서, 본 발명의 실시예들은 구현마다 변화될 수 있는 다수의 특정 세부사항들을 참조하여 설명되었다. 따라서, 본 명세서 및 도면들은 제한적 의미가 아니라 예시로 고려되어야 한다. 본 발명의 범위의 유일하고 배타적인 지표 및 출원인들에 의해 본 발명의 범위로 의도되는 것은, 임의의 후속 보정을 포함하여, 청구항들이 발행되는 특정 형태로 본 출원으로부터 발행되는 그러한 청구항들의 세트의 문자 상 및 동등한 범위이다.

Claims (10)

  1. 명령어들을 저장한 하나 이상의 비-일시적 머신 판독가능 저장 매체로서,
    상기 명령어들은, 하나 이상의 프로세서에 의해 실행될 때 동작들의 수행을 야기하게 하고, 상기 동작들은:
    시스템 거동들을 식별하기 위해 데이터를 모니터링하는 동작;
    제1 시간 기간 동안, 상기 모니터링된 데이터에 기초하여 특정 시스템 거동의 제1 발생을 식별하는 동작;
    상기 특정 시스템 거동의 제1 발생이 자가-수정될 것이라고 예측하는 동작;
    상기 특정 시스템 거동의 제1 발생이 자가-수정될 것이라는 예측에 적어도 응답하여: 상기 특정 시스템 거동의 제1 발생을 비-문제적인 것으로서 분류하는 동작;
    제2 시간 기간 동안, 상기 모니터링된 데이터에 기초하여 상기 특정 시스템 거동의 제2 발생을 식별하는 동작;
    상기 특정 시스템 거동의 제2 발생이 자가-수정되지 않을 것이라고 예측하는 동작; 및
    상기 특정 시스템 거동의 상기 제2 발생이 자가-수정되지 않을 것이라는 예측에 적어도 응답하여: 상기 특정 시스템 거동의 상기 제2 발생을 문제적인 것으로서 분류하는 동작
    을 포함하는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  2. 제1항에 있어서, 상기 특정 시스템 거동의 제1 발생이 자가-수정될 것이라고 예측하는 동작은, 상기 특정 시스템 거동의 제1 발생이 상기 제1 시간 기간에 대응하는 시즌(season)의 끝에서 자가-수정될 것이라고 예측하는 동작을 포함하는, 하나 이상의 비-일시적 머신-판독가능 저장 매체.
  3. 제1항에 있어서, 상기 특정 시스템 거동의 상기 제1 발생은 상기 특정 시스템 거동이 예상된 시스템 거동으로부터 벗어나는 것으로 결정하는 것에 응답하여 식별되는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  4. 제1항에 있어서, 상기 동작들은,
    상기 특정 시스템 거동과 연관된 시정 액션을 식별하는 동작;
    상기 특정 시스템 거동의 상기 제1 발생에 상기 시정 액션을 적용하는 것이 제1 예측된 유효성과 연관된다고 결정하는 동작; 및
    상기 특정 시스템 거동의 상기 제2 발생에 상기 시정 액션을 적용하는 것이 상기 제1 예측된 유효성보다 더 큰 제2 예측된 유효성과 연관된다고 결정하는 동작을 더 포함하는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  5. 제4항에 있어서, 상기 동작들은,
    상기 특정 시스템 거동의 상기 제1 발생에 상기 시정 액션을 적용하는 상기 제1 예측된 유효성에 기초하여, 상기 특정 시스템 거동의 상기 제1 발생에 상기 시정 액션을 적용하는 것을 자제하는 동작; 및
    상기 특정 시스템 거동의 상기 제2 발생에 상기 시정 액션을 적용하는 상기 제2 예측된 유효성에 기초하여, 상기 특정 시스템 거동의 상기 제2 발생에 상기 시정 액션을 적용하는 동작을 더 포함하는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  6. 제4항에 있어서, 상기 동작들은,
    시정 액션들의 향후 유효성을 예측하도록 구성된 머신 학습 모델에 현재 시스템 상태 데이터를 적용함으로써 상기 제1 예측된 유효성을 결정하는 동작을 더 포함하는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  7. 제6항에 있어서, 상기 동작들은,
    데이터베이스 시스템에서 하나 이상의 문제적 시스템 거동들에 대한 시스템-선택된 시정 액션들의 복수의 적용들과 연관된 복수의 속성들을 이용하여 상기 시정 액션들의 향후 유효성을 예측하도록 상기 머신 학습 모델을 트레이닝시키는 동작을 더 포함하는, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  8. 제1항에 있어서, 상기 제1 시간 기간은 제1 시즌에 대응하고, 상기 제1 시즌은 제2 시즌에 비해 비교적 높은 시스템 자원 이용 시스템 거동 패턴과 연관된 피크 시즌이고,
    상기 제2 시간 기간은 상기 제2 시즌에 대응하고, 상기 제2 시즌은, 상기 제1 시즌에 비해, 비교적 낮은 시스템 자원 이용 시스템 거동 패턴과 연관된 비-피크 시즌인, 하나 이상의 비-일시적 머신 판독가능 저장 매체.
  9. 시스템으로서,
    하드웨어 프로세서를 포함하는 적어도 하나의 디바이스를 포함하고,
    상기 시스템은 제1항 내지 제8항 중 어느 한 항에 기재된 동작들을 수행하도록 구성되는, 시스템.
  10. 방법으로서,
    제1항 내지 제8항 중 어느 한 항에 기재된 동작들을 수행하기 위한, 방법.
KR1020247008649A 2019-08-06 2020-07-14 예측적 시스템 시정 KR20240042122A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/532,548 US11288117B2 (en) 2019-08-06 2019-08-06 Predictive system remediation
US16/532,548 2019-08-06
PCT/US2020/041912 WO2021025828A1 (en) 2018-10-22 2020-07-14 Predictive system remediation
KR1020217034967A KR102649215B1 (ko) 2019-08-06 2020-07-14 예측적 시스템 시정

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217034967A Division KR102649215B1 (ko) 2019-08-06 2020-07-14 예측적 시스템 시정

Publications (1)

Publication Number Publication Date
KR20240042122A true KR20240042122A (ko) 2024-04-01

Family

ID=74498483

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217034967A KR102649215B1 (ko) 2019-08-06 2020-07-14 예측적 시스템 시정
KR1020247008649A KR20240042122A (ko) 2019-08-06 2020-07-14 예측적 시스템 시정

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217034967A KR102649215B1 (ko) 2019-08-06 2020-07-14 예측적 시스템 시정

Country Status (4)

Country Link
US (2) US11288117B2 (ko)
EP (1) EP3887958B1 (ko)
KR (2) KR102649215B1 (ko)
CN (1) CN113454604A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11227209B2 (en) * 2019-07-31 2022-01-18 Dell Products L.P. Systems and methods for predicting information handling resource failures using deep recurrent neural network with a modified gated recurrent unit having missing data imputation
US11632310B2 (en) * 2020-02-13 2023-04-18 Acronis International Gmbh Systems and methods for pattern-based quality of service (QoS) violation prediction
US11099928B1 (en) * 2020-02-26 2021-08-24 EMC IP Holding Company LLC Utilizing machine learning to predict success of troubleshooting actions for repairing assets
US20210326436A1 (en) * 2020-04-21 2021-10-21 Docusign, Inc. Malicious behavior detection and mitigation in a document execution environment
US11461162B2 (en) * 2020-07-06 2022-10-04 Ringcentral, Inc. Maze-driven self-diagnostics using reinforcement learning
US20220027257A1 (en) * 2020-07-23 2022-01-27 Vmware, Inc. Automated Methods and Systems for Managing Problem Instances of Applications in a Distributed Computing Facility
US11675687B2 (en) * 2020-09-01 2023-06-13 Bmc Software, Inc. Application state prediction using component state
US11893644B2 (en) 2020-10-15 2024-02-06 State Farm Mutual Automobile Insurance Company Intelligent user interface monitoring and alert
US11836032B2 (en) * 2020-10-15 2023-12-05 State Farm Mutual Automobile Insurance Company Error monitoring and prevention in computing systems based on determined trends and routing a data stream over a second network having less latency
JP2022116776A (ja) * 2021-01-29 2022-08-10 株式会社日立製作所 保守支援装置、保守支援方法、及び保守支援プログラム
US11398960B1 (en) * 2021-04-09 2022-07-26 EMC IP Holding Company LLC System and method for self-healing of upgrade issues on a customer environment
US11625292B2 (en) 2021-05-27 2023-04-11 EMC IP Holding Company LLC System and method for self-healing of upgrade issues on a customer environment and synchronization with a production host environment
US20230089783A1 (en) * 2021-09-20 2023-03-23 Salesforce, Inc. Generating scalability scores for tenants using performance metrics
US11914550B1 (en) * 2022-12-02 2024-02-27 Truist Bank Self-healing server file system with space cleanup

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145089A (en) * 1997-11-10 2000-11-07 Legato Systems, Inc. Server fail-over system
US20020091972A1 (en) * 2001-01-05 2002-07-11 Harris David P. Method for predicting machine or process faults and automated system for implementing same
US7293201B2 (en) * 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems
JP2004309998A (ja) * 2003-02-18 2004-11-04 Nec Corp 確率分布推定装置および異常行動検出装置,ならびにその確率分布推定方法および異常行動検出方法
US7111188B2 (en) * 2003-07-31 2006-09-19 International Business Machines Corporation Dynamically configurable fault tolerance in autonomic computing with multiple service points
US7487494B2 (en) * 2004-08-02 2009-02-03 International Business Machines Corporation Approach to monitor application states for self-managing systems
US7954090B1 (en) * 2004-12-21 2011-05-31 Zenprise, Inc. Systems and methods for detecting behavioral features of software application deployments for automated deployment management
US7752425B2 (en) * 2006-05-30 2010-07-06 Arm Limited Data processing apparatus having trace and prediction logic
WO2008083345A2 (en) * 2006-12-30 2008-07-10 Peak8 Partners, Llc Technical support agent and technical support service delivery platform
US8028277B2 (en) * 2007-05-21 2011-09-27 International Business Machines Corporation Self-healing system and method for code optimization in a computing environment
US20090276469A1 (en) * 2008-05-01 2009-11-05 International Business Machines Corporation Method for transactional behavior extaction in distributed applications
CN102257520B (zh) * 2008-10-16 2018-02-06 慧与发展有限责任合伙企业 应用的性能分析
US8516312B2 (en) * 2009-03-16 2013-08-20 Peter Beasley Behavior-based invention for predicting and avoiding network downtime
US9152463B2 (en) * 2010-01-20 2015-10-06 Xyratex Technology Limited—A Seagate Company Electronic data store
US8627147B2 (en) * 2011-05-17 2014-01-07 International Business Machines Corporation Method and computer program product for system tuning based on performance measurements and historical problem data and system thereof
US9697067B2 (en) * 2013-11-08 2017-07-04 Hitachi, Ltd. Monitoring system and monitoring method
SG10201407299RA (en) * 2013-11-08 2015-06-29 Accenture Global Services Ltd Network node failure predictive system
US9519869B2 (en) * 2013-11-25 2016-12-13 International Business Machines Corporation Predictive computer system resource monitoring
US9798598B2 (en) * 2013-11-26 2017-10-24 International Business Machines Corporation Managing faults in a high availability system
AU2014101209A4 (en) * 2014-09-18 2014-11-13 Tech Mahindra Ltd. System and method for orchestrating dynamic recovery actions for business services across traditional and sdn supporting openflow protocol
US9785522B2 (en) * 2014-11-14 2017-10-10 Cisco Technology, Inc. Adaptive datacenter topology for distributed frameworks job control through network awareness
IN2015CH00883A (ko) * 2015-02-24 2015-04-10 Wipro Ltd
US20180005127A1 (en) * 2016-06-29 2018-01-04 Alcatel-Lucent Usa Inc. Predicting problem events from machine data
US10423522B2 (en) * 2017-04-12 2019-09-24 Salesforce.Com, Inc. System and method for detecting an error in software
US11475291B2 (en) * 2017-12-27 2022-10-18 X Development Llc Sharing learned information among robots
US20200112489A1 (en) * 2018-10-03 2020-04-09 Centurylink Intellectual Property Llc Intelligent Network Equipment Failure Prediction System
US10602383B1 (en) * 2018-10-15 2020-03-24 Microsoft Technology Licensing Llc Application of machine learning for building predictive models enabling smart fail over between different network media types
US11538237B2 (en) * 2019-01-15 2022-12-27 Accenture Global Solutions Limited Utilizing artificial intelligence to generate and update a root cause analysis classification model
US11630971B2 (en) * 2019-06-14 2023-04-18 Red Hat, Inc. Predicting software performace based on different system configurations
US11354222B2 (en) * 2019-06-27 2022-06-07 Capital One Services, Llc Discovery crawler for application dependency discovery, reporting, and management tool

Also Published As

Publication number Publication date
EP3887958B1 (en) 2022-03-09
EP3887958A1 (en) 2021-10-06
US20220245020A1 (en) 2022-08-04
KR102649215B1 (ko) 2024-03-20
US20210042180A1 (en) 2021-02-11
CN113454604A (zh) 2021-09-28
US11288117B2 (en) 2022-03-29
US11860729B2 (en) 2024-01-02
KR20220038586A (ko) 2022-03-29

Similar Documents

Publication Publication Date Title
KR102649215B1 (ko) 예측적 시스템 시정
US11023221B2 (en) Artificial intelligence driven configuration management
US10789065B2 (en) Method for automatically selecting configuration clustering parameters
US11537940B2 (en) Systems and methods for unsupervised anomaly detection using non-parametric tolerance intervals over a sliding window of t-digests
WO2021025828A1 (en) Predictive system remediation
CN111045854B (zh) 用于管理服务容器的方法、设备和计算机可读介质
US11805005B2 (en) Systems and methods for predictive assurance
US20220247786A1 (en) Security policy generation and enforcement for device clusters
US11316756B2 (en) Self-tuning networks using distributed analytics
US11960378B2 (en) Automated runbook operation recommendations
US20230047781A1 (en) Computing environment scaling
US11481228B2 (en) Self-service orchestration platform
US11960929B2 (en) Automated runbook operation recommendations
US11403093B1 (en) Application modification with proxy service process
US20220067572A1 (en) Action determination using recommendations based on prediction of sensor-based systems
Kompella Self-driving networks
US20240126564A1 (en) Configuring an enriched data metrics pipeline
CN118119926A (zh) 基于候选运行手册的结果与事件的补救的相关性推荐候选运行手册
CN118119927A (zh) 用于针对检测到的事件推荐运行手册的方法和系统
WO2023027885A1 (en) Recommending a candidate runbook based on a relevance of the results of the candidate runbook to remediation of an event
WO2023027884A1 (en) Method and system for recommending runbooks for detected events
CN118119928A (zh) 协作运行手册执行

Legal Events

Date Code Title Description
A201 Request for examination