KR20220007692A - 누락된 노드들 및 링크들의 서비스 그래프 강조 - Google Patents

누락된 노드들 및 링크들의 서비스 그래프 강조 Download PDF

Info

Publication number
KR20220007692A
KR20220007692A KR1020217040780A KR20217040780A KR20220007692A KR 20220007692 A KR20220007692 A KR 20220007692A KR 1020217040780 A KR1020217040780 A KR 1020217040780A KR 20217040780 A KR20217040780 A KR 20217040780A KR 20220007692 A KR20220007692 A KR 20220007692A
Authority
KR
South Korea
Prior art keywords
service graph
service
microservice
network
microservices
Prior art date
Application number
KR1020217040780A
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 사이트릭스 시스템스, 인크.
Publication of KR20220007692A publication Critical patent/KR20220007692A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • H04L43/045Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L67/36
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

서비스 그래프의 다운, 비활성 또는 누락된 네트워크 링크 또는 마이크로서비스를 식별하기 위한 시스템들 및 방법들이 본원에서 설명된다. 본원에서 설명된 시스템들 및 방법들은 모니터링을 위한 서비스 그래프를 식별할 수 있다. 본원에서 설명된 시스템들 및 방법들은 서비스들 및 네트워크들 등의 서비스 그래프 토폴로지를 모니터링할 수 있다. 본원에서 설명된 시스템들 및 방법들은 링크 또는 노드가 다운이거나 비활성이라고 결정할 수 있다. 본원에서 설명된 시스템들 및 방법들은 노드 또는 링크가 다운이거나 비활성이라는 표시들을 서비스 그래프에서 디스플레이할 수 있다. 본원에서 설명된 구현들은 링크들 및 노드들의 진단 및 모니터링의 효율성을 증가시킬 수 있고, 사건별로 더 빠른 메커니즘을 제공함으로써 사건들의 결과가 치유될 수 있으므로 다운시간을 감소시킬 수 있다.

Description

누락된 노드들 및 링크들의 서비스 그래프 강조
관련 출원의 상호참조
본 출원은, 전체 내용이 모든 목적을 위해 참조에 의해 본 명세서에 원용되는, 2019년 5월 17일 출원된 발명의 명칭이 "SERVICE GRAPH HIGHLIGHTS MISSING NODES AND LINKS"인 미국 특허 출원 번호 제16/415,810호에 대한 우선권과 수혜를 주장한다.
본 개시내용의 분야
본 출원은, 대체로, 복수의 마이크로서비스의 서비스 그래프의 누락된 노드 또는 링크들을 식별하기 위한 시스템들 및 방법들을 포함하지만 이것들로 제한되지 않는 서비스 그래프들에 관한 것이다.
다양한 서비스가 이용되거나, 액세스되거나, 기타의 방식으로 사용자에게 제공될 수 있다. 이러한 서비스들은, 집합적으로 사용자에게 서비스를 제공하는 작업들 또는 기능들의 서브세트를 수행하는 마이크로서비스들을 포함할 수 있다. 일부 마이크로서비스(들)는 마이크로서비스(들)의 새로운 버전들로 업데이트되거나 교체될 수 있다. 이러한 업데이트/교체는 마이크로서비스(들) 또는 마이크로서비스(들)에 대한 링크를 비활성화하거나 다운시킬 수 있다.
본 요약은, 이하의 상세한 설명에서 더 설명되는 개념의 선택을 간략화된 형태로 소개하기 위해 제공되는 것이다. 본 요약은 주요 피처들 또는 필수 피처들을 식별하기 위한 것도 아니고, 본원에 포함된 청구항들을 제한하기 위한 것도 아니다.
본 개시내용은 서비스 그래프의 누락된 노드들 또는 링크들을 식별하는 시스템들 및 방법들에 관한 것이다. 이 시스템들 및 방법들은 디바이스를 이용하여 서비스 그래프를 식별하고 그 서비스 그래프를 모니터링하여 링크 또는 노드가 다운되거나 비활성인지를 결정한다. 링크 또는 노드가 다운되거나 비활성임을 결정하면, 시스템들 및 방법들은 서비스 그래프 상에서 노드 또는 링크가 다운이거나 비활성이라는 표시를 디스플레이한다.
본 개시내용은 서비스 그래프를 이용하여 누락된 요소들을 식별하기 위한 방법을 설명한다. 이 방법은, 디바이스에 의해, 복수의 호(arc)에 의해 접속된 복수의 노드를 포함하는 서비스 그래프를 식별하는 단계를 포함한다. 각각의 노드는 마이크로서비스를 나타내고 각각의 호는 링크를 나타낸다. 디바이스는 링크들에 걸친 마이크로서비스들 사이의 네트워크 트래픽을 모니터링할 수 있다. 이 방법은 네트워크 트래픽의 적어도 일부를 수신하지 않는 마이크로서비스들 중 하나 또는 링크들 중 하나를 결정하고 그 마이크로서비스 또는 링크를 식별하는 단계를 더 포함한다. 이 방법은, 디바이스에 의해, 서비스 그래프를 디스플레이하는 단계를 포함한다. 디스플레이에서, 서비스 그래프는 다운 또는 비활성으로 식별된 마이크로서비스에 대응하는 노드들을 식별할 수 있다. 서비스 그래프는, 다운 또는 비활성으로 식별된 링크에 대응하는 호를 식별할 수 있다.
이 방법은, 네트워크 트래픽 내에서 디바이스에 의해, 복수의 마이크로서비스 사이의 복수의 링크에 관한 애플리케이션 프로그래밍 인터페이스(API; application programming interface) 호출을 모니터링하는 단계를 더 포함할 수 있다. 이 방법은, 마이크로서비스의 하나 이상의 API가 호출되지 않거나 실패라고 결정하는 단계를 더 포함할 수 있다. 이 방법은, 하나 이상의 마이크로서비스에 대한 링크를 통한 하나 이상의 API 호출이 호출되고 있지 않거나 실패라고 결정하는 단계를 더 포함할 수 있다. 이 방법은, 디바이스에 의해 적어도 하나의 정책에 기초하여, 마이크로서비스 또는 링크 중 적어도 하나가 비활성임을 결정하는 단계를 더 포함할 수 있다. 이 방법은, 복수의 서비스 및 복수의 링크의 미리결정된 상태와, 복수의 서비스 및 복수의 링크의 모니터링된 상태 사이의 차이를 식별하게끔, 서비스 그래프의 하나 이상의 노드 또는 하나 이상의 호에 대한 하나 이상의 그래픽 특성을 변경하는 단계를 더 포함할 수 있다.
이 방법은 마이크로서비스에 대응하는 노드들 중 하나 또는 링크에 대응하는 호의 섀도우 버전(shadow version)을 디스플레이하는 단계를 더 포함할 수 있다. 노드 또는 호는 서비스 그래프로부터 누락된 것으로 식별될 수 있다. 이 방법은 소정의 시점 또는 시간의 경과 중 하나에서 서비스 그래프를 디스플레이하는 단계를 더 포함할 수 있다. 마이크로서비스에 대응하는 노드 또는 링크에 대응하는 호는 사용자 인터페이스를 통해 활성화되도록 선택될 수 있다.
본 개시내용은 서비스 그래프를 이용하여 누락된 요소들을 식별하기 위한 시스템을 설명한다. 이 시스템은, 메모리에 결합되고 복수의 마이크로서비스에 대한 중개자인, 하나 이상의 프로세서를 포함하는 디바이스를 포함한다. 디바이스는 복수의 노드 및 노드들 사이의 복수의 호를 포함하는 서비스 그래프를 식별하게끔 구성될 수 있다. 각각의 노드는 마이크로서비스를 나타낼 수 있다. 각각의 호는 접속된 마이크로서비스들 사이의 링크를 나타낼 수 있다. 디바이스는 마이크로서비스들 사이의 링크들에 걸친 네트워크 트래픽을 모니터링하도록 구성될 수 있다. 디바이스는, 모니터링에 응답하여 마이크로서비스들 또는 링크들 중 하나가 네트워크 트래픽의 적어도 일부를 수신하고 있지 않음을 결정하도록 구성될 수 있다. 디바이스는, 마이크로서비스에 대응하는 노드 또는 링크에 대응하는 호가 비활성임을 식별하는 서비스 그래프를 디스플레이할 수 있다.
시스템은 또한, 복수의 마이크로서비스들 사이의 복수의 링크를 통한 네트워크 트래픽 내의 API(application programming interface) 호출들을 모니터링하도록 디바이스를 구성할 수 있다. 시스템은 또한, 마이크로서비스의 하나 이상의 API가 호출되지 않거나 실패라고 결정하도록 디바이스를 구성할 수 있다. 시스템은 또한, 하나 이상의 마이크로서비스에 대한 링크를 통한 하나 이상의 API 호출이 호출되지 않거나 실패라고 결정하도록 디바이스를 구성할 수 있다. 시스템은 또한, 적어도 하나의 정책에 기초하여, 마이크로서비스들 또는 링크들 중 적어도 하나가 비활성임을 결정하도록 디바이스를 구성할 수 있다.
시스템은 또한, 복수의 서비스 및 복수의 링크의 미리결정된 상태와, 복수의 서비스 및 복수의 링크의 모니터링된 상태 사이의 차이를 식별하기 위해, 서비스 그래프의 하나 이상의 노드 또는 하나 이상의 호의 그래픽 특성을 변경하도록 디바이스를 구성할 수 있다. 시스템은 또한, 마이크로서비스에 대응하는 노드 또는 링크에 대응하는 호의 섀도우 버전을 디스플레이하도록 디바이스를 구성할 수 있다. 시스템은 또한, 노드 또는 호를 서비스 그래프로부터 누락된 것으로 식별하게끔 디바이스를 구성할 수 있다. 시스템은 또한, 결정시에 소정의 시점에서 또는 시점의 경과에 따라 서비스 그래프를 디스플레이하도록 디바이스를 구성할 수 있다. 시스템은 또한, 마이크로서비스에 대응하는 노드 또는 링크에 대응하는 호가 사용자 인터페이스를 통해 활성화되게끔 선택가능하도록 디바이스를 구성할 수 있다.
본 명세서에 개시된 실시예들의 목적들, 양태들, 특징들 및 이점들은, 이하의 상세한 설명, 첨부된 청구항들, 및 유사한 참조 번호가 유사하거나 동일한 요소들을 식별하는 첨부된 도면들로부터 더욱 완전하게 명백해질 것이다. 도면과 연관하여 명세서에 도입된 참조 번호들은, 다른 특징들에 대한 정황을 제공하기 위해 명세서에서의 추가적인 설명 없이 하나 이상의 후속 도면에서 반복될 수 있으며, 모든 요소가 모든 도면에서 라벨링되는 것은 아니다. 도면은 반드시 축척비율대로 그려진 것은 아니고, 그 대신에, 실시예들, 원리들 및 개념들 예시할 때 강조가 이루어질 수 있다. 도면들은 본원에 포함된 청구항들의 범위를 제한하려는 의도가 아니다.
도 1a는 예시적인 실시예에 따른 네트워크 컴퓨팅 시스템의 블록도이다;
도 1b는 예시적인 실시예에 따른 기기를 통해 서버로부터 클라이언트로 컴퓨팅 환경을 전달하기 위한 네트워크 컴퓨팅 시스템의 블록도이다;
도 1c는 예시적인 실시예에 따른 컴퓨팅 디바이스의 블록도이다;
도 2는 예시적인 실시예에 따른 클라이언트와 서버 사이의 통신을 처리하기 위한 기기의 블록도이다;
도 3은 예시적인 실시예에 따른 가상화 환경의 블록도이다;
도 4는 예시적인 실시예에 따른 클러스터 시스템의 블록도이다;
도 5a는 예시적인 실시예에 따른 서비스 그래프 기반 시스템의 블록도이다;
도 5b는 예시적인 실시예에 따른 서비스 그래프의 블록도이다;
도 5c는 예시적인 실시예에 따른 서비스 그래프를 이용하는 방법의 흐름도이다;
도 6a는 예시적인 실시예에 따른 서비스 그래프의 누락된 노드들 또는 링크들을 디스플레이하는 예시적인 사용자 인터페이스이다;
도 6b는 예시적인 실시예에 따른 서비스 그래프의 누락된 노드들 또는 링크들을 식별하기 위한 방법의 흐름도이다.
이하의 다양한 실시예의 설명을 읽을 목적으로, 본 명세서의 섹션들 및 이들 각각의 내용에 대한 이하의 설명이 도움이 될 수 있다:
섹션 A는 본원에서 설명된 실시예들을 실시하는데 유용할 수 있는 네트워크 환경 및 컴퓨팅 환경을 설명한다;
섹션 B는 컴퓨팅 환경을 원격 사용자에게 전달하기 위한 시스템 및 방법의 실시예들을 설명한다;
섹션 C는 애플리케이션 전달 제어기를 가상화하기 위한 시스템들 및 방법들의 실시예들을 설명한다;
섹션 D는 클러스터링된 기기 아키텍쳐 환경을 제공하기 위한 시스템들 및 방법들의 실시예들을 설명한다;
섹션 E는 서비스 그래프 기반 플랫폼 및 기술의 실시예들을 설명한다; 및
섹션 F는 복수의 마이크로서비스의 서비스 그래프를 재생하기 위한 시스템들 및 방법들의 실시예들을 설명한다.
A. 네트워크 및 컴퓨팅 환경
도 1a를 참조하면, 예시적인 네트워크 환경(100)이 도시되어 있다. 네트워크 환경(100)은, (일반적으로 네트워크(들)(104)라고 지칭되는) 하나 이상의 네트워크(104(1)-104n)를 통해 (일반적으로 원격 머신(들)(106) 또는 서버(들)(106)라고도 지칭되는) 하나 이상의 서버 106(1)-106(n)와 통신하는 (일반적으로 로컬 머신(들)(102) 또는 클라이언트(들)(102)라고도 지칭되는) 하나 이상의 클라이언트 102(1)-102(n)를 포함할 수 있다. 일부 실시예에서, 클라이언트(102)는 (일반적으로 기기(들)(200) 또는 게이트웨이(들)(200)라고 지칭되는) 하나 이상의 기기(200(1)-200n)를 통해 서버(106)와 통신할 수 있다.
도 1a에 도시된 실시예는 클라이언트들(102)과 서버들(106) 사이의 하나 이상의 네트워크(104)를 도시하지만, 다른 실시예들에서, 클라이언트들(102)과 서버들(106)은 동일한 네트워크(104) 상에 있을 수 있다. 다양한 네트워크(104)는 동일한 유형의 네트워크 또는 상이한 유형들의 네트워크일 수 있다. 예를 들어, 일부 실시예에서, 네트워크(104(1))는 근거리 통신망(LAN) 또는 회사 인트라넷 등의 사설 네트워크일 수 있는 반면, 네트워크(104(2)) 및/또는 네트워크(104(n))는 WAN(광역 네트워크) 또는 인터넷 등의 공용 네트워크일 수 있다. 다른 실시예들에서, 네트워크(104(1)) 및 네트워크(104(n)) 양쪽 모두는 사설 네트워크들일 수 있다. 네트워크들(104)은 유선 및/또는 무선 네트워크들 등의 하나 이상의 유형의 물리적 네트워크 및/또는 네트워크 토폴로지들을 이용할 수 있고, 전송 제어 프로토콜(TCP), 인터넷 프로토콜(IP), 사용자 데이터그램 프로토콜(UDP) 또는 기타의 유사한 프로토콜들 등의, 하나 이상의 통신 트랜스포트(transport) 프로토콜을 이용할 수 있다.
도 1a에 도시된 바와 같이, 하나 이상의 기기(200)는 네트워크 환경(100)의 다양한 지점 또는 다양한 통신 경로에 위치할 수 있다. 예를 들어, 기기(200)는 2개의 네트워크들(104(1) 및 104(2)) 사이에 배치될 수 있고, 기기들(200)은 예를 들어 클라이언트들(102)과 서버들(106) 사이의 네트워크들 트래픽을 가속화하기 위해 함께 작동하도록 서로 통신할 수 있다. 다른 실시예들에서, 기기(200)는 네트워크(104) 상에 위치할 수 있다. 예를 들어, 기기(200)는 클라이언트들(102) 및/또는 서버들(106) 중 하나의 일부로서 구현될 수 있다. 한 실시예에서, 기기(200)는 플로리다주 Fort Lauderdale의 Citrix Systems, Inc.에 의해 판매되는 Citrix 네트워킹(이전 NetScaler®) 제품 등의 네트워크 디바이스로서 구현될 수 있다.
도 1a에 도시된 바와 같이, 하나 이상의 서버(106)는 서버 팜(38)으로서 동작할 수 있다. 서버 팜(38)의 서버들(106)은 논리적으로 그룹화될 수 있고, 클라이언트들(102) 및/또는 다른 서버들(106)로부터 지리적으로 함께 위치하거나(예를 들어, 구역내) 지리적으로 분산될 수 있다(예를 들어, 클라우드 기반). 한 실시예에서, 서버 팜(38)은 클라이언트(102) 중 하나 이상을 대신하여 (예를 들어, 애플리케이션 서버로서) 하나 이상의 애플리케이션을 실행하지만, 파일 서버, 게이트웨이 서버, 프록시 서버, 또는 기타의 유사한 서버 이용 등의 다른 이용들도 가능하다. 클라이언트들(102)은 서버들(106) 상의 호스팅된 애플리케이션들에 대한 액세스를 추구할 수 있다.
도 1a에 도시된 바와 같이, 일부 실시예에서, 기기들(200)은, 일반적으로 WAN 최적화 기기(들)(205)라고 지칭되는, WAN 최적화 기기들(205(1)-205(n)) 등의, 하나 이상의 추가적인 기기를 포함하거나 이에 의해 대체되거나 이들과 통신할 수 있다. 예를 들어, WAN 최적화 기기(205)는, 광역 파일 서비스들(WAFS; Wide Area File Services) 최적화, 서버 메시지 블록(SMB; Server Message Block) 가속 또는 공통 인터넷 파일 시스템(CIFS; Common Internet File System) 등의, WAN 접속로의 및/또는 WAN 접속로부터의 트래픽 등의, 네트워크들 트래픽의 성능, 동작, 흐름 제어 또는 서비스 품질을 가속하거나, 캐싱하거나, 압축하거나 최적화 또는 개선할 수 있다. 일부 실시예에서, 기기(205)는 성능 향상 프록시 또는 WAN 최적화 제어기일 수 있다. 한 실시예에서, 기기(205)는 플로리다주 Fort Lauderdale의 Citrix Systems, Inc.에 의해 판매되는 Citrix SD-WAN 제품으로서 구현될 수 있다.
도 1b를 참조하면, 컴퓨팅 네트워크 환경을 전달하거나 및/또는 클라이언트(102) 상에서 동작시키기 위한 예시적인 네트워크 환경(100')이 도시되어 있다. 도 1b에 도시된 바와 같이, 서버(106)는, 컴퓨팅 환경, 애플리케이션, 및/또는 데이터 파일을 하나 이상의 클라이언트(102)에 전달하기 위한 애플리케이션 전달 시스템(190)을 포함할 수 있다. 클라이언트(102)는 클라이언트 에이전트(120) 및 컴퓨팅 환경(15)을 포함할 수 있다. 컴퓨팅 환경(15)은, 데이터 파일(17)을 액세스, 처리 또는 이용하는 애플리케이션들(16)을 실행하거나 동작시킬 수 있다. 컴퓨팅 환경(15), 애플리케이션(16) 및/또는 데이터 파일(17)은, 기기(200) 및/또는 서버(106)를 통해 전달될 수 있다.
기기(200)는, 예를 들어 애플리케이션 전달 시스템(190)에 의해, 클라이언트(102)로의 컴퓨팅 환경(15)의 전부 또는 일부의 전달을 가속할 수 있다. 예를 들어, 기기(200)는, 클라이언트(102)와 서버(106) 사이의 트랜스포트 계층 트래픽을 가속함으로써 데이터 센터로부터 원격 사용자 위치로의, 애플리케이션에 의해 처리가능한 스트리밍 애플리케이션 및 데이터 파일의 전달을 가속할 수 있다. 이러한 가속은 다음과 같은 하나 이상의 기술에 의해 제공될 수 있다: 1) 트랜스포트 계층 접속 풀링, 2) 트랜스포트 계층 접속 멀티플렉싱, 3) 트랜스포트 제어 프로토콜 버퍼링, 4) 압축, 5) 캐싱 또는 기타의 기술들. 기기(200)는 또한, 클라이언트들(102)로부터의 요청들을 처리하기 위해 서버들(106)의 부하 밸런싱을 제공하거나, 하나 이상의 서버(106)로의 액세스를 제공하기 위해 프록시 또는 액세스 서버로서 역할하거나, 클라이언트(102)와 서버(106) 사이에서 보안을 제공하거나 및/또는 방화벽으로서 역할하거나, DNS(Domain Name Service) 해결을 제공하거나, 하나 이상의 가상 서버 또는 가상 인터넷 프로토콜 서버를 제공하거나, 및/또는 보안 소켓 계층(SSL) VPN 접속 등의, 클라이언트(102)로부터 서버(106)로 보안 VPN(가상 사설망) 접속을 제공하거나, 및/또는 암호화 및 암호해독 동작들을 제공한다.
애플리케이션 전달 관리 시스템(190)은, 정책 엔진(195)에 의해 적용되는 인증 및 권한부여 정책들에 기초하여, 원격 또는 다른 방식으로, 사용자(예를 들어, 클라이언트들(102))에게 컴퓨팅 환경(15)을 전달할 수 있다. 원격 사용자는, 임의의 네트워크-접속된 디바이스(예를 들어, 클라이언트(102))로부터 컴퓨팅 환경을 획득하고 서버에 저장된 애플리케이션들 및 데이터 파일들에 액세스할 수 있다. 예를 들어, 기기(200)는 서버들(106)에게 애플리케이션 및 데이터 파일을 요청할 수 있다. 요청에 응답하여, 애플리케이션 전달 시스템(190) 및/또는 서버(106)는, 예를 들어 클라이언트(102) 상의 컴퓨팅 환경(15)에서 동작하는 애플리케이션 스트림을 통해, 또는 원격 디스플레이 프로토콜을 통해 또는 원격 기반 또는 서버 기반 컴퓨팅을 통해 애플리케이션 및 데이터 파일을 클라이언트(102)에 전달할 수 있다. 한 실시예에서, 애플리케이션 전달 시스템(190)은, Citrix Virtual Apps and Desktops(이전의 XenApp® 및 XenDesktop®) 등의, Citrix Systems, Inc.의 Citrix Workspace Suite™의 임의의 부분으로서 구현될 수 있다.
정책 엔진(195)은, 애플리케이션에 대한 액세스, 애플리케이션의 실행 및 전달을 제어하고 관리할 수 있다. 예를 들어, 정책 엔진(195)은, 사용자 또는 클라이언트(102)가 액세스할 수 있는 하나 이상의 애플리케이션 및/또는 서버 기반 컴퓨팅, 로컬 실행을 위해 클라이언트(120)에 로컬로 애플리케이션의 스트리밍 또는 전달하는 것 등의, 애플리케이션이 사용자 또는 클라이언트(102)에 전달되어야 하는 방법을 결정할 수 있다.
예를 들어, 동작에 있어서, 클라이언트(102)는 애플리케이션(예를 들어, 애플리케이션(16'))의 실행을 요청할 수 있고, 서버(106)의 애플리케이션 전달 시스템(190)은, 예를 들어 클라이언트(102)로부터 수신된 자격증명서 및 자격증명서와 연관된 정책 엔진(195)에 의해 적용되는 사용자 정책에 기초하여 애플리케이션(16')을 실행하는 방법을 결정한다. 예를 들어, 애플리케이션 전달 시스템(190)은 클라이언트(102)가 서버(106) 상의 애플리케이션의 실행에 의해 생성된 애플리케이션 출력 데이터를 수신할 수 있게 할 수 있고, 클라이언트(102)가 서버(106)로부터 애플리케이션을 수신한 후 애플리케이션을 로컬로 실행할 수 있게 하거나, 또는 네트워크들(104)을 통해 클라이언트(102)로 애플리케이션을 스트리밍할 수 있다. 예를 들어, 일부 실시예에서, 애플리케이션은, 클라이언트(102)를 대신하여 서버(106) 상에서 실행되는 서버 기반 또는 원격 기반 애플리케이션일 수 있다. 서버(106)는, 플로리다주, Fort Lauderdale의 Citrix Systems, Inc.에 의한 ICA(Independent Computing Architecture) 프로토콜 등의, 씬-클라이언트(thin-client) 또는 원격 디스플레이 프로토콜을 이용하여 클라이언트(102)에 출력을 디스플레이할 수 있다. 애플리케이션은, 그래픽 스트리밍, 비디오 및/또는 오디오 또는 기타 데이터의 스트리밍, 원격 데스크탑들 또는 작업공간들 또는 호스팅된 서비스들 또는 애플리케이션들의 전달, 예를 들어, 서비스로서의 인프라(IaaS; infrastructure as a service), 서비스로서의 데스크탑(DaaS; desktop as a service), 서비스로서의 작업공간(WaaS; workspace as a service), 서비스로서의 소프트웨어(SaaS; software as a service ) 또는 서비스로서의 플랫폼(PaaS; platform as a service) 등의 애플리케이션들 등의, 실시간 데이터 통신에 관련된 임의의 애플리케이션일 수 있다.
하나 이상의 서버(106)는 성능 모니터링 서비스 또는 에이전트(197)를 포함할 수 있다. 일부 실시예에서, 성능 모니터링을 수행하기 위해 전용의 하나 이상의 서버(106)가 이용될 수 있다. 성능 모니터링은, 예를 들어, 소프트웨어, 하드웨어 또는 이들의 조합에 의한 데이터 수집, 집계, 분석, 관리 및 보고를 이용하여 수행될 수 있다. 성능 모니터링은, 클라이언트들(102)(예를 들어, 클라이언트 에이전트(120)), 서버들(106)(예를 들어, 에이전트(197)) 또는 기기(200 및/또는 205)(에이전트 미도시)에 관한 모니터링, 측정 및 데이터 수집 활동을 수행하기 위한 하나 이상의 에이전트를 포함할 수 있다. 일반적으로 모니터링 에이전트(예를 들어, 120 및/또는 197)는 디바이스의 임의의 애플리케이션 및/또는 사용자에 대해 투명하게(예를 들어, 백그라운드에서) 실행된다. 일부 실시예에서, 모니터링 에이전트(197)는, 플로리다주 Fort Lauderdale의 Citrix Systems, Inc.에 의해 Citrix Analytics 또는 Citrix Application Delivery Management라고 지칭되는 임의의 제품 실시예를 포함한다.
모니터링 에이전트들(120 및 197)은, 주어진 이벤트(들)의 발생에 기초하여, 미리결정된 빈도로 또는 네트워크 환경(100)의 동작 중에 실시간으로, 데이터를 모니터링, 측정, 수집 및/또는 분석할 수 있다. 모니터링 에이전트들은, 클라이언트들(102), 네트워크들(104), 기기들(200 및/또는 205), 및/또는 서버들(106)의 하드웨어, 소프트웨어 및/또는 통신 자원의 자원들의 소비 및/또는 성능을 모니터링할 수 있다. 예를 들어, 트랜스포트 계층 접속, 네트워크 레이턴시, 대역폭 이용률, 최종 사용자 응답 시간, 애플리케이션 이용 및 성능, 애플리케이션에 대한 세션 접속, 캐시 이용, 메모리 이용, 프로세서 이용, 스토리지 이용, 데이터베이스 트랜잭션들, 클라이언트 및/또는 서버 이용, 활성 사용자들, 사용자 활동의 지속시간, 애플리케이션 충돌들, 오류들, 또는 중단들, 애플리케이션, 서버 또는 애플리케이션 전달 시스템에 로그인하는데 요구되는 시간, 및/또는 기타의 성능 조건들 및 메트릭들 등의 네트워크 접속들이 모니터링될 수 있다.
모니터링 에이전트들(120 및 197)은 애플리케이션 전달 시스템(190)에 대한 애플리케이션 성능 관리를 제공할 수 있다. 예를 들어, 하나 이상의 모니터링된 성능 조건 또는 메트릭에 기초하여, 애플리케이션 전달 시스템(190)은, 네트워크 환경 성능 및 조건에 기초하여 서버(106)에 의한 클라이언트(102)로의 애플리케이션 전달을 최적화하기 위해, 예를 들어 주기적으로 또는 실시간으로 동적으로 조정될 수 있다.
설명된 실시예에서, 클라이언트들(102), 서버들(106), 및 기기들(200 및 205)은, 적어도 하나 이상의 네트워크를 통해 통신할 수 있고 본원에서 설명된 동작들을 수행할 수 있는, 임의의 데스크탑 컴퓨터, 랩탑 컴퓨터, 또는 모바일 디바이스 등의 임의의 유형 및 형태의 컴퓨팅 디바이스로서 배치되거나 및/또는 실행될 수 있다. 예를 들어, 클라이언트들(102), 서버들(106) 및/또는 기기들(200 및 205) 각각은, 하나의 컴퓨터, 복수의 컴퓨터, 또는 도 1c에 도시된 컴퓨터(101) 등의 분산된 컴퓨터들의 네트워크들에 대응할 수 있다.
도 1c에 도시된 바와 같이, 컴퓨터(101)는, 하나 이상의 프로세서(103), 휘발성 메모리(122)(예를 들어, RAM), 비휘발성 메모리(128)(예를 들어, 하나 이상의 하드 디스크 드라이브(HDD) 또는 기타의 자기 또는 광학 저장 매체, 플래시 드라이브 또는 기타의 솔리드 스테이트 저장 매체 등의 하나 이상의 솔리드 스테이트 드라이브(SSD), 하나 이상의 하이브리드 자기 및 솔리드 스테이트 드라이브, 및/또는 클라우드 스토리지 등의 하나 이상의 가상 스토리지 볼륨, 또는 이러한 물리적 저장 볼륨 및 가상 스토리지 볼륨 조합 또는 이들의 어레이), 사용자 인터페이스(UI)(123), 하나 이상의 통신 인터페이스(118), 및 통신 버스(150)를 포함할 수 있다. 사용자 인터페이스(123)는, 그래픽 사용자 인터페이스(GUI)(124)(예를 들어, 터치스크린, 디스플레이 등) 및 하나 이상의 입력/출력(I/O) 디바이스(126)(예를 들어, 마우스, 키보드 등)를 포함할 수 있다. 비휘발성 메모리(128)는, 운영 체제(115), 하나 이상의 애플리케이션(116), 및 데이터(117)를 저장하여, 예를 들어 운영 체제(115) 및/또는 애플리케이션들(116)의 컴퓨터 명령어들이 휘발성 메모리(122)로부터 인출되어 프로세서(들)(103)에 의해 실행되도록 한다. 데이터는 GUI(124)의 입력 디바이스를 이용하여 입력되거나 I/O 디바이스(들)(126)로부터 수신될 수 있다. 컴퓨터(101)의 다양한 요소들은 통신 버스(150)를 통해 전달될 수 있다. 클라이언트들(102), 서버들(106) 및/또는 기기들(200 및 205)은, 임의의 컴퓨팅 또는 처리 환경에 의해, 및 본원에서 설명된 대로 작동할 수 있는 적절한 하드웨어 및/또는 소프트웨어를 가질 수 있는 임의의 유형의 머신 또는 머신 세트로 구현될 수 있기 때문에, 도 1c에 도시된 컴퓨터(101)는 단지 예로서 도시된 것이다.
프로세서(들)(103)은 시스템의 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능한 프로세서에 의해 구현될 수 있다. 본원에서 사용될 때, "프로세서"라는 용어는, 기능, 동작 또는 동작들의 시퀀스를 수행하는 전자 회로를 기술한다. 기능, 동작 또는 동작들의 시퀀스는 전자 회로 내에 하드 코딩되거나 메모리 디바이스에 저장된 명령어들을 통해 소프트 코딩될 수 있다. "프로세서"는, 디지털 값들을 이용하거나 아날로그 신호들을 이용하여, 기능, 동작 또는 동작들의 시퀀스를 수행할 수 있다. 일부 실시예에서, "프로세서"는, 하나 이상의 ASIC(application specific integrated circuit)들, 마이크로프로세서들, 디지털 신호 프로세서들, 마이크로제어기들, FPGA(field programmable gate array)들, PLA(programmable logic array)들, 다중코어 프로세서들, 또는 연관된 메모리를 갖춘 범용 컴퓨터들로 구현될 수 있다. "프로세서"는, 아날로그, 디지털 또는 혼합된 신호일 수 있다. 일부 실시예에서, "프로세서"는, 하나 이상의 물리적 프로세서 또는 하나 이상의 "가상"(예를 들어, 원격으로 위치한 또는 "클라우드") 프로세서일 수 있다.
통신 인터페이스들(118)은, 컴퓨터(101)가 다양한 유선 및/또는 무선 또는 셀룰러 접속을 통해 LAN, WAN 또는 인터넷 등의 컴퓨터 네트워크에 액세스할 수 있게 하는 하나 이상의 인터페이스를 포함할 수 있다.
설명된 실시예들에서, 제1 컴퓨팅 디바이스(101)는 클라이언트 컴퓨팅 디바이스(예를 들어, 클라이언트(102))의 사용자를 대신하여 애플리케이션을 실행할 수 있거나, 호스팅된 데스크탑 세션 등의 사용자 또는 클라이언트 컴퓨팅 디바이스(예를 들어, 클라이언트(102)) 대신에 애플리케이션들이 실행되는 실행 세션을 제공하는 가상 머신을 실행할 수 있거나, 호스팅된 데스크탑 환경을 제공하는 터미널 서비스 세션을 실행할 수 있거나, 다음 중 하나 이상을 포함하는 컴퓨팅 환경에 대한 액세스를 제공할 수 있다: 하나 이상의 애플리케이션, 하나 이상의 데스크탑 애플리케이션, 및 하나 이상의 애플리케이션이 실행될 수 있는 하나 이상의 데스크탑 세션.
B. 기기 아키텍쳐
도 2는 기기(200)의 예시적인 실시예를 도시한다. 본원에 설명된 바와 같이, 기기(200)는, 서버, 게이트웨이, 라우터, 스위치, 브릿지 또는 다른 유형의 컴퓨팅 또는 네트워크 디바이스로서 구현될 수 있다. 도 2에 도시된 바와 같이, 기기(200)의 한 실시예는, 하드웨어 계층(206), 및 사용자 공간(202)과 커널 공간(204)으로 분할된 소프트웨어 계층(205)을 포함할 수 있다. 하드웨어 계층(206)은 커널 공간(204) 및 사용자 공간(202) 내의 프로그램들 및 서비스들이 실행되는 하드웨어 요소들을 제공하고, 커널 공간(204) 및 사용자 공간(202) 내의 프로그램들 및 서비스들이 기기(200)에 관해 내부 및 외부 양쪽 모두에서 데이터를 전달하는 것을 허용한다. 도 2에 도시된 바와 같이, 하드웨어 계층(206)은, 소프트웨어 프로그램들 및 서비스들을 실행하기 위한 하나 이상의 처리 유닛(262), 소프트웨어 및 데이터를 저장하기 위한 메모리(264), 네트워크를 통해 데이터를 전송 및 수신하기 위한 네트워크 포트들(266), 및 네트워크를 통해 전송되고 수신되는 데이터의 보안 소켓 계층(Secure Socket Layer) 또는 트랜스포트 계층 보안(Transport Layer Security) 처리와 관련하여 데이터를 암호화 및 암호해독하기 위한 암호화 프로세서(260)를 포함할 수 있다.
기기(200)의 운영 체제는, 이용가능한 시스템 메모리를 할당하거나, 관리하거나, 또는 커널 공간(204) 및 사용자 공간(202)으로 분리한다. 커널 공간(204)은, 임의의 디바이스 드라이버, 커널 확장 또는 기타의 커널 관련 소프트웨어를 포함한, 커널(230)을 실행하기 위해 예약되어 있다. 본 기술분야의 통상의 기술자에게 공지된 바와 같이, 커널(230)은 운영 체제의 코어이며, 애플리케이션(104)의 자원들 및 하드웨어 관련 요소들의 액세스, 제어 및 관리를 제공한다. 커널 공간(204)은 또한, 캐시 관리자(232)와 연계하여 작동하는 다수의 네트워크 서비스 또는 프로세스를 포함할 수 있다.
기기(200)는, 클라이언트(들)(102), 서버(들)(106), 네트워크들(들)(104), 및/또는 기타의 기기들(200 또는 205)과 통신하기 위한, TCP/IP 기반 스택 등의, 하나 이상의 네트워크 스택(267)을 포함할 수 있다. 예를 들어, 기기(200)는 클라이언트들(102)과 서버들(106) 사이의 하나 이상의 트랜스포트 계층 접속을 확립 및/또는 종료할 수 있다. 각각의 네트워크 스택(267)은, 기기(200)에 의한 전송을 위한 하나 이상의 네트워크 패킷을 큐잉(queuing)하기 위한 버퍼(243)를 포함할 수 있다.
커널 공간(204)은, 캐시 관리자(232), 패킷 엔진(240), 암호화 엔진(234), 정책 엔진(236) 및 압축 엔진(238)을 포함할 수 있다. 다시 말해서, 프로세스들(232, 240, 234, 236, 238) 중 하나 이상은 기기(200)의 운영 체제의 코어 주소 공간에서 실행되며, 이는, 예를 들어 커널 모드에서 획득된 데이터는, 사용자 프로세스, 스레드 또는 사용자 수준 데이터 구조에 전달되거나 복사될 필요가 없기 때문에, 메모리로의 및 메모리로부터의 데이터 트랜잭션의 수 및/또는 커널 모드와 사용자 모드간의 컨텍스트 전환을 감소시킬 수 있다.
캐시 관리자(232)는, 데이터의 액세스 시간을 감소시키기 위해, 어떤 다른 곳에 저장된 원본 데이터 또는 이전에 계산되거나, 생성되거나 전송된 데이터를 복제할 수 있다. 일부 실시예에서, 캐시 메모리는 기기(200)의 메모리(264) 내의 데이터 객체이거나, 메모리(264)보다 더 빠른 액세스 시간을 갖는 물리적 메모리일 수 있다.
정책 엔진(236)은, 사용자가 캐싱 정책을 식별, 명시, 정의 또는 구성하고, 기기(200)에 의해 캐싱되는 객체들, 데이터 또는 콘텐츠에 대한 액세스, 제어 및 관리를 허용하며, 보안, 네트워크 트래픽, 네트워크 액세스, 압축 또는 기기(200)에 의해 수행되는 기타의 기능들을 정의하거나 구성하는 것을 허용하는, 통계 엔진 또는 기타 구성 메커니즘을 포함할 수 있다.
암호화 엔진(234)은, SSL 또는 TLS 등의, 임의의 보안 관련 프로토콜을 처리할 수 있다. 예를 들어, 암호화 엔진(234)은 기기(200)를 통해 전달된 네트워크 패킷들, 또는 그 임의의 부분을 암호화 및 암호해독하거나, 예를 들어, 클라이언트(102), 서버(106) 및/또는 기타의 기기들(200 또는 205) 사이에서, SSL, TLS 또는 기타 보안 접속들을 셋업하거나 확립할 수 있다. 일부 실시예에서, 암호화 엔진(234)은 클라이언트(102)와 서버(106) 사이에 VPN을 제공하는 터널링 프로토콜을 이용할 수 있다. 일부 실시예에서, 암호화 엔진(234)은 암호화 프로세서(260)와 통신한다. 압축 엔진(238)은, 클라이언트들(102)과 서버들(106) 사이 및/또는 하나 이상의 기기(200) 사이에서 양방향으로 네트워크 패킷들을 압축한다.
패킷 엔진(240)은 네트워크 포트들(266)을 통해 네트워크 패킷을 전송 및 수신하기 위해 네트워크 스택들(267)을 통해 기기(200)에 의해 수신 및 전송되는 패킷들의 커널-레벨 처리를 관리할 수 있다. 패킷 엔진(240)은, 암호화 엔진(234), 캐시 관리자(232), 정책 엔진(236) 및 압축 엔진(238)과 연계하여 동작하여, 예를 들어 암호화/복호화, 요청-레벨 콘텐츠 전환 및 요청-레벨 캐시 방향전환 등의 트래픽 관리, 및 데이터의 압축과 압축해제를 수행할 수 있다.
사용자 공간(202)은, 사용자 모드 애플리케이션들 또는 보통은 사용자 모드에서 실행되는 그외의 프로그램들에 의해 이용되는 운영 체제의 메모리 영역 또는 부분이다. 사용자 모드 애플리케이션은 커널 공간(204)에 직접 액세스할 수 없고 커널 서비스들에 액세스하기 위해 서비스 호출을 이용한다. 사용자 공간(202)은, 그래픽 사용자 인터페이스(GUI)(210), 커맨드 라인 인터페이스(CLI)(212), 쉘 서비스(214), 건강 모니터(216), 및 데몬 서비스들(218)을 포함할 수 있다. GUI(210) 및 CLI(212)는, 시스템 관리자 또는 다른 사용자가, 기기(200)의 운영 체제 등을 통해, 기기(200)와 상호작용하고 그 동작을 제어할 수 있게 한다. 쉘 서비스들(214)은, GUI(210) 및/또는 CLI(212)를 통한 사용자에 의한 기기(200)와의 상호작용을 지원하기 위해 프로그램들, 서비스들, 태스크들, 프로세스들 또는 실행가능한 명령어들을 포함한다.
건강 모니터(216)는, 예를 들어 기기(200)의 활동을 모니터링함으로써, 네트워크 시스템들이 적절하게 기능하고 있고 사용자가 네트워크를 통해 요청된 콘텐츠를 수신하고 있는지를 모니터링, 체크, 보고 및 보장한다. 일부 실시예에서, 건강 모니터(216)는, 기기(200)를 통해 전달된 임의의 네트워크 트래픽을 가로채서 검사한다. 예를 들어, 건강 모니터(216)는, 상태, 상황, 동작 조건 또는 기기(200)의 임의의 부분의 건강을 결정하기 위해, 암호화 엔진(234), 캐시 관리자(232), 정책 엔진(236), 압축 엔진(238), 패킷 엔진(240), 데몬 서비스들(218), 및 셸 서비스들(214) 중 하나 이상과 인터페이스할 수 있다. 또한, 건강 모니터(216)는, 프로그램, 프로세스, 서비스 또는 태스크가 활성이고 현재 실행 중인지를 결정하고, 임의의 프로그램, 프로세스, 서비스 또는 태스크에 의해 제공된 상태, 에러 또는 이력 기록들을 체크하여, 기기(200)의 임의의 부분에서의 임의의 조건, 상황 또는 에러를 결정할 수 있다. 추가적으로, 건강 모니터(216)는, 기기(200) 상에서 실행되는 임의의 애플리케이션, 프로그램, 프로세스, 서비스, 태스크 또는 스레드의 성능을 측정하고 모니터링할 수 있다.
데몬 서비스들(218)은 지속적으로 또는 백그라운드에서 실행되고 기기(200)에 의해 수신된 주기적 서비스 요청들을 처리하는 프로그램들이다. 일부 실시예에서, 데몬 서비스는, 적절한 경우, 또 다른 데몬 서비스(218) 등의, 다른 프로그램들 또는 프로세스들에게 요청들을 포워딩할 수 있다.
본원에서 설명된 바와 같이, 기기(200)는, 각각의 서버(106)와의 하나 이상의 트랜스포트 계층 접속을 개방하고 인터넷을 통한 클라이언트들에 의한 반복된 데이터 액세스들을 허용하기 위해 이들 접속들을 유지함으로써(예를 들어, "접속 풀링") 클라이언트들(102)에 대한 트랜스포트 계층 접속들을 반복적으로 열고 닫음으로써 야기되는 처리 부하의 많은 부분을 서버(106)로부터 경감시킬 수 있다. 접속 풀링을 수행하기 위해, 기기(200)는 트랜스포트 계층 프로토콜 레벨에서 시퀀스 번호들 및 접수확인 번호들을 수정함으로써 통신을 변환하거나 멀티플렉싱할 수 있다(예를 들어, "접속 멀티플렉싱"). 기기(200)는 또한, 클라이언트(102)와 서버(106) 사이의 통신에 대한 스위칭 또는 부하 밸런싱을 제공할 수 있다.
본원에서 설명된 바와 같이, 각각의 클라이언트(102)는 네트워크들(104)을 통해 기기(200) 및/또는 서버(106)와의 통신을 확립하고 교환하기 위한 클라이언트 에이전트(120)를 포함할 수 있다. 클라이언트(102)는 네트워크(104)와 통신하는 하나 이상의 애플리케이션을 설치 및/또는 실행할 수 있다. 클라이언트 에이전트(120)는 하나 이상의 애플리케이션에 의해 이용되는 네트워크 스택으로부터 네트워크 통신을 가로챌 수 있다. 예를 들어, 클라이언트 에이전트(120)는 네트워크 스택의 임의의 지점에서 네트워크 통신을 가로채고, 네트워크 통신을, 클라이언트 에이전트(120)가 원하거나, 관리하거나 제어하는 목적지로 방향전환하여, 예를 들어, 트랜스포트 계층 접속을 가로채어 클라이언트 에이전트(120)가 제어하거나 관리하는 IP 주소 및 포트로 방향전환할 수 있다. 따라서, 클라이언트 에이전트(120)는, 네트워크 계층 등의 트랜스포트 계층 아래의 임의의 프로토콜 계층, 및 세션, 프리젠테이션 또는 애플리케이션 계층들 등의, 트랜스포트 계층 위의 임의의 프로토콜 계층을 투명하게 가로챌 수 있다. 클라이언트 에이전트(120)는 트랜스포트 계층과 인터페이스하여, 트랜스포트 계층에 의해 운반되는 임의의 프로토콜을 통해 제공되는 임의의 통신을 보안, 최적화, 가속, 라우팅 또는 부하 밸런싱할 수 있다.
일부 실시예에서, 클라이언트 에이전트(120)는, 플로리다주 Fort Lauderdale의 Citrix Systems, Inc.에 의해 개발된 ICA(Independent Computing Architecture) 클라이언트로서 구현된다. 클라이언트 에이전트(120)는, 가속, 스트리밍, 모니터링, 및/또는 기타의 동작들을 수행할 수 있다. 예를 들어, 클라이언트 에이전트(120)는 서버(106)로부터 클라이언트(102)로의 애플리케이션 스트리밍을 가속할 수 있다. 클라이언트 에이전트(120)는 또한, 종점 검출/스캔을 수행하고 기기(200) 및/또는 서버(106)를 위해 클라이언트(102)에 대한 종점 정보를 수집할 수 있다. 기기(200) 및/또는 서버(106)는, 수집된 정보를 이용하여, 네트워크(104)로의 클라이언트 접속을 결정하고, 그 액세스, 인증 및 권한부여 제어를 제공할 수 있다. 예를 들어, 클라이언트 에이전트(120)는, 운영 체제 및/또는 운영 체제의 버전, 운영 체제의 서비스 팩, 실행 중인 서비스, 실행 중인 프로세스, 파일, 안티바이러스, 방화벽, 보안 및/또는 기타의 소프트웨어 등의 클라이언트의 다양한 애플리케이션의 존재 또는 버전들 등의 하나 이상의 클라이언트측 속성들을 식별하고 결정할 수 있다.
C. 가상화된 애플리케이션 전달 제어기를 제공하기 위한 시스템들 및 방법들
이제 도 3을 참조하면, 가상화된 환경(300)의 블록도가 도시되어 있다. 도시된 바와 같이, 가상화된 환경(300)의 컴퓨팅 디바이스(302)는, 가상화 계층(303), 하이퍼바이저 계층(304), 및 하드웨어 계층(307)을 포함한다. 하이퍼바이저 계층(304)은, 가상화 계층(303)에서 실행되는 적어도 하나의 가상 머신(VM)(예를 들어, VM들(306) 중 하나)에 의해 하드웨어 계층(307)의 다수의 물리적 자원(예를 들어, 물리적 프로세서(들)(321) 및 물리적 디스크(들)(328))에 대한 액세스를 할당하고 관리하는 하나 이상의 하이퍼바이저(또는 가상화 관리자)(301)를 포함한다. 각각의 VM(306)은, 가상 메모리 및 가상 네트워크 인터페이스들 등의 가상 자원들뿐만 아니라 가상 프로세서들(332) 및/또는 가상 디스크들(342) 등의 할당된 가상 자원들을 포함할 수 있다. 일부 실시예에서, VM들(306) 중 적어도, 하나는 하이퍼바이저(301)와 통신하고 디바이스(302) 상의 다른 VM들을 관리 및 구성하기 위한 애플리케이션들(예를 들어, 게스트 운영 체제(310))을 실행하는데 이용되는 제어 운영 체제(예를 들어, 305)를 포함할 수 있다.
일반적으로, 하이퍼바이저(들)(301)는 물리적 디바이스에 액세스하는 운영 체제를 시뮬레이션하는 임의의 방식으로 VM들(306)의 운영 체제에 가상 자원들을 제공할 수 있다. 따라서, 하이퍼바이저(들)(301)는, 가상 하드웨어를 에뮬레이트하고, 물리적 하드웨어를 분할하고, 물리적 하드웨어를 가상화하고, 컴퓨팅 환경들에 대한 액세스를 제공하는 가상 머신들을 실행하는데 이용될 수 있다. 한 예시적인 실시예에서, 하이퍼바이저(들)(301)는 플로리다주 Fort Lauderdale의 Citrix Systems, Inc.에 의한 Citrix Hypervisor로서 구현될 수 있다. 한 예시적인 실시예에서, 게스트 운영 체제들이 실행될 수 있는 가상 머신 플랫폼을 생성하는 하이퍼바이저를 실행하는 디바이스(302)는 호스트 서버(302)라고 지칭된다.
하이퍼바이저(301)는 운영 체제(예를 들어, 제어 운영 체제(305) 및/또는 게스트 운영 체제(310))가 실행되는 하나 이상의 VM(306)을 생성할 수 있다. 예를 들어, 하이퍼바이저(301)는 운영 체제를 실행하는 VM(306)을 생성하기 위해 가상 머신 이미지를 로드한다. 하이퍼바이저(301)는 하드웨어 계층(307)의 추상화를 갖는 VM(306)을 제공하거나, 및/또는 하드웨어 계층(307)의 물리적 능력들이 VM들(306)에게 제공되는 방법을 제어할 수 있다. 예를 들어, 하이퍼바이저(들)(301)는 복수의 물리적 컴퓨팅 디바이스에 걸쳐 분산된 자원 풀(pool)을 관리할 수 있다.
일부 실시예에서, VM들(306) 중 하나(예를 들어, 제어 운영 체제(305)를 실행하는 VM)는, 예를 들어 VM의 실행 및/또는 종료를 관리하거나 및/또는 VM으로의 가상 자원들의 할당을 관리함으로써 다른 VM들(306)을 관리하고 구성할 수 있다. 다양한 실시예에서, VM들은, 예를 들어 하나 이상의 애플리케이션 프로그래밍 인터페이스(API), 공유된 메모리, 및/또는 기타의 기술들을 통해 하이퍼바이저(들)(301) 및/또는 다른 VM들과 통신할 수 있다.
일반적으로, VM(306)은 디바이스(302)의 사용자에게 가상화된 컴퓨팅 환경(300) 내의 자원들, 예를 들어 하나 이상의 프로그램, 애플리케이션, 문서, 파일, 데스크탑 및/또는 컴퓨팅 환경, 또는 기타 자원에 대한 액세스를 제공할 수 있다. 일부 실시예에서, VM들(306)은 자신들이 가상 머신들(예를 들어, 하드웨어 가상 머신 또는 HVM)이라는 것을 인식하지 못하는 완전히 가상화된 VM들로서 구현될 수 있다. 다른 실시예들에서, VM은 자신이 가상 머신이라는 것을 인식하거나, 및/또는 VM은 반가상화된(PV; paravirtualized) VM으로서 구현될 수 있다.
도 3에서는 단일 가상화된 디바이스(302)를 포함하는 것으로 도시되어 있지만, 가상화된 환경(300)은 적어도 하나의 물리적 호스트가 가상 머신을 실행하는 시스템에서 복수의 네트워킹된 디바이스를 포함할 수 있다. VM이 실행되는 디바이스는 물리적 호스트 및/또는 호스트 머신이라고 지칭될 수 있다. 예를 들어, 기기(200)는, 추가적으로 또는 대안으로서, 클라이언트(102), 서버(106) 또는 기기(200) 등의, 임의의 컴퓨팅 디바이스 상의 가상화된 환경(300)에서 구현될 수 있다. 가상 기기들은, 기기(200)와 관련하여 설명된 것과 유사하게, 가용성, 성능, 건강 모니터링, 캐싱 및 압축, 접속 멀티플렉싱 및 풀링 및/또는 보안 처리(예를 들어, 방화벽, VPN, 암호화/암호해독 등)를 위한 기능을 제공할 수 있다.
일부 실시예에서, 서버는, 예를 들어 다중 코어 처리 시스템의 다양한 코어 및/또는 복수의 프로세서 디바이스의 다양한 프로세서 상에서 복수의 가상 머신(306)을 실행할 수 있다. 예를 들어, 본원에서는 일반적으로 "프로세서들"로 도시되지만(예를 들어, 도 1c, 2 및 3), 프로세서들 중 하나 이상은 다중 스레드 병렬 아키텍쳐 및/또는 다중 코어 아키텍쳐를 제공하기 위해 단일- 또는 다중-코어 프로세서로서 구현될 수 있다. 각각의 프로세서 및/또는 코어는, 그 프로세서/코어에 의해서만 액세스할 수 있는 개인적 또는 로컬 이용을 위해 배정되거나 할당된 메모리를 갖거나 이용할 수 있고, 및/또는 공용의 또는 복수의 프로세서/코어에 의해 공유되고 액세스가능한 메모리를 갖거나 이용할 수 있다. 이러한 아키텍쳐들은, 하나 이상의 프로세서 및/또는 하나 이상의 코어에 걸친, 작업, 태스크, 부하 또는 네트워크 트래픽 분산을 허용할 수 있다(예를 들어, 기능 병렬화, 데이터 병렬화, 흐름 기반 데이터 병렬화 등에 의해).
또한, 물리적 프로세서/코어의 형태로 구현되는 코어들의 기능 대신에(또는 이에 추가하여), 이러한 기능은 클라이언트(102), 서버(106) 또는 기기(200) 상의 가상화된 환경(예를 들어, 300)에서 구현되어, 컴퓨팅 디바이스들의 클러스터, 서버 팜 또는 컴퓨팅 디바이스들의 네트워크 등의 복수의 디바이스에 걸쳐 기능이 구현될 수 있다. 다양한 프로세서/코어는, 코어 투 코어 메시징, 공유된 메모리, 커널 API들 등의 다양한 인터페이스 기술을 이용하여 서로 인터페이스하거나 통신할 수 있다.
복수의 프로세서 및/또는 복수의 프로세서 코어를 이용하는 실시예들에서, 설명된 실시예들은 예를 들어 코어들에 걸친 흐름들을 밸런싱하기 위해 코어들 또는 프로세서들에 데이터 패킷들을 분배할 수 있다. 예를 들어, 패킷 분배는, 각각의 코어, 소스 및 목적지 주소에 의해 수행되는 기능들의 결정들, 및/또는 연관된 코어의 부하가 미리결정된 임계값을 초과하는지; 연관된 코어의 부하가 미리결정된 임계값 미만인지; 연관된 코어의 부하가 다른 코어들의 부하보다 작은지; 또는 프로세서의 부하량에 부분적으로 기초하여 데이터 패킷들을 포워딩할 위치를 결정하는데 이용할 수 있는 기타 임의의 메트릭에 기초할 수 있다.
예를 들어, 네트워크 내의 복수의 프로세서/코어를 이용해 패킷들을 처리하기 위해, 데이터 패킷들은 수신측 스케일링(RSS; receive-side scaling)을 이용하여 코어들 또는 프로세스들에 분산될 수 있다. RSS는 일반적으로 패킷들의 순차적 전달을 유지하면서 패킷 처리가 복수의 프로세서/코어에 걸쳐 밸런싱되는 것을 허용한다. 일부 실시예에서, RSS는 해싱 방식(hashing scheme)을 이용하여 패킷을 처리하기 위한 코어 또는 프로세서를 결정할 수 있다.
RSS는, 일련의 값들 등의, 임의의 유형 및 형태의 입력으로부터 해시들을 생성할 수 있다. 이러한 일련의 값들은, 네트워크 패킷의 임의의 헤더, 필드 또는 페이로드 등의, 네트워크 패킷의 임의의 부분을 포함할 수 있고, 주소들 및 포트들 등의, 네트워크 패킷 또는 데이터 흐름과 연관된 정보의 임의의 튜플(tuple)을 포함할 수 있다. 해시 결과 또는 그 임의의 부분은, 예를 들어 해시 테이블, 간접 테이블, 또는 기타의 맵핑 기술을 통해 네트워크 패킷을 분배하기 위한 프로세서, 코어, 엔진 등을 식별하는데 이용될 수 있다.
D. 분산형 클러스터 아키텍쳐를 제공하기 위한 시스템들 및 방법들
도 1a 및 도 1b에서는 단일 기기인 것으로 도시되어 있지만, 기기들(200)은 하나 이상의 분산형 또는 클러스터형 기기들로서 구현될 수 있다. 개개의 컴퓨팅 디바이스 또는 기기는 클러스터의 노드라고 지칭될 수 있다. 중앙집중형 관리 시스템은, 부하 밸런싱, 분배, 구성 또는 기타의 태스크를 수행하여 노드들이 단일 컴퓨팅 시스템으로서 연계하여 동작하는 것을 허용한다. 이러한 클러스터는 단일 가상 기기 또는 컴퓨팅 디바이스로 간주될 수 있다. 도 4는 예시적인 컴퓨팅 디바이스 클러스터 또는 기기 클러스터(400)의 블록도를 도시한다. 복수의 기기(200) 또는 기타의 컴퓨팅 디바이스(예를 들어, 노드들)는 단일 클러스터(400)로 결합될 수 있다. 클러스터(400)는, 기기들(200 및/또는 205)의 많은 기능을 수행하기 위해, 애플리케이션 서버, 네트워크 스토리지 서버, 백업 서비스, 또는 기타 임의 유형의 컴퓨팅 디바이스로서 동작할 수 있다.
일부 실시예에서, 클러스터(400)의 각각의 기기(200)는, 본원에서 설명된 바와 같이, 다중 프로세서 및/또는 다중 코어 기기로서 구현될 수 있다. 클러스터가 클러스터의 노드들에 패킷들을 분배하고 각각의 노드는 패킷들을 처리를 위해 노드의 프로세서들/코어들에 분배한다면, 이러한 실시예들은 하나의 기기에서 2-계층 분배 시스템을 이용할 수 있다. 많은 실시예에서, 클러스터(400)의 기기들(200) 중 하나 이상은, 주어진 섀시, 랙 및/또는 데이터 센터의 블레이드 서버 또는 랙 장착 디바이스 그룹 등의, 물리적으로 그룹화되거나 지리적으로 서로 근접할 수 있다. 일부 실시예에서, 클러스터(400)의 기기들(200) 중 하나 이상은 지리적으로 분산될 수 있고, 본원에서 기기들(200)은 물리적으로 또는 지리적으로 함께 위치해 있지 않다. 이러한 실시예들에서, 지리적으로 원격의 기기들은 전용 네트워크 접속 및/또는 VPN에 의해 결합될 수 있다. 지리적으로 분산된 실시예들에서, 부하 밸런싱은 또한, 지리적으로 원격의 기기들 사이의 통신 레이턴시를 감안할 수 있다.
일부 실시예에서, 클러스터(400)는, 물리적 그룹이 아니라, 공통 구성, 관리 및 목적을 통해 그룹화된, 가상 기기로서 간주될 수 있다. 예를 들어, 기기 클러스터는 하나 이상의 서버에 의해 실행되는 복수의 가상 머신 또는 프로세스를 포함할 수 있다.
도 4에 도시된 바와 같이, 기기 클러스터(400)는, 예를 들어 클라이언트들(102)과 기기 클러스터(400) 사이에서 데이터를 전송하기 위해, 클라이언트 데이터 평면(Client Data Plane; 402)을 통해 제1 네트워크(104(1))에 결합될 수 있다. 클라이언트 데이터 평면(402)은, 클러스터(400)의 노드들에 트래픽을 분배하기 위해 클러스터(400) 내부 또는 외부의 스위치, 허브, 라우터, 또는 기타의 유사한 네트워크 디바이스로서 구현될 수 있다. 예를 들어, 트래픽 분배는, 다음 홉들이 클러스터의 기기들 또는 노드들로 구성되는 동일-비용 다중-경로 라우팅(ECMP; equal-cost multi-path), OSPF(Open-Shortest Path First), 스테이트리스 해시 기반의 트래픽 분배, 링크 집결(LAG) 프로토콜들, 또는 기타 임의의 유형 및 형태의 흐름 분산, 부하 밸런싱 및 라우팅에 기초하여 수행될 수 있다.
기기 클러스터(400)는 서버 데이터 평면(Server Data Plane, 404)을 통해 제2 네트워크(104(2))에 결합될 수 있다. 클라이언트 데이터 평면(402)과 유사하게, 서버 데이터 평면(404)은, 클러스터(400)의 내부 또는 외부에 있을 수 있는 스위치, 허브, 라우터, 또는 기타의 네트워크 디바이스로서 구현될 수 있다. 일부 실시예에서, 클라이언트 데이터 평면(402) 및 서버 데이터 평면(404)은 단일 디바이스로 병합되거나 결합될 수 있다.
일부 실시예에서, 클러스터(400)의 각각의 기기(200)는 내부 통신 네트워크 또는 후방 평면(Back Plane, 406)을 통해 접속될 수 있다. 후방 평면(406)은, 트래픽의 노드간 포워딩, 및/또는 관리자 또는 사용자로부터 클러스터(400)로의 구성 및 제어 트래픽의 전달을 위해, 노드간 또는 기기간 제어 및 구성 메시지를 인에이블할 수 있다. 일부 실시예에서, 후방 평면(406)은, 물리적 네트워크, VPN 또는 터널, 또는 이들의 조합일 수 있다.
E. 서비스 그래프 기반 플랫폼 및 기술
이제 도 5a 내지 도 5c를 참조하여, 서비스 그래프 기반 플랫폼 및 기술을 위한 시스템들 및 방법들의 구현이 논의될 것이다. 서비스 그래프는 컴포넌트들 및 네트워크 요소들의 토폴로지에 의해 서비스를 시각화하는데 유용한 기술 도구이다. 서비스는 마이크로서비스들로 구성될 수 있고, 각각의 마이크로서비스는 그 서비스의 하나 이상의 특정한 기능 집합을 처리한다. 네트워크 트래픽은, 클라이언트가 서비스에 액세스하기 위해 서버와 통신하는 것 등의 서비스 토폴로지를 통과할 수 있다(예를 들어, 남북 트래픽). 서비스의 네트워크 트래픽은, 데이터 센터내 또는 데이터 센터들 사이 등의, 서비스들의 마이크로서비스들 사이에 전달되는 네트워크 트래픽을 포함할 수 있다(예를 들어, 동서 트래픽). 서비스 그래프는, 서비스를 제공하는데 이용되는 임의의 네트워크 요소들의 동작 및 성능뿐만 아니라 서비스의 이러한 네트워크 트래픽의 메트릭들을 식별하고 제공하는데 이용될 수 있다. 서비스 그래프들은 서비스에서의 문제들 및 그 문제를 야기하는 토폴로지 부분을 식별하고 결정하는데 이용될 수 있다. 서비스 그래프는 이러한 서비스들의 운용 성능을 개선하기 위해 서비스들의 운영, 관리 및 구성을 제공하는데 이용될 수 있다.
도 5a를 참조하여, 도 5b에 예시된 것들 등의, 서비스 그래프들을 위한 시스템의 구현이 설명될 것이다. 네트워크 디바이스(200, 205) 또는 서버(206) 등의, 네트워크 상의 디바이스는, 서비스 그래프 생성기 및 구성기(512), 서비스 그래프 디스플레이(514) 및 서비스 그래프 모니터(516)를 포함할 수 있다. 서비스 그래프 생성기 및 구성기(512)(일반적으로 서비스 그래프 생성기(512)라고 지칭됨)는, 서비스 그래프들(505A-N)을 생성 및/또는 구성하기 위해, 네트워크 내의 요소들의 토폴로지(510)와, 네트워크 및 그 요소들에 관련된 메트릭들(518)을 식별할 수 있다. 서비스 그래프들(505A-N)(일반적으로 서비스 그래프들(505)이라고 지칭됨)은, 메트릭(518') 및/또는 토폴로지(510') 중 임의의 것과 함께 하나 이상의 데이터베이스에 저장될 수 있다. 서비스 그래프 생성기(512)는, 서비스 그래프 디스플레이(514)라고 지칭되는 생성된 사용자 인터페이스 등을 통해 디스플레이 또는 렌더링된 형태로 디스플레이될 서비스 그래프들(505)의 데이터를 생성할 수 있다. 서비스 그래프 모니터(516)는 메트릭(518)에 대해 토폴로지 및 서비스의 네트워크 요소들을 모니터링하여 서비스 그래프(505)를 구성 및 생성하거나 및/또는 서비스 그래프 디스플레이(514)의 또는 서비스 그래프 디스플레이(514)에 의해 표현되는 요소들 및 메트릭들(518)을 동적으로 또는 실시간으로 업데이트할 수 있다.
토폴로지(510)는, 본원에서 설명된 서비스들(275) 중 임의의 것 등의, 임의의 하나 이상의 서비스에 액세스하는데 이용되거나, 횡단되거나, 이러한 하나 이상의 서비스에 또는 그 일부에 포함된 임의의 요소를 식별하거나, 기술하거나, 명시하거나 기타의 방식으로 표현하는 데이터를 포함할 수 있다. 토폴로지는, 임의의 네트워크 디바이스들, 라우터들, 스위치들, 게이트웨이들, 프록시들, 기기들, 네트워크 접속들 또는 링크들, 인터넷 서비스 공급자들(ISP) 등을 포함한, 서비스들에 액세스하거나 이를 이용하기 위해 횡단되는 임의의 하나 이상의 네트워크 및 네트워크 요소를 식별하거나 기술하는 데이터를 포함할 수 있다 토폴로지는, 서비스 액세스에서 이용되거나 횡단되는 임의의 하나 이상의 애플리케이션, 소프트웨어, 프로그램, 서비스, 프로세스, 태스크 또는 기능을 식별하거나 기술하는 데이터를 포함할 수 있다. 일부 구현에서, 서비스는 복수의 마이크로서비스로 구성되거나 이를 포함할 수 있으며, 각각의 마이크로서비스는, 서비스의 또는 서비스를 위한, 하나 이상의 기능, 기능성 또는 동작을 제공한다. 토폴로지는, 서비스를 제공하는데 이용되는 프로그램들, 기능들, 애플리케이션들 또는 마이크로서비스들 등의, 서비스의 임의의 하나 이상의 컴포넌트를 식별하거나 기술하는 데이터를 포함할 수 있다. 토폴로지는, 토폴로지의 임의의 요소 등의, 토폴로지의 임의의 부분에 관한 파라미터들, 구성 데이터 및/또는 메타데이터를 포함할 수 있다.
서비스 그래프(505)는, 예를 들어 도 5b에 도시된 바와 같이 이러한 서비스를 구성하거나 서비스에 의해 이용되는 임의의 요소들 등의, 서비스(275)의 토폴로지를 나타내는 데이터를 포함할 수 있다. 서비스 그래프는 그래픽 형태의 노드들 등의 노드 기반 형태일 수 있고, 각각의 노드는 서비스의 토폴로지의 요소 또는 기능을 나타낸다. 서비스 그래프는, 호(arc)라고 지칭될 수 있는 다양한 커넥터 또는 링크를 통해 서로 접속된 노드들을 이용하여 서비스의 토폴로지를 나타낼 수 있다. 호는, 호에 의해 접속된 요소들 사이의 관계를 식별할 수 있다. 노드들 및 호들은 하나 이상의 서비스를 식별하거나 기술하는 방식으로 배열될 수 있다. 노드들 및 호들은 하나 이상의 서비스에 의해 제공되는 기능들을 식별하거나 기술하는 방식으로 배열될 수 있다. 예를 들어, 기능 노드는, 변환(SSL 종료, VPN 게이트웨이), 필터(방화벽들) 또는 터미널(침입 탐지 시스템) 등의, 트래픽에 적용되는 기능을 나타낼 수 있다. 서비스 그래프 내의 기능은 하나 이상의 파라미터를 이용하고 하나 이상의 커넥터를 가질 수 있다.
서비스 그래프는, 서비스, 토폴로지 또는 그 일부분들을 나타내는 노드들 및 호들의 임의의 조합을 포함할 수 있다. 노드들 및 호들은, 서비스의 물리적 및/또는 논리적 배치와 서비스에 액세스하는데 이용되는 임의의 요소를 식별하거나 기술하는 방식으로 배열될 수 있다. 노드들 및 호들은, 서비스에 액세스하거나 서비스를 이용할 때 네트워크 트래픽의 흐름을 식별하거나 기술하는 방식으로 배열될 수 있다. 노드들 및 호들은, 서비스의 기능을 제공하기 위해 서로 통신하는 복수의 마이크로서비스 등의 서비스의 컴포넌트들을 식별하거나 기술하는 방식으로 배열될 수 있다. 서비스 그래프는, 서비스 그래프 생성기가 메모리에서 서비스 그래프를 생성하거나 및/또는 서비스 그래프를 디스플레이 형태(514)로 렌더링하기 위한 방식으로 데이터베이스 등의 스토리지에 저장될 수 있다.
서비스 그래프 생성기(512)는, 서비스 그래프(505)를 확립, 생성, 발생, 구현, 구성 또는 업데이트하기 위한 애플리케이션, 프로그램, 라이브러리, 스크립트, 서비스, 프로세스, 태스크 또는 임의의 유형 및 형태의 실행가능한 명령어들을 포함할 수 있다. 서비스 그래프 생성기는 서비스 그래프를 나타내는 데이터를 판독하거나 및/또는 데이터베이스, 파일 또는 다른 유형의 스토리지에 기입할 수 있다. 서비스 그래프 생성기는, 메모리 내에 서비스 그래프의 전자적 표현을 갖도록 노드들 및 호들의 배열을 구성하기 위한 로직, 기능들 및 동작들을 포함할 수 있다. 서비스 그래프 생성기는, 업데이트되거나 수정될 수 있는 서비스 그래프의 노드 기반 표현을 제공하거나 구현하기 위해 데이터베이스 내의 데이터를 판독하거나 액세스하고 데이터를 데이터 구조들 및 메모리 요소들에 저장할 수 있다. 서비스 그래프 생성기는 토폴로지로부터의 임의의 정보를 이용하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 토폴로지 또는 그 임의의 부분들을 식별하기 위해 네트워크 호출들을 하거나 발견 프로토콜들을 이용할 수 있다. 서비스 그래프 생성기는, 서비스 그래프를 생성하기 위해, 메모리 또는 스토리지 내의 또는 기타의 디바이스들로부터 등의, 임의의 메트릭들을 이용할 수 있다. 서비스 그래프 생성기는, 디스플레이 디바이스의 사용자 인터페이스 등에 서비스 그래프의 그래픽 또는 시각적 표현을 제공하기 위해, 노드들 및 호들의 배열을 구성하기 위한 로직, 기능들 및 동작들을 포함할 수 있다. 서비스 그래프 생성기는, 노드 또는 호에 의해 표현되는 대응하는 또는 기저 요소의 구성 또는 파라미터를 나타내도록 서비스 그래프의 임의의 노드 또는 호를 구성하기 위한 로직, 기능들 및 동작들을 포함할 수 있다. 서비스 그래프 생성기는, 서비스 그래프 디스플레이의 노드들 및 호들의 배열과 관련하여 또는 그 일부로서 메트릭들을 포함, 식별 또는 제공하기 위한 로직, 기능들 및 동작들을 포함할 수 있다. 서비스 그래프 생성기는, 서비스 그래프를 생성, 수정 또는 상호작용하기 위한 프로그램들, 애플리케이션들, 서비스들, 태스크들, 프로세스들 또는 시스템들을 위한 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있다.
서비스 그래프 디스플레이(514)는, 임의의 유형 및 형태의 디스플레이 디바이스 상에 렌더링 또는 디스플레이하기 위한 서비스 그래프(505)의 임의의 그래픽 또는 전자적 표현을 포함할 수 있다. 서비스 그래프 디스플레이는, 각각의 요소들의 상태 또는 상황을 나타내기 위해 서비스 그래프의 노드들 및 호들의 임의 유형의 색상, 형상, 크기 또는 기타의 그래픽 표시자를 갖는 시각적 형태로 렌더링될 수 있다. 서비스 그래프 디스플레이는, 하나 이상의 메트릭의 상태 또는 상황을 나타내기 위해 서비스 그래프의 노드들 및 호들의 임의 유형의 색상, 형상, 크기 또는 기타의 그래픽 표시자를 갖는 시각적 형태로 렌더링될 수 있다. 서비스 그래프 디스플레이는, 서비스 그래프의 시각적 형태를 제공하는, 대시보드 등의, 임의의 유형의 사용자 인터페이스를 포함할 수 있다. 서비스 그래프 디스플레이는, 사용자들이 서비스 그래프와 상호작용, 인터페이싱 또는 조작하는 것을 허용하는 임의의 유형 및 형태의 사용자 인터페이스 요소들을 포함할 수 있다. 서비스 그래프 디스플레이의 일부는, 서비스 그래프의 그 부분에 관한 메트릭들 또는 토폴로지 정보 등의 정보를 식별하기 위해 선택될 수 있다. 서비스 그래프 디스플레이의 부분들은, 사용자가, 요소의 구성 또는 파라미터를 수정하는 것과 같은, 서비스 그래프 또는 그 일부에 관해 조치를 취하기 위한 사용자 인터페이스 요소들을 제공할 수 있다.
서비스 그래프 모니터(518)는, 토폴로지(510)의 메트릭들(518)을 수신, 식별, 처리하기 위한 애플리케이션, 프로그램, 라이브러리, 스크립트, 서비스, 프로세스, 태스크 또는 임의의 유형 및 형태의 실행가능한 명령어들을 포함할 수 있다. 서비스 그래프 모니터(518)는 메트릭들(518)을 통해 서비스 그래프들 요소의 구성, 성능 및 동작을 모니터링한다. 서비스 그래프 모니터는 네트워크 상의 하나 이상의 디바이스로부터 메트릭들을 획득할 수 있다. 서비스 그래프 모니터는 서비스 그래프 모니터의 디바이스(들)를 가로지르는 네트워크 트래픽으로부터 메트릭들을 식별하거나 생성할 수 있다. 서비스 그래프 모니터는, 서비스 그래프에서 노드에 의해 표현되는 임의의 요소들 등의, 토폴로지의 임의의 요소로부터 메트릭들의 보고서들을 수신할 수 있다. 서비스 그래프 모니터는 서비스로부터 메트릭들의 보고서들을 수신할 수 있다. 메트릭들로부터, 서비스 그래프 모니터는, 서비스 그래프의 노드 등에 의해, 서비스 그래프에서 표현되거나 또는 서비스 그래프에 의해 표현된 요소의 상태, 상황 또는 조건을 결정할 수 있다. 메트릭들로부터, 서비스 그래프 모니터는, 서비스 그래프의 호 등에 의해, 서비스 그래프에서 표현되거나 서비스 그래프에 의해 표현되는 접속된 네트워크 또는 네트워크 트래픽의 상태, 상황 또는 조건을 결정할 수 있다. 서비스 그래프 생성기 및/또는 서비스 그래프 모니터는, 노드 또는 호, 노드 또는 호에 의해 표현된 요소, 서비스, 네트워크 또는 토폴로지를 가로지르는 네트워크 트래픽의 상태, 상황 또는 조건에서의 임의의 변화 또는 임의의 메트릭들과 함께, 지속적으로 또는 미리결정된 빈도로 또는 이벤트 기반 등으로, 서비스 그래프 디스플레이를 업데이트할 수 있다.
메트릭들(518, 518')(일반적으로 메트릭들(518)이라고 지칭됨)은, 메모리 또는 스토리지 등의, 도 5b의 네트워크 디바이스에 저장될 수 있다. 메트릭들(518, 518')은, 동일한 디바이스 상의 데이터베이스에, 또는 네트워크를 통해 서버 등의 또 다른 디바이스에 저장될 수 있다. 메트릭들은, 토폴로지, 서비스 또는 네트워크의 임의의 요소에 대한 임의의 유형 및 형태의 측정값을 포함할 수 있다. 메트릭들은, 노드 또는 호에 의해 표현되는 네트워크 요소를 횡단하거나 수신되거나 전송된 요청들 또는 응답들의 볼륨, 레이트 또는 타이밍에 관한 메트릭들을 포함할 수 있다. 메트릭들은, 메모리, 대역폭 등의, 노드 또는 호에 의해 표현되는 요소에 의한 자원 이용에 관한 메트릭들을 포함할 수 있다. 메트릭들은, 응답 레이트, 트랜잭션 응답들 및 시간들 등의, 서비스의 임의의 컴포넌트들 또는 마이크로서비스들을 포함한, 서비스의 성능 및 운용에 관한 메트릭들을 포함할 수 있다.
도 5b는, 동서 네트워크 트래픽 및 남북 네트워크 트래픽의 관점에서, 서비스의 마이크로서비스들과 관련한 서비스 그래프의 구현을 나타낸다. 간략한 개요에서, 클라이언트들(102)은, 하나 이상의 네트워크들(104)을 통해, 하나 이상의 서비스(275A-275N)(일반적으로 서비스들(275)이라고 지칭됨)를 제공하는 서버들(106A-106N)(일반적으로 서버들(106)이라고 지칭됨)을 갖는 데이터 센터에 액세스할 수 있다. 서비스들은 복수의 마이크로서비스(Micro services; MS, 575A-575N)(일반적으로 마이크로서비스 또는 마이크로서비스(575)라고 지칭됨)로 구성될 수 있다. 서비스(275A)는 마이크로서비스(575A 및 575N)를 포함할 수 있는 반면 서비스(275B)는 마이크로서비스(575B 및 575N)를 포함할 수 있다. 마이크로서비스들은 애플리케이션 프로그래밍 인터페이스(API)를 통해 마이크로서비스들간에 통신할 수 있다. 서비스 그래프(505)는, 동서 네트워크 트래픽 및 남북 네트워크 트래픽 등의, 네트워크 트래픽에 관한 메트릭들 및 서비스들의 토폴로지를 나타낼 수 있다.
남북 네트워크 트래픽은 일반적으로, 도 5b에 도시된 바와 같이, 클라이언트들과 서버들 사이의, 예를 들어, 네트워크들(104)을 통해 클라이언트로부터 데이터 센터의 서버들로의 및/또는 서버들로부터 네트워크(104)를 통해 클라이언트들로의 네트워크 트래픽을 기술하고 이에 관련된다. 동서 네트워크 트래픽은 일반적으로, 데이터 센터들 내의 요소들 사이의, 예를 들어, 데이터 센터로부터 데이터 센터로, 서버로부터 서버로, 서비스로부터 서비스로 또는 마이크로서비스로부터 마이크로서비스로의 네트워크 트래픽을 기술하고 이와 관련된다.
서비스(275)는 마이크로서비스들(575)을 포함할 수 있다. 일부 양태에서, 마이크로서비스들은, 애플리케이션들이, 하나의 전체 또는 단일의 애플리케이션(종종 모놀리식 애플리케이션이라고 지칭됨)이 아니라, 상이한 더 작은 서비스들의 모음으로서 구축되는 서비스-지향형 아키텍쳐 스타일의 한 형태이다. 모놀리식 애플리케이션 대신에, 서비스는, 자체적으로 실행될 수 있고 상이한 코딩 또는 프로그래밍 언어들을 이용하여 생성될 수 있는 수개의 독립된 애플리케이션들 또는 서비스들(예를 들어, 마이크로서비스들)을 갖는다. 따라서, 더 큰 서버는, 자체적으로 실행가능한 더 간단하고 독립적인 프로그램들 또는 서비스들로 구성될 수 있다. 이들 더 작은 프로그램들 또는 서비스들은 함께 그룹화되어 더 큰 서비스의 기능들을 전달한다. 일부 양태에서, 마이크로서비스 기반 서비스는, 느슨하게 결합될 수 있는(loosely coupled) 서비스들의 모음으로서 애플리케이션을 구조화한다. 서비스를 상이한 더 작은 서비스들로 분해하는 이점은 모듈성을 향상시킨다는 것이다. 이것은, 애플리케이션 또는 서비스를, 더 쉽게 이해하고, 개발하고, 테스트하고, 아키텍쳐 또는 배치에서의 변경에 대해 탄력적으로 대처할 수 있게 한다.
마이크로서비스는 하나 이상의 기능 또는 기능성의 구현을 포함한다. 마이크로서비스는, 애플리케이션 프로그래밍 인터페이스(API) 등의, 명확하거나 확립된 인터페이스들을 갖는 자립적인 비즈니스 기능(들)일 수 있다. 일부 구현에서, 마이크로서비스는 가상 머신 또는 컨테이너에 배치될 수 있다. 서비스는, 하나의 마이크로서비스 상의 하나 이상의 기능을 이용하고 상이한 마이크로서비스의 또 다른 하나 이상의 기능을 이용할 수 있다. 서비스를 운용하거나 실행할 때, 하나의 마이크로서비스는 또 다른 마이크로서비스에 대한 API 호출을 할 수 있고 마이크로서비스는, API 호출, 이벤트 핸들러 또는 기타의 인터페이스 메커니즘을 통해 응답을 제공할 수 있다. 마이크로서비스를 운용하거나 실행할 때, 마이크로서비스는 또 다른 마이크로서비스에 대한 API 호출을 할 수 있고, 또 다른 마이크로서비스는, 그 동작 또는 실행시에, 또 다른 마이크로서비스를 호출하는 등등의 방식이다.
서비스 그래프(505)는 하나 이상의 호(572A-572N)를 통해 접속되거나 링크된 복수의 노드(570A-N)를 포함할 수 있다. 서비스 그래프는 상이한 유형들의 노드들을 가질 수 있다. 노드 유형은, 서버, 클라이언트, 기기 또는 네트워크 디바이스 등의, 물리적 네트워크 요소를 나타내는데 이용될 수 있다. 노드 유형은, 클라이언트 또는 서버 등의, 말단 포인트(end point)를 나타내는데 이용될 수 있다. 노드 유형은, 클라이언트 또는 서버 그룹 등의, 말단 포인트 그룹을 나타내는데 이용될 수 있다. 노드 유형은, 기술, 소프트웨어 또는 서비스의 유형 또는 요소들의 그룹화 또는 서브그룹화 등의, 논리적 네트워크 요소를 나타내는데 이용될 수 있다. 노드 유형은, 토폴로지의 요소에 의해 또는 서비스에 의해 제공될 기능성 등의, 기능 요소를 나타내는데 이용될 수 있다.
임의의 노드(570)의 구성 및/또는 표현은, 노드에 의해 표현되는 요소의 상태, 상황 및/또는 메트릭(들)을 식별할 수 있다. 노드의 그래픽 피처들은 노드에 의해 표현되는 요소의 동작 또는 성능 특성을 식별하거나 명시할 수 있다. 노드의 크기, 색상 또는 형상은, 요소가 동작 중인지 활성인지의 동작 상태를 식별할 수 있다. 노드의 크기, 색상 또는 형상은, 요소의 에러 상태 또는 문제를 식별할 수 있다. 노드의 크기, 색상 또는 형상은, 네트워크 트래픽의 볼륨 레벨, 노드에 의해 표현되는 네트워크 요소를 횡단하거나 수신되거나 전송된 요청 또는 응답들의 볼륨을 식별할 수 있다. 노드의 크기, 색상 또는 형상은, 메모리, 대역폭, CPU 또는 스토리지 등의, 노드에 의해 표현되는 요소에 의한 자원의 이용 레벨을 식별할 수 있다. 노드의 크기, 색상 또는 형상은, 노드 또는 노드에 의해 표현되는 요소와 연관된 임의의 메트릭에 대한 임계값에 관한 상대성을 식별할 수 있다.
임의의 호(572)의 구성 및/또는 표현은, 호에 의해 표시되는 요소의 상태, 상황 및/또는 메트릭(들)을 식별할 수 있다. 호의 그래픽 피처들은, 호에 의해 표현되는 요소의 동작 또는 성능 특성을 식별하거나 명시할 수 있다. 노드의 크기, 색상 또는 형상은, 호에 의해 표현되는 네트워크 접속이 동작 중인지 활성인지의 동작 상태를 식별할 수 있다. 호의 크기, 색상 또는 형상은, 호와 연관된 접속의 에러 상태 또는 문제를 식별할 수 있다. 호의 크기, 색상 또는 형상은, 호와 연관된 네트워크 트래픽의 에러 상태 또는 문제를 식별할 수 있다. 호의 크기, 색상 또는 형상은, 네트워크 트래픽의 볼륨 레벨, 호에 의해 표현되는 네트워크 접속 또는 링크를 횡단하거나, 수신되거나, 전송된 요청 또는 응답들의 볼륨을 식별할 수 있다. 호의 크기, 색상 또는 형상은, 대역폭 등의, 호에 의해 표현되는 네트워크 접속 또는 트래픽에 의한 자원의 이용 레벨을 식별할 수 있다. 노드의 크기, 색상 또는 형상은, 호와 연관된 임의의 메트릭에 대한 임계값에 관한 상대성을 식별할 수 있다. 일부 구현에서, 호에 대한 메트릭은, 호당 트래픽 볼륨, 호당 레이턴시 또는 호당 에러율의 임의의 측정값을 포함할 수 있다.
이제 도 5c를 참조하면, 서비스 그래프를 생성하고 디스플레이하기 위한 방법의 한 구현이 설명될 것이다. 방법(580)의 간략한 개요에서, 단계 582에서, 하나 이상의 서비스의 구성 등을 위한 토폴로지가 식별된다. 단계 584에서, 서비스에 대한 등의, 토폴로지 요소들의 메트릭들이 모니터링된다. 단계 586에서, 서비스 그래프가 생성되고 구성된다. 단계 588에서, 서비스 그래프가 디스플레이된다. 단계 590에서, 서비스 또는 토폴로지의 구성, 동작 및 성능에서의 문제점들이 식별되거나 결정될 수 있다.
단계 582에서, 디바이스는 하나 이상의 서비스에 대한 토폴로지를 식별한다. 디바이스는, 데이터베이스 등의, 스토리지로부터 토폴로지(510)를 획득하거나, 액세스하거나 수신할 수 있다. 디바이스는, 사용자 등에 의해, 서비스를 위한 토폴로지로 구성될 수 있다. 디바이스는 네트워크를 통해 전달되는 하나 이상의 발견 프로토콜을 통해 토폴로지 또는 그 일부분들을 발견할 수 있다. 디바이스는 네트워크를 통해 하나 이상의 다른 디바이스로부터 토폴로지 또는 그 일부분을 획득하거나 수신할 수 있다. 디바이스는 하나 이상의 서비스를 구성하는 네트워크 요소들을 식별할 수 있다. 디바이스는 하나 이상의 서비스를 제공하는 기능들을 식별할 수 있다. 디바이스는 기능들을 제공하는 다른 디바이스들 또는 네트워크 요소들을 식별할 수 있다. 디바이스는 북서 트래픽에 대한 네트워크 요소들을 식별할 수 있다. 디바이스는 동서 트래픽에 대한 네트워크 요소들을 식별할 수 있다. 디바이스는 서비스를 제공하는 마이크로서비스들을 식별할 수 있다. 일부 구현에서, 서비스 그래프 생성기는 토폴로지에 기초하여 서비스 그래프를 확립하거나 생성한다. 서비스 그래프는 메모리 또는 스토리지에 저장될 수 있다.
단계 584에서, 서비스 등에 대한, 토폴로지 요소들의 메트릭들이 모니터링된다. 디바이스는 다른 디바이스들로부터 토폴로지의 하나 이상의 네트워크 요소에 관한 메트릭들을 수신할 수 있다. 디바이스는 디바이스를 횡단하는 네트워크 트래픽으로부터 메트릭들을 결정할 수 있다. 디바이스는, 보고서들 또는 이벤트들을 통해서 등에 의해, 토폴로지의 네트워크 요소들로부터 메트릭들을 수신할 수 있다. 디바이스는 서비스를 모니터링하여 서비스에 관한 메트릭들을 획득하거나 수신할 수 있다. 메트릭들은, 메모리 또는 저장소에, 예를 들어 대응하는 서비스 그래프와 연관하여 저장될 수 있다. 디바이스는, 하나 이상의 메트릭을 서비스 그래프의 대응하는 노드와 연관시킬 수 있다. 디바이스는, 하나 이상의 메트릭을 서비스 그래프의 대응하는 호와 연관시킬 수 있다. 디바이스는 스케쥴링된 또는 미리결정된 빈도로 메트릭들을 모니터링 및/또는 획득 및/또는 수신할 수 있다. 디바이스는, 메트릭들이 변경될 때, 지속적으로, 예를 들어, 실시간으로 또는 동적으로, 메트릭들을 모니터링 및/또는 획득 및/또는 수신할 수 있다.
단계 586에서, 서비스 그래프가 생성되고 구성된다. 서비스 그래프 생성기는 적어도 토폴로지에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 적어도 서비스에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 복수의 서비스에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 적어도 서비스를 구성하는 마이크로서비스들에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는, 데이터 센터, 데이터 센터의 서버들 및/또는 데이터 센터의 서비스들에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 적어도 동서 트래픽 및 대응하는 네트워크 요소들에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는 적어도 남북 트래픽 및 대응하는 네트워크 요소들에 기초하여 서비스 그래프를 생성할 수 있다. 서비스 그래프 생성기는, 서비스 그래프의 노드 또는 호에 의해 표현되는 요소들에 관한 파라미터들, 구성 데이터 또는 메타데이터로 서비스 그래프를 구성할 수 있다. 서비스 그래프는 디바이스에 의해 자동으로 생성될 수 있다. 서비스 그래프는, 예를 들어 디바이스의 사용자 인터페이스 또는 디바이스에 대한 코멘트를 통한, 사용자에 의한 요청에 응답하여 생성될 수 있다.
단계 588에서, 서비스 그래프가 디스플레이된다. 디바이스는, 서비스 그래프 생성기를 통해서 등에 의해, 디스플레이 디바이스를 통해 디스플레이되거나 렌더링될, 예를 들어 사용자 인터페이스에 제공될, 서비스 그래프 디스플레이(514)를 생성할 수 있다. 서비스 그래프 디스플레이는, 노드 또는 호와 연관되거나 이에 대응하는 요소들의 상태, 상황 또는 조건을 식별하기 위해, 서비스 그래프의 노드들 및 호들의 시각적 표시자들 또는 그래픽 특성들(예를 들어, 크기, 형상 또는 색상)을 포함할 수 있다. 서비스 그래프 디스플레이는, 사용자가 서비스 및 토폴로지의 상태를 모니터링할 수 있는 대시보드 또는 기타의 사용자 인터페이스를 통해 디스플레이되거나 제공될 수 있다. 서비스 그래프 디스플레이는, 서비스, 토폴로지 또는 그 임의의 요소들의 메트릭들 또는 상태, 상황 및/또는 조건에서 변경을 보여주도록 업데이트될 수 있다. 서비스 그래프 디스플레이를 통해, 사용자는, 서비스의 마이크로서비스 메트릭들 등의, 임의의 네트워크 요소에 관한 정보, 데이터 및 상세사항을 발견하기 위해 서비스 그래프와 인터페이스하거나 상호작용할 수 있다.
단계 590에서, 서비스 또는 토폴로지의 구성, 동작 및 성능에서의 문제점들이 식별되거나 결정될 수 있다. 디바이스는 서비스의 메트릭들을 임계값들과 비교함으로써 서비스의 구성, 동작 또는 성능과 연관된 문제들을 결정할 수 있다. 디바이스는 서비스의 메트릭들을 이전 또는 이력 값들과 비교함으로써 서비스의 구성, 동작 또는 성능에서의 연관된 문제들을 결정할 수 있다. 디바이스는 메트릭에서의 변경을 식별함으로써 서비스의 구성, 동작 또는 성능에서의 문제들을 결정할 수 있다. 디바이스는, 노드 또는 호, 또는 노드 또는 호에 의해 표현되는 요소들의 상태, 상황 또는 조건에서의 변경을 식별함으로써 서비스의 구성, 동작 또는 성능에서의 문제들을 결정할 수 있다. 디바이스는 서비스 그래프의 구성 및/또는 파라미터들을 변경할 수 있다. 디바이스는 서비스의 구성을 변경할 수 있다. 디바이스는 토폴로지의 구성을 변경할 수 있다. 디바이스는 토폴로지 또는 서비스를 구성하는 네트워크 요소들의 구성을 변경할 수 있다. 사용자는 서비스 그래프 디스플레이 및 임의의 메트릭들을 검토, 탐색 또는 상호작용함으로써 서비스의 구성, 동작 또는 성능에서의 문제들을 결정할 수 있다. 사용자는 서비스 그래프의 구성 및/또는 파라미터들을 변경할 수 있다. 사용자는 서비스의 구성을 변경할 수 있다. 사용자는 토폴로지의 구성을 변경할 수 있다. 디바이스는 토폴로지 또는 서비스를 구성하는 네트워크 요소들의 구성을 변경할 수 있다.
F. 서비스 그래프의 누락된 노드 또는 링크들을 식별하기 위한 시스템들 및 방법들
본원에서 설명된 구현들은, 서비스(들) 및/또는 마이크로서비스들에 대응하는 네트워크 조건들을 모니터링하기 위한 도구를 제공할 수 있다. (관리자 등의) 사용자가 네트워크 사고를 사후적으로 진단하는 것이 아니라, 본원에서 설명된 시스템들 및 방법들은 사용자가 네트워크 조건들을 선제적으로 모니터링할 수 있는 도구를 제공할 수 있다. 사용자는, 네트워크 조건들에서 사고를 유발할 수 있는 네트워크 조건들의 변경을 식별할 수 있다. 따라서 관리자는 서비스 그래프로부터의 또는 서비스 그래프에서 표현되는 데이터(예를 들어, 메트릭들)에 기초하여 네트워크 조건들을 빠르고 효율적으로 모니터링할 수 있다. 본원에서 설명된 구현들은, 관리자가 다양한 시간에 마이크로서비스(들)에 대응하는 메트릭들을 관찰할 수 있는 시각적 지원을 제공함으로써, 서비스에 대응하는 마이크로서비스의 진단 및 모니터링의 효율성을 증가시킬 수 있다. 본원에서 설명된 구현들은, 관리자가 사고의 원인을 교정할 수 있는 더 빠른 메커니즘을 제공함으로써, 사고의 결과로 인한 가동중지 시간을 감소시킬 수 있다. 본원에서 설명된 실시예들의 다양한 다른 혜택들 및 이점들은 아래에서 더 상세히 설명된다.
이제 도 6a와 함께 도 5a 내지 5c를 참조하면, 서비스 그래프의 다운, 비활성 또는 누락된 네트워크 링크 또는 마이크로서비스를 식별하기 위한 시스템의 예시적인 구현이 도시되어 있다. 도 5a 내지 도 5c에 설명된 바와 같이, 디바이스(200)는 토폴로지(510)에 기초하여 서비스 그래프(505)를 생성하고 저장하는 서비스 그래프 생성기를 포함할 수 있다. 서비스 그래프 모니터(516)는, 누락된 네트워크 링크들 및 마이크로서비스들을 식별하는 등을 위해, 네트워크 및 요소에 관련된 네트워크 내의 요소들의 토폴로지(510) 및 메트릭들(518)을 모니터링할 수 있다. 서비스 그래프 모니터(516)는, 메트릭들(518)에 대해, API 호출 등을 통해 토폴로지의 네트워크 요소들 및 서비스를 모니터링하여, 서비스 그래프 디스플레이(514)의 서비스 그래프(505)의 또는 서비스 그래프(505)에 의해 표현된 요소들 및 메트릭들(518)을 동적으로 또는 실시간으로 업데이트하여, 다운, 비활성 또는 누락된 마이크로서비스들 또는 네트워크 링크들에 대응하는 서비스 그래프(505)의 임의의 노드들 또는 링크들을 식별할 수 있다.
일부 구현에서, 서비스 그래프 모니터(516)는, 서비스 그래프의 호들에 대응하는 임의의 네트워크 링크들을 누락, 다운 또는 비활성으로서 검출하고 식별하도록 구성되거나 및/또는 구현될 수 있다.
서비스 그래프 모니터(516)는, 마이크로서비스들에 대응하는 하나 이상의 노드들 사이의 또는 이들로 향하는 호들에 대응하는 링크들을 통해 네트워크 트래픽을 모니터링할 수 있다. 서비스 그래프 모니터(515)는, 에러로 인해 실패한 마이크로서비스에 대한 API 호출들 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터(515)는, 응답을 반환하지 않은 마이크로서비스에 대한 API 호출 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터(516)는 타임아웃된 마이크로서비스에 대한 API 호출들 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터(515)는 활성이 아닌 마이크로서비스에 대한 API 호출들 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터(515)는 다운된 마이크로서비스에 대한 API 호출들 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터(515)는, 실행 중이지만 동작적으로 또는 기능적으로 요청들을 처리하거나 응답하지 않는 마이크로서비스에 대한 API 호출들 등의 임의의 요청들을 식별할 수 있다. 서비스 그래프 모니터는, 네트워크 트래픽이 마이크로서비스로 전송되고 있거나 이로부터 전송되고 있다는 것, 또는 네트워크 트래픽이 존재하지 않는 또는 서비스 그래프 또는 서비스 그래프의 토폴로지에 의해 아직 식별되지 않은 애플리케이션, 서비스 또는 마이크로서비스에 대한 네트워크 링크를 통해 세션으로 전송되고 있다는 것을 식별할 수 있다.
서비스 그래프 모니터(516)는, 서비스 그래프의 호에 대응하는 임의의 링크들에서의 임의의 문제들을 식별하는 등을 위해, 서비스 그래프의 토폴로지를 통해 네트워크 트래픽을 전달하는데 이용되고 있는 임의의 디바이스의 네트워크 스택의 임의의 부분을 모니터링할 수 있다. 서비스 그래프 모니터는, 요청자와 마이크로서비스 사이의 또는 마이크로서비스들 사이의 TCP 접속 등의, 디바이스들 사이의 트랜스포트 계층 접속을 모니터링할 수 있다. 서비스 그래프 모니터는, 트랜스포트 계층 접속이 확립될 수 있는지 또는 확립되어 있는지의 여부를 검출할 수 있다. 서비스 그래프 모니터는, 트랜스포트 계층 접속 확립 요청이 에러를 유발하거나 반환하는지 여부를 검출할 수 있다. 서비스 그래프 모니터는, 확립된 트랜스포트 계층 접속을 통해 요청을 전송하는 것이 에러를 유발하거나 반환하는지 여부를 검출할 수 있다. 서비스 그래프 모니터는, 트랜스포트 계층 아래의 임의의 네트워크 상태, 상황 또는 조건을 모니터링하여, 네트워크 접속성 또는 네트워크 접속을 확립하거나 유지하거나 임의의 네트워크 링크를 통해 통신하는데 있어서 임의의 문제가 있는지를 결정할 수 있다. 서비스 그래프 모니터는, 서비스 그래프 또는 서비스 그래프의 토폴로지에 의해 아직 식별되지 않은 네트워크 링크를 통해 네트워크 트래픽이 전송되고 있거나 전송되었다는 것을 식별할 수 있다.
서비스 그래프 모니터는, 임의의 애플리케이션 계층 세션들 또는 트랜스포트 계층 위의 세션들을 모니터링하여 그 세션을 확립하거나 유지하는데 있어서 임의의 문제가 있는지를 결정할 수 있다. 서비스 그래프 모니터는, 임의의 애플리케이션 계층 네트워크 트래픽을 모니터링하여 세션이 에러 없이 확립되었는지를 결정할 수 있다. 서비스 그래프 모니터는, 임의의 애플리케이션 계층 네트워크 트래픽을 모니터링하여 에러 없이 확립된 세션을 통해 요청들이 전송될 있는지를 결정할 수 있다. 서비스 그래프 모니터는, 임의의 애플리케이션 계층 세션들 또는 트랜스포트 계층 위의 세션들을 모니터링하여, 세션을 통한 API 호출 등의, 요청들의 전송에 임의의 문제가 있는지를 결정할 수 있다. 서비스 그래프 모니터는 임의의 애플리케이션 계층 네트워크 트래픽을 모니터링하여, API 호출 등의 임의의 요청이 미지의 세션 또는 오래되거나 만료된 세션에 또는 이를 통해 전달되고 있는지를 결정할 수 있다. 서비스 그래프 모니터는 임의의 애플리케이션 계층 네트워크 트래픽을 모니터링하여 API 호출 등의 임의의 요청이 잘못된 마이크로서비스에 전달되고 있는지를 결정할 수 있다. 서비스 그래프 모니터는 임의의 애플리케이션 계층 네트워크 트래픽을 모니터링하여 API 호출 등의 임의의 요청이 비활성 또는 다운된 마이크로서비스에 전달되고 있는지를 결정할 수 있다. 서비스 그래프 모니터는, 존재하지 않는 세션, 또는 서비스 그래프 또는 서비스 그래프의 토폴로지에 의해 아직 식별되지 않은 애플리케이션, 서비스 또는 마이크로서비스에 대한 네트워크 링크를 통해 네트워크 트래픽이 마이크로서비스로 전송되고 있거나 이로부터 전송되고 있다는 것을 식별할 수 있다.
서비스 그래프 모니터는 임의의 네트워크 트래픽을 모니터링하여, 적어도 서비스 그래프와 연관된 토폴로지에 기초해, API 호출 등의 요청의 소스가 예상되는 소스로부터 나온 것인지 또는 예상 네트워크 링크를 통한 것인지를 결정할 수 있다. 서비스 그래프 모니터는, 요청이 예상되지 않은 소스로부터 오고 있다는 것을 식별하기 위해 요청의 소스 IP 주소, 소스 컴퓨터 정보 또는 소스 지리를 식별할 수 있다. 서비스 그래프 모니터는, 서비스 그래프와 연관된 토폴로지의 일부가 아닌 네트워크 링크를 통해 요청이 오고 있다는 것을 식별할 수 있다. 서비스 그래프 모니터는, 서비스 그래프의 토폴로지 외부 등의, 예상되지 않은 네트워크 링크를 통해 요청이 오고 있다는 것을 식별할 수 있다.
서비스 그래프 디스플레이 및/또는 서비스 그래프 생성기는, 임의의 하나 이상의 누락, 다운 또는 비활성 네트워크 링크들(호들) 및 노드들(마이크로서비스들)을 식별, 도시 또는 강조하도록 구성 및/또는 구현될 수 있다. 서비스 그래프 생성기는, 선택된 서비스 그래프의 토폴로지와, 서비스 그래프의 요소들 또는 서비스 그래프의 토폴로지를 모니터링한 결과들 사이의 임의의 차이점 또는 변경을 식별할 수 있다. 이들 차이 또는 변경들에 기초하여, 서비스 그래프 디스플레이 및/또는 서비스 그래프 생성기는, 이하의 도 6a에 예시된 바와 같이, 서비스 그래프에서 누락, 비활성 또는 다운된 노드들 및 호들을 식별할 수 있다. 서비스 그래프 디스플레이는, 활성 또는 누락되지 않은 노드들 및 호들에 비교하여 이러한 노드 또는 호를 대비시키거나 식별케하는 방식으로 이러한 노드 또는 호를 디스플레이함으로써, 누락, 다운 또는 비활성 노드들 또는 호들을 식별할 수 있다. 서비스 그래프 디스플레이는 점선이나 음영 또는 회색으로 표시된 효과 등의 그래픽 요소를 통해 누락된 노드 또는 호를 강조하거나 식별할 수 있다. 서비스 그래프 디스플레이는, 노드들 및/또는 호들이, 누락, 비활성 또는 다운으로서 식별되도록 한, 모니터링으로부터의 임의의 메트릭들, 에러 또는 기타의 정보를 포함하도록 생성될 수 있다.
이제 도 6a를 참조하면, 디바이스는 서비스 그래프 디스플레이(514)에 서비스 그래프(505)를 디스플레이하여, 임의의 누락, 비활성 또는 다운된 노드들(마이크로서비스들) 또는 호들(네트워크 링크들)을 식별하거나 강조할 수 있다. 간략한 개요에서, 서비스 그래프 디스플레이(514)는 하나 이상의 서비스를 구성하는 복수의 마이크로서비스를 갖는 서비스 그래프(505)를 디스플레이할 수 있다. 서비스 그래프는, 마이크로서비스들 사이의 접속들 또는 네트워크 트래픽을 보여주기 위해 호들에 의해 표현되는 네트워크 링크들을 포함할 수 있다. 서비스 그래프 디스플레이는, 임의의 누락된 링크들(호들)(605) 및/또는 임의의 비활성, 다운 또는 누락된 노드들(마이크로서비스들)(610)을 식별하거나 강조할 수 있다. 서비스 그래프 디스플레이는, 디바이스의 기능, 서비스 그래프 및 서비스 그래프 디스플레이 중 임의의 것과 상호작용하기 위한 사용자 인터페이스(600)를 포함할 수 있다.
서비스 그래프 디스플레이는 서비스 그래프에서 누락된 링크(들)(605)를 식별할 수 있다. 네트워크 링크가 모니터링을 통해 누락, 비활성 또는 다운된 것으로 식별되면, 디바이스는 서비스 그래프 디스플레이의 서비스 그래프 내의 그래픽 요소를 통해 그것을 식별할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 디스플레이에서 파선(들)으로 그려진 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 음영화된 라인 또는 회색 라인으로 디스플레이에 그려진 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는 크기, 형상 또는 색상의 그래픽 특성들에서의 변경을 수반하여 그려진 호에 의해 표현되어 호의 네트워크 링크가, 누락, 비활성 또는 다운된 것을 식별하거나 강조할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는 대응하는 텍스트 또는 마커들을 갖는 호에 의해 표현되어 호의 네트워크 링크가, 누락, 비활성 또는 다운된 것을 식별하거나 강조할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는 텍스트 또는 그래픽 요소로 마킹되거나 이를 갖는 호에서 식별되어 네트워크 링크의 상태, 상황 또는 조건을 식별할 수 있다.
서비스 그래프 디스플레이는, 서비스 그래프에서 누락된 노드(들)(610)를 식별할 수 있다. 마이크로서비스가 모니터링을 통해 마이크로서비스가 누락, 비활성 또는 다운된 것으로 식별되면, 디바이스는 서비스 그래프 디스플레이의 서비스 그래프 내의 그래픽 요소를 통해 그것을 식별할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는, 디스플레이에서 파선(들)으로 그려진 노드에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는, 음영화된 라인 또는 회색 라인으로 디스플레이에 그려진 노드에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는 크기, 형상 또는 색상의 그래픽 특성들에서의 변경을 수반하여 그려진 노드에 의해 표현되어 노드의 마이크로서비스가, 누락, 비활성 또는 다운된 것을 식별하거나 강조할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는 대응하는 텍스트 또는 마커들을 갖는 노드에 의해 표현되어 노드의 마이크로서비스가, 누락, 비활성 또는 다운된 것을 식별하거나 강조할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는 텍스트 또는 그래픽 요소로 마킹되거나 이를 갖는 노드에서 식별되어 마이크로서비스의 상태, 상황 또는 조건을 식별될 수 있다.
서비스 그래프 디스플레이의 사용자 인터페이스(600)는, 사용자가 서비스 그래프 디스플레이의 서비스 그래프와 상호작용, 수정 및/또는 저장할 수 있게 할 수 있다. 일부 실시예에서, 사용자 인터페이스는, 사용자가 모니터링 및/또는 디스플레이할 서비스 그래프를 선택하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는, 사용자가 서비스 그래프를 편집/수정 및/또는 저장하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는, 사용자가 노드 또는 호가 누락, 비활성 또는 다운되었음을, 주석부기, 마킹, 식별 또는 강조하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는, 사용자가, 누락되거나 비활성화 또는 다운된 노드 또는 호에 대한 원인, 코멘트 또는 기타의 메모를 주석부기, 마킹, 식별 또는 제공하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는, 사용자가, 노드 또는 호가 누락되지 않았거나 활성임을 주석부기, 마킹, 식별 또는 강조하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는, 노드 또는 호를 재부팅, 시작 또는 활성화하는 것 등의, 실행할 커맨드를 사용자 인터페이스를 통해 선택함으로써 사용자가 서비스 그래프의 요소들에 관한 커맨드들을 실행하기 위한 기능을 제공하고 액세스하도록 구성된다. 일부 실시예에서, 사용자 인터페이스는 사용자가 누락된 노드들 또는 호들 등의 서비스 그래프의 요소들에 관련된 메트릭들을 선택 및/또는 검토하기 위한 기능을 제공하고 액세스하도록 구성된다.
이제 도 6b를 참조하여, 복수의 마이크로서비스의 서비스 그래프를 식별하기 위한 방법의 예시적인 구현이 설명될 것이다. 방법(620)의 간략한 개요에서, 단계 625에서, 디바이스는, 모니터링할 서비스 그래프 등의 서비스 그래프를 식별한다. 단계 630에서, 디바이스는, 서비스 그래프에 관련된, 서비스들, 네트워크 조건들 등의, 토폴로지를 모니터링한다. 단계 635에서, 디바이스는 다운 또는 비활성인 서비스 그래프의 호 또는 노드에 대응하는 서비스 그래프의 네트워크 링크 또는 마이크로서비스를 결정한다. 단계(640)에서, 디바이스는 호 또는 노드가 다운 또는 비활성임을 식별하기 위해 서비스 그래프들을 디스플레이한다.
더 상세하게는, 단계 625에서, 디바이스는, 모니터링할 서비스 그래프 등의, 서비스 그래프를 식별한다. 디바이스는 서비스 그래프 또는 복수의 서비스 그래프를 모니터링하도록 구성될 수 있다. 디바이스는 서비스 그래프의 사용자 선택을 통해 서비스 그래프를 식별할 수 있다. 사용자는, 커맨드라인 인터페이스 또는 그래픽 사용자 인터페이스 등의, 디바이스의 사용자 인터페이스를 통해 서비스 그래프를 선택할 수 있다. 디바이스는, 기준 또는 정책 세트에 기초하여 모니터링할 서비스 그래프를 복수의 서비스 그래프로부터 식별할 수 있다. 디바이스는 현재 또는 과거 네트워크 트래픽에 기초하여 모니터링할 서비스 그래프를 식별할 수 있다. 예를 들어, 디바이스는 더 빈번한 모니터링을 위해 지난 7일 동안 가장 많이 이용한 서비스 그래프를 식별할 수 있다. 디바이스는 레이턴시에 기초하여 모니터링할 서비스 그래프를 식별할 수 있다. 예를 들어, 디바이스는 더 빈번한 모니터링을 위해 평균 레이턴시가 가장 높은 서비스 그래프를 식별할 수 있다. 디바이스는, 중요도에 의해 등급화된 것들에 기초하여 또는 우선순위에 기초하여 모니터링할 서비스 그래프를 식별할 수 있다. 예를 들어, 디바이스는 더 높거나 더 높은 우선순위로서 식별된 서비스 그래프를 더 자주 모니터링할 수 있다.
단계 630에서, 디바이스는 서비스 그래프에 관련된 서비스들, 네트워크 조건들 등의 토폴로지를 모니터링한다. 디바이스는 서비스 그래프의 노드들에 대응할 수 있는 마이크로서비스들을 모니터링할 수 있다. 디바이스는 서비스 그래프의 호들에 대응할 수 있는 링크들을 모니터링할 수 있다. 디바이스는 링크들에 걸친 및 마이크로서비스들 사이의 네트워크 트래픽을 모니터링한다. 마이크로서비스들 및 링크들을 모니터링하기 위해, 디바이스는 디바이스를 횡단하는 API 호출들을 모니터링할 수 있다. 디바이스는 복수의 마이크로서비스들 사이의 복수의 링크를 통해 API 호출들을 모니터링할 수 있다. 디바이스는 마이크로서비스에 대한 API 호출을 모니터링할 수 있으며, 본원에서 API 호출은 마이크로서비스에 도달하기 위해 디바이스 또는 링크들 중 하나를 횡단한다. 서비스 그래프 모니터는 또한, 다운, 비활성 또는 누락된 컴포넌트들을 초래하거나 유발하는 이벤트를 검출하는 등을 위해 API 호출의 레이트 및/또는 레이트에서의 변화를 모니터링할 수 있다. 서비스 그래프는, API 호출의 에러 수 또는 백분율 또는 API 호출의 타임아웃 횟수를 모니터링하여, 임의의 네트워크 링크 또는 마이크로서비스에서 등의, 서비스 그래프에서 다운, 비활성화, 또는 누락된 컴포넌트가 있다고 결정할 수 있다.
디바이스는, 누락되거나 다운된 링크들 또는 마이크로서비스들을 식별하기 위해 서비스 그래프를 가로지르는 네트워크 트래픽을 전달하는데 이용되는 임의의 디바이스의 네트워크 스택의 임의의 부분을 모니터링할 수 있다. 디바이스는, 확립된 트랜스포트 계층 접속을 통한 요청의 전송이 에러를 유발하거나 에러를 반환되는지를 검출할 수 있다. 디바이스는 트랜스포트 계층 아래의 임의의 네트워크 상태, 상황 또는 조건을 모니터링하여, 네트워크 접속을 확립하거나 유지하거나 또는 임의의 링크를 통해 통신하는데 문제가 있는지를 결정할 수 있다. 디바이스는, 네트워크 트래픽이 서비스 그래프 또는 서비스 그래프의 토폴로지에 의해 아직 식별되지 않은 네트워크 링크로부터 전송되고 있거나 이를 통해 전송되고 있다는 것을 식별할 수 있다.
단계 635에서, 디바이스는 다운 또는 비활성인 서비스 그래프의 호 또는 노드에 대응하는 서비스 그래프의 네트워크 링크 또는 마이크로서비스를 결정한다. 디바이스는, 마이크로서비스 또는 링크가 네트워크 트래픽의 적어도 일부를 수신하고 있지 않다고 디바이스가 결정하는 경우, 마이크로서비스들 중 하나 또는 링크들 중 하나가 다운이거나 비활성이라고 결정할 수 있다. 디바이스는, API 호출들로부터 에러 또는 타임아웃을 수신하는 것에 기초하여, 링크 또는 마이크로서비스가 비활성이라고 결정할 수 있다. 디바이스는, 에러들, 실패들, 레이턴시, 또는 네트워크 스택의 임의의 트랜스포트 또는 세션 계층과 연관된 기타의 문제들에 기초하여, 링크 또는 마이크로서비스가 비활성이라고 결정할 수 있다. 디바이스는, 실행 중이지만 동작적으로 또는 기능적으로 요청들을 처리하거나 응답하지 않는 마이크로서비스에 대한 API 호출들을 식별하는 것에 기초하여 마이크로서비스가 비활성이라고 결정할 수 있다. 디바이스는, 존재하지 않거나 서비스 그래프에 의해 아직 식별되지 않은 마이크로서비스로부터 또는 마이크로서비스로 네트워크 트래픽이 전송되고 있다는 것을 식별함으로써 누락되거나 비활성된 링크들 또는 마이크로서비스들을 식별할 수 있다.
디바이스는, 마이크로서비스가 시스템에 의해 더 이상 이용되지 않는다고 결정함으로써, 서비스 그래프의 호 또는 노드가 다운이거나 비활성이라고 결정할 수 있다. 예를 들어, 디바이스는, 마이크로서비스의 하나 이상의 API가 더 이상 호출되지 않는다는 결정의 결과로서 마이크로서비스가 다운이거나 비활성이라고 결정할 수 있다. 디바이스는, 마이크로서비스에 전송된 API 호출들이 실패인 경우 서비스 그래프의 호 또는 노드가 다운이거나 비활성인 것으로 결정할 수 있다.
단계 640에서, 디바이스는 마이크로서비스 또는 링크가 다운이거나 비활성임을 식별하기 위해 서비스 그래프들을 디스플레이한다. 디바이스는, 서비스 그래프에서 마이크로서비스들을 나타내는 하나 이상의 노드 또는 링크들을 나타내는 하나 이상의 호에 대한 하나 이상의 그래픽 특성을 변경함으로써, 노드 또는 호가, 비활성, 다운 또는 누락되었음을 디스플레이에서 식별할 수 있다. 일부 실시예에서, 누락, 비활성 또는 다운된 마이크로서비스는, 노드의 마이크로서비스가, 누락, 비활성 또는 다운된 것을 식별하거나 강조하기 위해, 대응하는 텍스트 또는 마커들을 갖는 노드에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는 텍스트 또는 그래픽 요소로 마킹되거나 이를 갖는 노드에서 식별되어 마이크로서비스의 상태, 상황 또는 조건을 식별할 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는, 디스플레이에서 파선(들)으로 그려진 노드에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 마이크로서비스는, 음영화된 라인 또는 회색 라인으로 디스플레이에 그려진 노드에 의해 표현될 수 있다.
일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 디스플레이에서 파선(들)으로 그려진 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 음영화된 라인 또는 회색 라인으로 디스플레이에 그려진 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 크기, 형상 또는 색상의 그래픽 특성들에서의 변경과 함께 그려진 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 대응하는 텍스트 또는 마커들을 갖는 호에 의해 표현될 수 있다. 일부 구현에서, 누락, 비활성 또는 다운된 네트워크 링크는, 네트워크 링크의 상태, 상황 또는 조건을 식별하기 위해 텍스트 또는 그래픽 요소로 마킹되거나 이를 갖는 호에서 식별될 수 있다. 시스템은 또한, 마이크로서비스에 대응하는 노드 또는 링크에 대응하는 호의 섀도우 버전을 디스플레이할 수 있다.
디바이스는, 대응하는 마이크로서비스 또는 네트워크 링크를 활성화, 실행 또는 확립하기 위한 커맨드들 또는 명령어들을 실행하는 것 등의, 식별된 노드 또는 호에 응답하여, 자동으로 조치를 취할 수 있다. 디바이스는 누락된 노드 또는 호를 서비스 그래프에 자동으로 저장할 수 있다. 디바이스는, 네트워크 링크 또는 마이크로서비스가 누락되거나, 다운되거나, 비활성화되게 하는 문제들 또는 이벤트들을 검출하기 위해 자동으로 네트워크 링크 또는 마이크로서비스를 문제해결하거나 진단할 수 있다. 사용자 인터페이스를 통해, 사용자는 서비스 그래프와 상호작용하여 네트워크 링크 또는 마이크로서비스를 활성화하거나 네트워크 링크 또는 마이크로서비스를 문제해결 및/또는 진단하는 커맨드들 또는 명령어들을 실행할 수 있다. 사용자 인터페이스를 통해, 사용자는 누락된 노드 또는 호를 서비스 그래프의 일부로서 저장할 수 있다.
하나 이상의 실시예의 맥락에서 본원에서 설명된 다양한 요소들은 별개로 또는 임의의 적절한 하위조합으로 제공될 수 있다. 예를 들어, 본원에서 설명된 프로세스들은, 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 또한, 본원에서 설명된 프로세스들은 설명된 특정한 실시예들로 제한되지 않는다. 예를 들어, 본원에서 설명된 프로세스들은 본원에서 설명된 특정한 처리 순서로 제한되지 않고, 오히려 본원에서 개시된 결과들을 달성하기 위해 필요에 따라 프로세스 블록들은 재정렬되거나, 결합되거나, 제거되거나, 병렬 또는 직렬로 수행할 수 있다.
본원에서 설명되고 예시된 부품들의 상세사항, 재료들, 및 배열들에 대한 다양한 변경이 이하의 청구항들의 범위를 벗어나지 않고 본 기술분야의 통상의 기술자에 의해 이루어질 수 있다는 것을 추가로 이해할 것이다.

Claims (20)

  1. 서비스 그래프를 이용하여 누락된 요소들을 식별하기 위한 방법으로서,
    (a) 복수의 마이크로서비스에 대한 중개 디바이스에 의해, 복수의 노드 및 상기 복수의 노드 사이의 복수의 호를 포함하는 서비스 그래프를 식별하는 단계, ―상기 복수의 노드 각각은 상기 복수의 마이크로서비스 중의 마이크로서비스를 나타내고, 상기 호들 각각은 상기 복수의 마이크로서비스 사이의 상기 복수의 링크 중의 링크를 나타냄―;
    (b) 상기 디바이스에 의해, 상기 복수의 마이크로서비스들 사이의 상기 복수의 링크를 통한 네트워크 트래픽을 모니터링하는 단계;
    (c) 상기 모니터링에 응답하여 상기 디바이스에 의해, 상기 복수의 마이크로서비스 중의 마이크로서비스 및 상기 복수의 링크 중의 링크 중에서 하나가 상기 네트워크 트래픽의 적어도 일부를 수신하고 있지 않다고 결정하는 단계; 및
    (d) 상기 디바이스에 의해, 상기 마이크로서비스에 대응하는 노드 또는 상기 링크에 대응하는 호 중 하나가 비활성임을 식별하게끔 상기 서비스 그래프를 디스플레이하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 (b)는 상기 디바이스에 의해 상기 네트워크 트래픽 내에서, 상기 복수의 마이크로서비스 사이의 상기 복수의 링크를 통한 API(application programming interface) 호출을 모니터링하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서, 상기 (c)는 상기 마이크로서비스의 하나 이상의 API가 호출되고 있지 않거나 실패라고 결정하는 단계를 더 포함하는, 방법.
  4. 제2항에 있어서, 상기 (c)는 상기 링크를 통한 하나 이상의 마이크로서비스에 대한 하나 이상의 API 호출이 호출되고 있지 않거나 실패라고 결정하는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서, 상기 (c)는 적어도 하나 이상의 정책에 기초하여 상기 디바이스에 의해 상기 마이크로서비스 또는 상기 링크 중 적어도 하나가 비활성이라고 결정하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 복수의 서비스 및 상기 복수의 링크의 미리결정된 상태와 상기 복수의 서비스 및 상기 복수의 링크의 모니터링된 상태 사이의 차이를 식별하기 위해, 상기 서비스 그래프의 하나 이상의 노드 또는 하나 이상의 호의 하나 이상의 그래픽 특성을 변경하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 (d)는, 상기 마이크로서비스에 대응하는 노드 또는 상기 링크에 대응하는 호 중에서 하나의 섀도우 버전을 디스플레이하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 노드 또는 상기 호 중에서 하나는 상기 서비스 그래프로부터 누락된 것으로 식별되는, 방법.
  9. 제1항에 있어서, 상기 (d)는 상기 결정의 시점 또는 시점에 걸쳐 중 하나에서 상기 서비스 그래프를 디스플레이하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서, 상기 마이크로서비스에 대응하는 상기 노드 또는 상기 링크에 대응하는 상기 호 중에서 하나는 사용자 인터페이스를 통해 활성화되도록 선택가능한, 방법.
  11. 서비스 그래프를 이용하여 누락된 요소들을 식별하기 위한 시스템으로서,
    메모리에 결합되고 복수의 마이크로서비스에 대한 중개자인, 하나 이상의 프로세서를 포함하는 디바이스 ―상기 디바이스는 복수의 노드 및 상기 복수의 노드 사이의 복수의 호를 포함하는 서비스 그래프를 식별하게끔 구성됨―를 포함하고;
    상기 복수의 노드 각각은 상기 복수의 마이크로서비스 중의 마이크로서비스를 나타내고, 상기 호들 각각은 상기 복수의 마이크로서비스 사이의 복수의 링크의 링크를 나타내며;
    상기 디바이스는:
    상기 복수의 마이크로서비스 사이의 상기 복수의 링크를 통한 네트워크 트래픽을 모니터링하고;
    상기 모니터링에 응답하여, 상기 복수의 마이크로서비스 중의 마이크로서비스 또는 상기 복수의 링크의 링크 중에서 하나가 상기 네트워크 트래픽의 적어도 일부를 수신하고 있지 않다고 결정하고;
    상기 마이크로서비스에 대응하는 노드 또는 상기 링크에 대응하는 호 중에서 하나가 비활성임을 식별하게끔 상기 서비스 그래프를 디스플레이하도록 구성된, 시스템.
  12. 제11항에 있어서, 상기 디바이스는 또한, 상기 네트워크 트래픽 내에서, 상기 복수의 마이크로서비스 사이의 상기 복수의 링크를 통한 애플리케이션 프로그래밍 인터페이스(API) 호출을 모니터링하도록 구성된, 시스템.
  13. 제12항에 있어서, 상기 디바이스는 또한, 상기 마이크로서비스의 하나 이상의 API가 호출되고 있지 않거나 실패라고 결정하도록 구성된, 시스템.
  14. 제12항에 있어서, 상기 디바이스는 또한, 상기 링크를 통한 하나 이상의 마이크로서비스에 대한 하나 이상의 API 호출이 호출되고 있지 않거나 실패라고 결정하도록 구성된, 시스템.
  15. 제11항에 있어서, 상기 디바이스는 또한, 적어도 하나 이상의 정책에 기초하여 상기 마이크로서비스 또는 상기 링크 중 적어도 하나가 비활성이라고 결정하도록 구성된, 시스템.
  16. 제11항에 있어서, 상기 디바이스는 또한, 상기 복수의 서비스 및 상기 복수의 링크의 미리결정된 상태와 상기 복수의 서비스 및 상기 복수의 링크의 모니터링된 상태 사이의 차이를 식별하게끔 상기 서비스 그래프의 하나 이상의 노드 또는 하나 이상의 호의 하나 이상의 그래픽 특성을 변경하도록 구성된, 시스템.
  17. 제11항에 있어서, 상기 디바이스는 또한, 상기 마이크로서비스에 대응하는 상기 노드 또는 상기 링크에 대응하는 상기 호 중에서 하나의 섀도우 버전을 디스플레이하도록 구성된, 시스템.
  18. 제11항에 있어서, 상기 노드 또는 상기 호 중에서 하나는 상기 서비스 그래프로부터 누락된 것으로 식별되는, 시스템.
  19. 제11항에 있어서, 상기 디바이스는 또한, 상기 결정의 시점 또는 시점에 걸쳐 중 하나에서 상기 서비스 그래프를 디스플레이하도록 구성된, 시스템.
  20. 제11항에 있어서, 상기 마이크로서비스에 대응하는 상기 노드 또는 상기 링크에 대응하는 상기 호 중에서 하나는 사용자 인터페이스를 통해 활성화되도록 선택 가능한, 시스템.
KR1020217040780A 2019-05-17 2020-04-22 누락된 노드들 및 링크들의 서비스 그래프 강조 KR20220007692A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/415,810 US11055191B2 (en) 2019-05-17 2019-05-17 Service graph highlights missing nodes and links
US16/415,810 2019-05-17
PCT/US2020/029271 WO2020236388A1 (en) 2019-05-17 2020-04-22 Service graph highlights missing nodes and links

Publications (1)

Publication Number Publication Date
KR20220007692A true KR20220007692A (ko) 2022-01-18

Family

ID=70614671

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217040780A KR20220007692A (ko) 2019-05-17 2020-04-22 누락된 노드들 및 링크들의 서비스 그래프 강조

Country Status (7)

Country Link
US (1) US11055191B2 (ko)
EP (1) EP3970321B1 (ko)
KR (1) KR20220007692A (ko)
CN (1) CN113924759A (ko)
AU (1) AU2020279584A1 (ko)
CA (1) CA3140118A1 (ko)
WO (1) WO2020236388A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240086160A1 (en) * 2022-09-14 2024-03-14 Microsoft Technology Licensing, Llc Microservice termination while maintaining high availability

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10917324B2 (en) * 2016-09-28 2021-02-09 Amazon Technologies, Inc. Network health data aggregation service
US11363441B2 (en) 2019-09-24 2022-06-14 At&T Intellectual Property I, L.P. Facilitating mobility as a service in fifth generation (5G) or other advanced networks
US11159990B2 (en) * 2019-10-29 2021-10-26 At&T Intellectual Property I, L.P. Microservices coordinator for 5G or other next generation network
US11038763B1 (en) 2019-12-02 2021-06-15 At&T Intellectual Property I, L.P. Intelligent policy control engine for 5G or other next generation network
US11451643B2 (en) * 2020-03-30 2022-09-20 Amazon Technologies, Inc. Managed traffic processing for applications with multiple constituent services
US11201787B1 (en) 2020-07-28 2021-12-14 HashiCorp Routing visualization user interface
US11153227B1 (en) * 2020-08-05 2021-10-19 International Business Machines Corporation Managing communication between microservices
US20230205578A1 (en) * 2021-12-29 2023-06-29 Dell Products L.P. Error Avoidance Load Balancing Across Distributed Clustered Containerized Environments
WO2023249506A1 (en) * 2022-06-22 2023-12-28 Juniper Networks, Inc. Replay of analytics for a network management system
US20240073097A1 (en) * 2022-08-26 2024-02-29 Cisco Technology, Inc. Methods for implementing time-travelling networks using extensions to graph databases
WO2024168602A1 (en) * 2023-02-15 2024-08-22 Huawei Technologies Co., Ltd. Cloud microservice topology analysis

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6483548B1 (en) * 1998-12-28 2002-11-19 Research Investment Network, Inc. Method of data display for electronic program guides (EPGs)
US6903755B1 (en) * 1998-12-31 2005-06-07 John T. Pugaczewski Network management system and graphical user interface
US20050166115A1 (en) * 2004-01-22 2005-07-28 Stefan Daume Method for performing software stress test
US7958250B2 (en) * 2004-11-09 2011-06-07 Sterling Commerce, Inc. System and method for multi-level guided node and topology discovery
US20110153788A1 (en) * 2009-12-23 2011-06-23 Jacobus Van Der Merwe Method and System for Automated Network Operations
US8837277B2 (en) * 2011-06-01 2014-09-16 Cisco Technology, Inc. Source routing convergence in constrained computer networks
US9292361B1 (en) * 2011-08-19 2016-03-22 Google Inc. Application program interface script caching and batching
US10630566B1 (en) * 2012-06-20 2020-04-21 Amazon Technologies, Inc. Tightly-coupled external cluster monitoring
US9225624B2 (en) * 2012-12-20 2015-12-29 Dell Products L.P. Systems and methods for topology discovery and application in a border gateway protocol based data center
US9448859B2 (en) * 2013-09-17 2016-09-20 Qualcomm Incorporated Exploiting hot application programming interfaces (APIs) and action patterns for efficient storage of API logs on mobile devices for behavioral analysis
NO2776466T3 (ko) * 2014-02-13 2018-01-20
US10200258B2 (en) * 2014-08-14 2019-02-05 Juniper Networks, Inc. Transaction integrity for network services configuration
US9729506B2 (en) * 2014-08-22 2017-08-08 Shape Security, Inc. Application programming interface wall
US9787573B2 (en) * 2014-12-31 2017-10-10 Juniper Networks, Inc. Fast convergence on link failure in multi-homed Ethernet virtual private networks
US10411966B2 (en) * 2015-02-26 2019-09-10 Red Hat, Inc. Host network analyzer
US20160342453A1 (en) * 2015-05-20 2016-11-24 Wanclouds, Inc. System and methods for anomaly detection
US9882855B1 (en) * 2015-05-29 2018-01-30 Amazon Technologies, Inc. Instance messaging service
US10536357B2 (en) * 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10042735B2 (en) * 2015-07-10 2018-08-07 Ca, Inc. Selecting application wrapper logic components for wrapping a mobile application based on wrapper performance feedback from user electronic devices
WO2017083140A1 (en) * 2015-11-10 2017-05-18 Avanan Inc. Cloud services discovery and monitoring
KR101979363B1 (ko) * 2015-12-21 2019-05-16 후아웨이 테크놀러지 컴퍼니 리미티드 애플리케이션 토폴로지 관계의 발견 방법, 장치, 및 시스템
US10212041B1 (en) 2016-03-04 2019-02-19 Avi Networks Traffic pattern detection and presentation in container-based cloud computing architecture
US10237187B2 (en) * 2016-04-29 2019-03-19 Citrix Systems, Inc. System and method for service chain load balancing
US10305745B2 (en) * 2016-06-20 2019-05-28 Vmware, Inc. Method and system for creating and managing aggregation service hierarchies
US10261891B2 (en) 2016-08-05 2019-04-16 International Business Machines Corporation Automated test input generation for integration testing of microservice-based web applications
US10567252B1 (en) * 2016-12-28 2020-02-18 Equinix, Inc. Network connection service high availability evaluation for co-location facilities
EP3471007B1 (en) * 2017-10-13 2022-02-23 Ping Identity Corporation Methods and apparatus for analyzing sequences of application programming interface traffic to identify potential malicious actions
US20190138715A1 (en) * 2017-11-09 2019-05-09 Jayant Shukla Post sandbox methods and systems for detecting and blocking zero-day exploits via api call validation
US10666743B2 (en) * 2018-04-23 2020-05-26 Vmware, Inc. Application discovery based on application logs
US11275715B2 (en) * 2018-11-30 2022-03-15 Jpmorgan Chase Bank, N.A. Method and system for active process monitoring across multiple independent systems
US11223639B2 (en) * 2019-03-07 2022-01-11 Fortinet, Inc. Endpoint network traffic analysis

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240086160A1 (en) * 2022-09-14 2024-03-14 Microsoft Technology Licensing, Llc Microservice termination while maintaining high availability
US11966725B2 (en) * 2022-09-14 2024-04-23 Microsoft Technology Licensing, Llc Microservice termination while maintaining high availability
US20240231778A1 (en) * 2022-09-14 2024-07-11 Microsoft Technology Licensing, Llc Microservice termination while maintaining high availability

Also Published As

Publication number Publication date
US20200366756A1 (en) 2020-11-19
EP3970321B1 (en) 2023-08-30
EP3970321A1 (en) 2022-03-23
US11055191B2 (en) 2021-07-06
CA3140118A1 (en) 2020-11-26
CN113924759A (zh) 2022-01-11
WO2020236388A1 (en) 2020-11-26
AU2020279584A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
US11892926B2 (en) Displaying a service graph in association with a time of a detected anomaly
US20210320982A1 (en) Systems and methods for recording metadata about microservices for requests to the microservices
US10983769B2 (en) Systems and methods for using a call chain to identify dependencies among a plurality of microservices
EP3970321B1 (en) Service graph highlights missing nodes and links
US11310133B2 (en) Using service graphs to compare performance of a plurality of versions of a microservice
US11032396B2 (en) Systems and methods for managing client requests to access services provided by a data center
EP3739848B1 (en) Systems and methods for identifying a context of an endpoint accessing a plurality of microservices
EP3970338A1 (en) Applying policies to apis for service graph
US11586484B2 (en) Automatically replicate API calls to separate data centers

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application