KR102161161B1 - 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체 - Google Patents

에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체 Download PDF

Info

Publication number
KR102161161B1
KR102161161B1 KR1020207014946A KR20207014946A KR102161161B1 KR 102161161 B1 KR102161161 B1 KR 102161161B1 KR 1020207014946 A KR1020207014946 A KR 1020207014946A KR 20207014946 A KR20207014946 A KR 20207014946A KR 102161161 B1 KR102161161 B1 KR 102161161B1
Authority
KR
South Korea
Prior art keywords
content
request
event
function
edge server
Prior art date
Application number
KR1020207014946A
Other languages
English (en)
Other versions
KR20200062373A (ko
Inventor
마니간단 라다크리슈난
올렉시 자카렌코
크레이그 웨슬리 하워드
벤카테시 비제이아라가반
슈브함 카티야르
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/852,256 external-priority patent/US10848582B2/en
Priority claimed from US14/852,272 external-priority patent/US11895212B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Priority to KR1020207027486A priority Critical patent/KR102285827B1/ko
Publication of KR20200062373A publication Critical patent/KR20200062373A/ko
Application granted granted Critical
Publication of KR102161161B1 publication Critical patent/KR102161161B1/ko

Links

Images

Classifications

    • H04L67/2819
    • 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/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • H04L67/2842
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 방법들, 실시예들 및 컴퓨터-판독가능한 매체들이 개시된다. 컨텐츠에 대한 요청은 클라이언트 디바이스로부터 에지 서버에서 수신된다. 켄텐츠는 에지 서버에 결합된 원천 서버로부터 또는 에지 서버에 컨텐츠 캐시로부터 검색된다. 이벤트를 접하는 것을 포함하는 요청의 프로세싱이 개시된다. 이벤트는 고객에 의해 특정된 기능과 관련된다. 이벤트와 관련된 기능은 프로세스 분리를 이용하여 에지 서버에서 실행된다. 컨텐츠는 기능의 실행에 적어도 부분적으로 기초하여 생성된다. 컨텐츠가 에지 서버로부터 클라이언트 디바이스로 발송된다.

Description

에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체 {SYSTEM, METHOD AND COMPUTER-READABLE STORAGE MEDIUM FOR CUSTOMIZABLE EVENT-TRIGGERED COMPUTATION AT EDGE LOCATIONS}
많은 회사들 및 다른 조직들은 컴퓨팅 시스템들의 동작들을 지원하기 위해서 많은 컴퓨팅 시스템들을 예컨대, 같은 장소에 배치(co-locate)되거나 (예를 들어, 로컬 네트워크의 일부로서) 또는 대신 다수의 별개 지리적 위치들 (예를 들어, 하나 이상의 개인 또는 공공 중간 네트워크들을 통하여 연결된)에 위치된 컴퓨팅 시스템들을 상호연결하는 컴퓨터 네트워크들을 운용한다. 예를 들어, 상당한 수의 상호연결된 컴퓨팅 시스템들을 수용하는 분산 시스템들은 흔해졌다. 이런 분산 시스템들은 클라이언트들과 상호 작용하는 서버들에 백-엔드(back-end) 서비스들을 제공할 수 있다. 이런 분산 시스템들은 고객들에게 컴퓨팅 자원들을 제공하기 위해서 엔티티(entity)에 의해 운용되는 데이터센터들을 또한 포함할 수 있다. 일부 데이터센터 운영자들은 다양한 고객들에 의해 소유되는 하드웨어에 대한 네트워크 액세스, 파워, 및 보안 인스톨 설비들을 제공하지만, 한편 다른 데이터센터 운영자들은 그들의 고객들에 의한 사용을 위해 이용 가능하게 만들어진 하드웨어 자원들을 또한 포함하는 “풀 서비스(full service)” 설비들을 제공한다. 분산 시스템들의 스케일 및 범위가 증가함에 따라, 자원들을 프로비저닝(provisioning), 관리, 및 운영하는 태스크(task)들이 점점 더 복잡해 지고 있다.
예를 들어, 컨텐츠 전달 네트워크들 또는 컨텐츠 분배 네트워크들 (CDNs: content distribution networks)이 효율적인 방식으로 엔드 유저들에게 컨텐츠를 전달하기 위해 상이한 지리적 위치들을 가로지르는 분산 시스템들을 채용할 수 있다. CDN는 다양한 유형들의 컨텐츠 예컨대 웹 페이지들 및 그것들의 구성 엘리먼트들, 스트리밍 미디어(streaming media), 다운로드 가능한 미디어, 애플리케이션 데이터, 등등을 제공할 수 있다. CDN의 목표들은 컨텐츠의 전달을 위한 높은 이용 가능성(availability) 및 낮은 레이턴시(latency)를 포함할 수 있다. CDN를 구현하는 분산 시스템은 흔히 다수의 백본(backbone)들을 통하여 많은 지리적 위치들에 현존하는 원격 지점들을 포함할 수 있어서, 컨텐츠는 하이 퍼포먼스(performance)로 서로 전혀 다른 유저들에게 공급될 수 있다. 현존하는 이들 원격 지점들은 에지 위치(edge location)들로 불릴 수 있다.
도 1은 일 실시예에 따른 에지 위치들에서 맞춤형 이벤트-트리거된(event-triggered) 컴퓨터의 조작(computation)을 위한 예제 시스템 환경을 예시한다.
도 2는 일 실시예에 따른 이벤트들과 관련된 고객에-특정된(customer-specified) 기능들을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다.
도 3은 일 실시예에 따른 컴퓨터 조작을 트리거링하기 위한 이벤트들의 예들을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다.
도 4는 일 실시예에 따른 에지 서버에서 이벤트-트리거된 기능들의 보안 실행을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다.
도 5는 일 실시예에 따른, 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 방법을 예시하는 플로우 차트이다.
도 6은 일 실시예에 따른 에지 위치들에 판독 전용 데이터 저장소의 복제를 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다.
도 7은 일 실시예에 따른 복제된 판독 전용 데이터 저장소를 이용하여, 에지 서버에서 이벤트-트리거된 기능들의 보안 실행을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다.
도 8은 일 실시예에 따른, 에지 위치들에 판독 전용 데이터 저장소의 복제를 위한 방법의 플로우 차트이다.
도 9는 일부 실시예들에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 예시한다.
실시예들이 여러 개의 실시예들 및 예시적인 도면들에 대한 예제의 방식으로 본 출원에 설명되지만, 당해 기술분야의 숙련자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않는다는 것을 인식할 것이다. 도면들 및 그것에 대한 상세한 설명은 개시된 특정한 형태로 실시예들을 제한하도록 의도되지 않지만, 그와는 반대로, 의도는 첨부된 청구항들에 의해 정의된 바와 같이 사상 및 범위 내에 속하는 모든 수정들, 등가물들 및 대안들을 커버하는 것임이 이해되어야 한다. 본 출원에 사용된 제목들은 단지 구조적 목적을 위한 것이며 설명 또는 청구항들의 범위를 제한하기 위해 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된, 단어 “일 수 있다(may)”는 의무적 의미(즉, "해야 한다"는 의미하는)보다는 허용적 의미(즉, "하기 위한 가능성을 가짐"을 의미하는)로 사용된다. 유사하게, 단어들 “포함하다(include)”, “포함하는(including)”, 및 “포함하다(includes)”은 포함하는 것을 의미하지만, 이에 제한되지 않는다.
에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 방법들, 실시예들 및 컴퓨터-판독가능한 매체들의 다양한 실시예들이 설명된다. 본 출원에서 설명된 기술들을 이용하여, 컨텐츠 전달 네트워크 (CDN : content delivery network)의 고객들은 다양한 유형들의 컨텐츠 전달 이벤트들과 관련된 기능들을 공급, 선택, 또는 그렇지 않으면, 구성할 수 있다. 기능들 및 이벤트들과 그것들의 연관들은 CDN에 에지 서버들로 전파(propagate)될 수 있다. 적절한 요청이 에지 서버에서 수신된 때, 관련된 기능이 에지 서버에서 실행될 수 있다. 기능을 실행함으로써, 에지 서버는 에지 서버에서 캐시로부터의 컨텐츠에 대한 요청을 변경할 수 있거나, 원천 서버(origin server)로부터 컨텐츠에 대한 요청을 변경할 수 있거나, 에지 서버에서 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경할 수 있거나, 원천 서버로부터의 컨텐츠에 대한 요청에 응답을 변경할 수 있거나, 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하기 위해서 요청 테어다운(request teardown)을 변경할 수 있거나, 또는 요청과 관련된 에러를 생성할 수 있다. 기능은 보안 실행 환경에서 프로세스 분리(process isolation)를 위한 기술들을 이용하여 실행될 수 있다. 일 실시예에서, 판독 전용 데이터 저장소(read-only data store)가 에지 서버들로 전파될 수 있다. 판독 전용 데이터 저장소는 고객에-특정(customer-specific) 되고 해당 고객을 위해 클라이언트들에 컨텐츠를 생성 및/또는 전달할 때 사용을 위해 특정 고객에 의해 공급 및/또는 변형될 수 있다. 컨텐츠에 대한 요청 프로세싱시에, 에지 서버(edge server)는 데이터 저장소로부터 검색된 데이터의 엘리먼트들을 사용하는 기능 (예컨대 고객에-특정된 기능)을 실행할 수 있다. 이런 식으로, 에지 위치들로부터 유저들로의 컨텐츠의 생성 및/또는 전달은 맞춤화될 수 있다.
도 1은 일 실시예에 따른 에지 위치들에서 맞춤형(customizable) 이벤트-트리거된 컴퓨터의 조작(computation)을 위한 예제 시스템 환경을 예시한다. 컨텐츠 전달 네트워크 (CDN)(100)는 하나 이상의 네트워크들 (190)을 통하여 클라이언트 디바이스들 (180A-180N)에 컨텐츠를 전달하기 위해 상호 작용하는 다수의 컴퓨팅 디바이스들을 포함할 수 있다. CDN(100)는 다양한 유형들의 컨텐츠 예컨대 웹 페이지들 및 그것들의 구성 엘리먼트들, 스트리밍 미디어, 다운로드 가능한 미디어, 애플리케이션 데이터, 클라이언트 디바이스들에서 실행하도록 의도된 프로그램 코드, 등등을 제공할 수 있다. 일 실시예에서, CDN (100)는 하나 이상의 원천 서버(origin server)들 (110) 및 복수의 에지 서버들 (120A-120N)을 포함할 수 있다. 원천 서버들(들) (110)은 컨텐츠 스토리지 (111)에 컨텐츠의 엘리먼트들을 지속적으로 저장할 수 있고 예를 들어, 컨텐츠 스토리지 (111)에 컨텐츠의 엘리먼트들에 기초하여 동적으로 컨텐츠를 또한 생성할 수 있다. 에지 서버들 (120A-120N)은 원천적으로 원천 서버(들) (110)로부터 획득된 컨텐츠의 엘리먼트들을 캐시(cache)할 수 있다. 따라서, 에지 서버들 (120A-120N)의 각각은 컨텐츠 캐시, 예컨대 에지 서버 (120A)에 대한 컨텐츠 캐시 (121A), 에지 서버 (120B)에 대한 컨텐츠 캐시 (121B), 및 에지 서버 (120N)에 대한 컨텐츠 캐시 (121N)를 포함할 수 있다.
일 실시예에서, CDN (100)으로부터 컨텐츠를 찾고 있는 클라이언트들은 원천 서버(들) (110)보다는 오히려 에지 서버들 (120A-120N)과 주로 상호 작용(interact)할 수 있다. 클라이언트 디바이스들 (180A-180N)로부터의 컨텐츠에 대한 요청들을 프로세싱할 때, 에지 서버들 (120A-120N)은 그것들의 로컬 컨텐츠 캐시들로부터 컨텐츠를 전달하려고 먼저 시도할 수 있고 ; 만약 컨텐츠가 로컬에 캐시되지 않으면, 에지 서버들은 원천 서버(들) (110)로부터 요청된 컨텐츠를 획득할 수 있다. 컨텐츠 캐시들 (121A-121N)은 캐싱 정책들(caching policies)을 구현할 수 있어서 컨텐츠의 엘리먼트들이 만료(expire)되어 캐시들로부터 제거될 수 있다 (예를 들어, 만약 컨텐츠의 엘리먼트들이 구성 가능한 시간 기간내에 클라이언트들에 의해 요청되지 않았다면). 그러나, 컨텐츠의 엘리먼트들은 원천 서버(들) (110)의 컨텐츠 스토리지 (111)로부터는 꼭 만료되지는 않을 수 있다. 임의의 적절한 스토리지 기술들이 컨텐츠 스토리지 (111) 및/또는 컨텐츠 캐시들 (121A-121N)을 구현하는데 사용될 수 있다.
원천 서버(들) (110)은 에지 서버들 (120A-120N) 보다 (예를 들어, 특정 영역들내에서) 더 중심에(centrally) 위치될 수 있다. 본 출원에서 사용되는, 용어 “에지 서버(edge server)”는 일반적으로 에지 위치에서의 컨텐츠 서버를 지칭하고, 용어 “에지 위치(edge location)”는 일반적으로 일부 메트릭에 따라 엔드 유저들에 더 가까운 위치 (지리적 및/또는 네트워크 토폴로지에 면에서)를 지칭한다. 본 출원에서 사용되는, 용어 “원천 서버(origin server)”는 일반적으로 하나 이상의 에지 서버들에 컨텐츠를 공급하는 컨텐츠 서버를 지칭한다. 에지 서버들 (120A-120N)은 에지 위치들로 불리울 수 있는 네트워크 토폴로지내 위치들 또는 여러 지리적 위치들에 분산될 수 있다. 에지 서버들 (120A-120N)은 그것들이 전반적으로 원천 서버(들) (110)보다 더 높은 성능을 가지고 다양한 위치들에 클라이언트 디바이스들 (180A-180N)에 컨텐츠를 제공할 수 있도록 서로 전혀 다른 위치들에 위치될 수 있다. 일 실시예에서, 에지 서버들 (120A-120N)을 이용한 컨텐츠 전달의 더 높은 성능은 네트워크 레이턴시, 네트워크 대역폭 사용량, 페이지 로드 시간들, 및/또는 임의의 다른 적절한 메트릭(들)에 면에서 측정될 수 있다. 예를 들어, 컨텐츠에 대한 특정 요청을 위하여, 특정 클라이언트 디바이스는 네트워크 레이턴시를 최소화하거나 또는 그렇지 않으면, 예컨대 클라이언트 디바이스와 선택된 에지 서버 사이의 많은 네트워크 홉(hop)들을 줄임으로써 성능을 최대하는 방식으로 특정 에지 서버에 라우팅될 수 있다. 컨텐츠를 전달하기 위해 에지 서버들 (120A-120N)의 사용은 또한 더 높은 이용 가능성(availability) 및/또는 더 낮은 비용을 제공할 수 있다.
맞춤형 이벤트-트리거된 컴퓨터의 조작을 구현함으로써, 에지 서버들 (120A-120N)은 클라이언트 디바이스들 (180A-180N)로부터 컨텐츠 요청들의 프로세싱 동안에 임의의 적절한 이벤트에서 고객에-특정된 또는 유저에-특정된 기능들 을 실행할 수 있다. 예를 들어, 고객에-특정된 기능들은 클라이언트들로부터의 컨텐츠 요청들을 변경할 수 있고, 컨텐츠 요청들에 대한 응답들을 변경할 수 있고, 원천 서버(들)에 대한 원천 요청(origin request)들을 변경할 수 있고, 원천 서버(들)에 대한 원천 요청들에 응답들을 변경할 수 있고, 에러 통지들을 변경할 수 있고 (예를 들어, 요청된 컨텐츠가 전달될 수 없을 때 클라이언트들에게), 및/또는 컨텐츠 요청을 프로세싱 한 후에 메트릭들 및/또는 로그 엔트리들을 생성할 수 있다. 일 실시예에서, 맞춤형 이벤트 기반 컴퓨터의 조작은 클라이언트 디바이스들 (180A-180N)에 컨텐츠를 생성 및/또는 전달하기 위해 에지 서버들 (120A-120N)에 복제된 판독 전용 데이터 저장소를 사용할 수 있다. 에지 서버들 (120A-120N)의 각각은 맞춤형 이벤트-트리거된 컴퓨터의 조작을 구현하는 기능의 하나 이상의 모듈들, 컴포넌트들, 또는 다른 엘리먼트들을 포함할 수 있다. 예를 들어, 각각의 에지 서버 (120A-120N)는 이벤트-트리거된 컴퓨터의 조작을 위한 기능 예컨대 에지 서버(120A)에서 이벤트-트리거된 컴퓨터의 조작 기능 (122A), 에지 서버(120B)에서 이벤트-트리거된 컴퓨터의 조작 기능 (122B), 및 에지 서버 (120N)에서 이벤트-트리거된 컴퓨터의 조작 기능 (122N)을 포함할 수 있다.
CDN (100) 및 클라이언트 디바이스들 (180A-180N)은 하나 이상의 적절한 네트워크들, 예컨대 네트워크(들) (190)을 이용하여 서로 에 통신가능하게 결합될 수 있다. 클라이언트 디바이스들 (180A-180N)은 다양한 클라이언트들 또는 유저들을 나타낼 수 있거나 또는 클라이언트들 또는 유저들에 대응할 수 있다. 클라이언트 디바이스들 (180A-180N)은 임의의 적절한 위치들 또는 영역들 상에 분산될 수 있다. 일 실시예에서, 클라이언트 디바이스들 (180A-180N)는 CDN (100)으로부터 컨텐츠를 소비하는 브라우저 프로그램들 또는 다른 애플리케이션들 을 운용하도록 구성될 수 있다. 예를 들어, 클라이언트 디바이스들 (180A-180N)은 CDN (100)으로부터 컨텐츠에 대한 HTTP (HyperText Transport Protocol) 요청들을 생성하는 웹 브라우저들을 운영할 수 있다. 클라이언트 디바이스들 (180A-180N)의 각각은 하나 이상의 컴퓨팅 디바이스들을 이용하여 구현될 수 있고, 임의의 디바이스는 도 9에 예시된 예시 컴퓨팅 디바이스 (3000)에 의해 구현될 수 있다.
CDN (100)는 복수의 컴퓨팅 디바이스들을 포함할 수 있고, 임의의 디바이스는 도 9에 예시된 예시 컴퓨팅 디바이스 (3000)에 의해 구현될 수 있다. 다양한 실시예들에서, CDN (100)의 기능의 부분들은 동일한 컴퓨팅 디바이스에 의해 또는 임의의 적절한 수의 상이한 컴퓨팅 디바이스들에 의해 제공될 수 있다. 일 실시예에서, 에지 서버를 위해 본 출원에서 설명된 기능의 부분들은 복수의 컴퓨팅 디바이스들 및/또는 스토리지 자원들에 걸쳐서 분배될 수 있다. 예를 들어, 컨텐츠 캐시 (121A) 및 이벤트-트리거된 컴퓨터의 조작 (122A)은 네트워크 또는 다른 상호연결을 이용하여 결합된 상이한 컴퓨팅 디바이스들을 이용하여 구현될 수 있다. 만약 CDN (100)의 컴포넌트들 중 임의의 컴포넌트가 상이한 컴퓨팅 디바이스들을 이용하여 구현된다면, 그러면 컴포넌트들 및 그것들의 개별 컴퓨팅 디바이스들은 예를 들어, 네트워크를 통하여 통신가능하게 결합될 수 있다. 예시된 컴포넌트들 (예컨대 컨텐츠 스토리지 (111), 컨텐츠 캐시들 (121A-121N), 및 이벤트-트리거된 컴퓨터의 조작 (122A-122N))의 각각은 그것들의 개별 기능들을 수행하기 위해 사용 가능한 소프트웨어 및 하드웨어의 임의의 조합을 나타낼 수 있다.
CDN (100)는 도시되지 않은 추가의 컴포넌트들, 도시된 것보다 더 적은 컴포넌트들, 또는 도시된 컴포넌트들의 상이한 조합들, 구성들, 또는 양들을 포함할 수 있다는 것이 고려된다. 예를 들어, 비록 세개의 에지 서버들 (120A, 120B, 및 120N)이 예 및 예시의 목적을 위하여 도시되었지만, 에지 서버들의 상이한 양들 및 구성들이 사용될 수 있다는 것이 고려된다. 추가적으로, 비록 세개의 클라이언트 디바이스들 (180A, 180B, 및 180N)이 예 및 예시의 목적을 위하여 도시되었지만, 클라이언트 디바이스들의 상이한 양들 및 구성들이 사용될 수 있다는 것이 고려된다.
일부 실시예들에서, 원천 서버(들) (110), 에지 서버들 (120A-120N), 및/또는 클라이언트 디바이스들 (180A-180N)은 가상 컴퓨트(compute) 인스턴스들 및/또는 물리적 컴퓨트 인스턴스들을 이용하여 구현될 수 있다. 가상 컴퓨트 인스턴스들 및/또는 물리적 컴퓨트 인스턴스들이 클라이언트들에 제공될 수 있고, 컴퓨터 자원들, 메모리 자원들, 스토리지 자원들, 및 네트워크 자원들을 관리하는 제공자 네트워크에 의해 프로비저닝되고, 유지될 수 있다. 가상 컴퓨트 인스턴스는 특정된 컴퓨터의 용량 (CPU들의 유형 및 수, 주 메모리 사이즈, 등등을 나타냄으로써 특정될 수 있다) 및 특정된 소프트웨어 스택 (예를 들어, 하이퍼바이저(hypervisor)의 상부에서 동작할 수 있는 운영 체제의 특정 버전)을 갖는 하나 이상의 서버들을 포함할 수 있다. 하나 이상의 가상의 컴퓨트 인스턴스들은 도 9에 예시된 예시 컴퓨팅 디바이스 (3000)에 의해 구현될 수 있다.
일 실시예에서, CDN (100)의 적절한 컴포넌트는 다양한 서버들 또는 CDN의 다른 컴포넌트들 (원천 서버(들) (110), 에지 서버들 (120A-120N), 및/또는 그것들의 구성 모듈들)을 구현하기 위한 가상 컴퓨트 인스턴스들을 선택 및/또는 프로비저닝할 수 있다. 예를 들어, 가상 컴퓨트 인스턴스들은 이용 가능한 컴퓨팅 인스턴스들의 적절한 풀(pool)로부터 프로비저닝될 수 있다. 일 실시예에서, 추가의 컴퓨팅 인스턴스들이 요구될 때 CDN (100) 에 추가될 수 있다. 일 실시예에서, 컴퓨팅 인스턴스들은 만약 컴퓨팅 인스턴스들이 특정 시간 지점에서 필요하지 않으면 이용 가능한 컴퓨팅 인스턴스들의 풀로 리턴(return)될 수 있다.
일 실시예에서, CDN (100)의 기능은 제공자 네트워크를 이용하여 고객들에게 제공될 수 있다. CDN (100)의 고객들은 클라이언트 디바이스들 (180A-180N)에 대한 CDN 전달 컨텐츠 (예를 들어, 고객들에 의해 공급되거나 또는 선택되는 컨텐츠)를 가지려고 하는 엔티티들 (예를 들어, 사람들, 비즈니스들, 및/또는 다른 조직들)을 나타낼 수 있다. 예를 들어, CDN (100)의 기능은 웹-액세스 가능한 서비스로서 고객들에게 제공될 수 있다. 인터넷 및/또는 다른 네트워크들을 통해 액세스 가능한 하나 이상의 서비스들(다양한 유형들의 클라우드-기반 컴퓨팅 또는 스토리지와 같은)을 분배된 세트의 클라이언트들에 제공하기 위해 회사 또는 공공 섹터 조직과 같은 엔티티에 의해 설정된 네트워크는 제공자 네트워크(provider network)로 불리울 수 있다. 제공자 네트워크는 제공자에 공급되는 인프라스트럭처(infrastructure) 및 서비스들을 구현하고 분배하기 위해 사용되는 다양한 자원 풀들 예컨대 물리적 및/또는 가상화된 컴퓨터 서버들, 스토리지 디바이스들, 네트워킹 장비 및 유사한 것의 무리들을 호스팅하는 많은 데이터센터들을 포함할 수 있다. 자원(resource)들은 일부 실시예들에서, “인스턴스(instance)들” 예컨대 가상 또는 물리적 컴퓨트 인스턴스들 또는 스토리지 인스턴스들로 불리우는 유닛들내 클라이언트들에 공급될 수 있다. 가상 컴퓨팅 인스턴스는 예를 들어, 특정된 컴퓨터의 용량 (CPU들의 유형 및 수, 주 메모리 사이즈, 등등을 나타냄으로써 특정될 수 있다) 및 특정된 소프트웨어 스택 (예를 들어, 하이퍼바이저(hypervisor)의 상부에서 동작할 수 있는 운영 체제의 특정 버전)을 갖는 하나 이상의 서버들을 포함할 수 있다. 많은 상이한 유형들의 컴퓨팅 디바이스들은 컴퓨터 서버들, 스토리지 디바이스들, 네트워크 디바이스들 및 유사한 것을 포함하는 상이한 실시예들에서, 제공자 네트워크의 자원들을 구현하기 위해서 단독으로 또는 조합하여 사용될 수 있다.
도 2 는 일 실시예에 따른 이벤트들과 관련된 고객에-특정된 기능들을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다. 에지 서버들 (120A-120N)에서 이벤트-트리거된 컴퓨터의 조작은 CDN (100)의 하나 이상의 고객들 또는 다른 유저들에 의해 맞춤화될 수 있다. 일 실시예에서, 고객 입력 (114)은 이벤트-트리거된 컴퓨터의 조작을 수행하기 위한 고객 구성(customer configuration) (115)을 (적어도 부분적으로) 특정, 정의, 또는 그렇지 않으면, 결정하기 위해 사용될 수 있다. 상기에서 논의된 바와 같이, CDN (100)의 고객들은 클라이언트 디바이스들 (180A-180N)에 대한 CDN 전달 컨텐츠 (예를 들어, 고객들에 의해 공급되거나 또는 선택되는 컨텐츠)를 가지려고 하는 엔티티들 (예를 들어, 사람들, 비즈니스들, 및/또는 다른 조직들)을 나타낼 수 있어서, 컨텐츠(content)는 고객을 위하여 클라이언트들에게 전달되는 것을 말할 수 있다. 고객 입력 (114)은 CDN (100)의 특정 고객에 의해 제공된 입력을 나타낼 수 있고, 고객 구성 (115)은 해당 고객을 위한 구성을 나타낼 수 있다. 일 실시예에서, 구성 서버 (210)에 의해 유지되는 추가의 고객 구성들은 추가의 고객들을 위한 추가 구성들을 포함할 수 있다. 일 실시예에서, 고객 구성 (115)은 특정 고객을 위한 특정한 애플리케이션 또는 데이터세트에 관한 것일 수 있고, 특정 고객은 추가의 애플리케이션들 또는 추가의 데이터세트들을 위해 추가 고객 구성들을 특정할 수 있다. 따라서, 고객 구성 (115)은 특정 고객에 대한 이벤트-트리거된 컴퓨터의 조작 정책 (그리고 잠재적으로 해당 고객에 대한 특정 애플리케이션 또는 특정 데이터세트를 위한)을 나타낼 수 있다.
고객 입력 (114)은 임의의 적절한 인터페이스(들), 예컨대 애플리케이션 프로그래밍 인터페이스 (API : application programming interface) 및/또는 그래픽 유저 인터페이스 (GUI : graphical user interface)를 이용하여 고객에 의해 제공될 수 있다. 예를 들어, 고객 구성 (115)을 변경하기 위한 GUI는 웹 페이지에 제어들을 이용하여 제공될 수 있고, 고객은 고객 구성을 변경하기 위해 웹 페이지를 액세스하기 위한 웹 브라우저를 사용할 수 있다. 고객 입력 (114)은 고객 구성 (115)을 특정하기 위해서 중앙 집중된(centralized) 컴포넌트 예컨대 구성 서버 (210)에 제공될 수 있다. 고객 구성 (115)은 그런 다음 구성 서버 (210)로부터 에지 서버들 (120A-120N)로 전파될 수 있다. 고객 구성 (115)에 대한 업데이트들(예를 들어, 추가 고객 입력에 기초하여)이 또한 구성 서버 (210)에서 만들어질 수 있고 그런다음 에지 서버들 (120A-120N)로 푸시(push) 될 수 있다. 이런 식으로, 동일한 이벤트-트리거된 컴퓨터의 조작 정책은 복수의 에지 서버들, 예컨대 에지 서버들 (120A-120N)에 걸쳐 특정 고객 (및 잠재적으로 해당 고객에 대한 특정한 애플리케이션 또는 특정한 데이터세트를 위하여)을 위하여 구현될 수 있다. 구성 서버 (210)는 에지 서버들 (120A-120N)에 대하여 임의의 적절한 위치에 위치될 수 있고 도 9에 예시된 예 컴퓨팅 디바이스 (3000)에 의해 구현될 수 있다.
일 실시예에서, 고객 구성 (115)은 다양한 기능들을 갖는 다양한 이벤트 유형들에 연관시킬 수 있거나 또는 링크될 수 있다. 도 2의 예에 도시된 바와 같이, 고객 구성 (115)은 복수의 이벤트 유형들 (116A-116N) 중 임의의 이벤트 유형을 위한 관련 기능을 특정할 수 있다. 예를 들어, 고객 입력 (114)에 기초하여, 이벤트 유형 (116A)는 기능 (117A)과 관련될 수 있고, 이벤트 유형 (116N)은 기능 (117N)과 관련될 수 있다. 비록 이벤트 유형들 (116A-116N) 및 기능들 (117A-117N)은 예시 및 예제의 목적들을 위하여 도시되었지만, 임의의 적절한 수 및 구성의 이벤트 유형들 및 기능들이 고객 구성 (115)으로 사용될 수 있다는 것이 고려된다. 일 실시예에서, 특정한 이벤트 유형이 관련된 기능을 가지지 않을 수 있다. 이벤트 유형들 (116A-116N)은 일반적으로 에지 서버들 (120A-120N) 중 하나로부터 클라이언트 디바이스들 (180-180N) 중 하나로 컨텐츠의 준비 및/또는 전달동안에 접할 수 있는 이벤트들에 관한 것이다. 이벤트 유형들의 예들이 도 3에 대하여 이하에 논의된다.
기능들 (117A-117N) 및 대응하는 이벤트 유형들 (116A-116N) 과 그것들의 연관들은 예를 들어, 고객 입력 (114)을 이용하여 고객에 의해 특정될 수 있다. 일 실시예에서, 기능들 (117A-117N)은 고객에 의해 구성 서버 (210)에 업로딩될 수 있다. 일 실시예에서, 기능들 (117A-117N)은 미리 정의된 기능들의 세트로부터 고객에 의해 선택될 수 있고; 미리 정의된 기능들의 적어도 일부는 고객 및/또는 추가 고객들에 의해 제공될 수 있다. 기능들 (117A-117N)은 에지 서버들 (120A-120N)상에서의 임의의 적절한 실행 기술들 (해석(interpretation), 컴파일하기(compilation), 및/또는 적시(just-in-time) 컴파일하기의 사용 포함)을 이용하여 실행될 수 있는 프로그램 코드 (프로그램 명령들을 포함)의 세트들을 포함할 수 있다. 따라서, 기능들 (117A-117N)은 스크립팅(scripting) 언어, 하이 레벨 프로그래밍 언어, 컴파일된 프로그램 코드, 또는 임의의 다른 적절한 포맷 또는 포맷들의 조합들을 포함하는 임의의 적절한 포맷으로 고객에 의해 특정될 수 있다. 일 실시예에서, 하나 이상의 기능들 (117A-117N)은 입력의 소스로서의 판독 전용 데이터 저장소를 지칭할 수 있다. 판독 전용 데이터 저장소는 동일한 고객에 의해 특정될 수 있고 기능들 (117A-117N)과 사용을 위해 에지 서버들 (120A-120N)로 전파될 수 있다.
도 3은 일 실시예에 따라 컴퓨터 조작을 트리거링하기 위한 이벤트들의 예들을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다. 일 실시예에서, 이벤트 유형들 (116A-116N)은 컨텐츠 전달 예컨대 컨텐츠 요청(content request) (151), 컨텐츠 응답(content response) (152) (예를 들어, 컨텐츠 요청 (151)에 대한 응답), 원천 요청(origin request) (153), 원천 응답(origin response) (154) (예를 들어, 원천 요청 (153)에 대한 응답), 에러 통지 (155), 및/또는 요청 테어다운(request teardown) (156)을 포함할 수 있다. 일 실시예에서, 이들 이벤트들 중 하나 이상은 특정 고객에 의한 특정 기능과 관련될 수 있고, 특정 기능은 해당 고객에 대한 컨텐츠 전달을 맞춤화하기 위해 대응하는 이벤트의 시간에 또는 그 후에 실행될 수 있다. 이벤트들 (151-156) 중 하나 이상은 클라이언트 디바이스 (180A)로부터 컨텐츠 요청의 프로세싱 동안에 (컨텐츠의 생성 및/또는 검색 및 컨텐츠의 전달을 포함) 접할 수 있다. 일부 환경들에서, 이벤트들 (151-156)의 전체가 아닌 이벤트가 컨텐츠에 대한 특정 요청의 프로세싱에서 접하게 될 수 있다.
일 실시예에서, 에지 서버에서 기능의 실행은 에지 서버, 예컨대 서비스 또는 스토리지 자원에 로컬인 자원을 액세스하는 것을 포함할 수 있다. 일 실시예에서, 기능의 실행은 에지 서버들 (120A-120N) 및 원천 서버(들) (110)외에 서버를 액세스하기 위해 네트워크를 이용하여 제공자 네트워크의 자원을 액세스하는 것을 포함할 수 있다. 예를 들어, 제공자 네트워크의 액세스 가능한 자원들은 다양한 태스크들을 수행하도록 구성된 가상화된 컴퓨팅 자원들, 가상화된 스토리지 자원들, 및 다양한 서비스들을 포함할 수 있다.
컨텐츠 요청 이벤트 (151)는 컨텐츠에 대한 요청이 클라이언트 디바이스 (180A)로부터 에지 서버 (120A)에 의해 수신된 때 일어날 수 있다. 컨텐츠 요청 이벤트 (151)는 컨텐츠 요청 (예를 들어, 캐시(CACHE) 또는 프락시(PROXY) 요청)에 대한 요청 헤더들이 클라이언트 디바이스 (180A)로부터 수신된 때 일어날 수 있다. 임의의 적절한 기능이 컨텐츠 요청 이벤트 (151)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 예를 들어, 컨텐츠 요청 이벤트 (151)과 관련된 기능은 컨텐츠 요청 그 자체를 변경하기 위해 수행될 수 있다 (예를 들어, 실행될 수 있다). 예를 들어, 컨텐츠 요청 이벤트 (151)과 관련된 기능은 컨텐츠 요청의 라우팅을 바꾸고, 컨텐츠 요청의 프로토콜을 바꾸고, 및/또는 원천 요청에 대한 헤더를 변경하기 위해 수행될 수 있다(예를 들어, 실행될 수 있다). 예를 들어, 컨텐츠 요청 이벤트 (151)와 관련된 기능은 컨텐츠 캐시 (121A) 또는 원천 서버(들) (110)로부터 컨텐츠를 검색하지 않고서 컨텐츠 요청에 대한 응답을 동적으로 생성하기 위해 수행될 수 있다(예를 들어, 실행될 수 있다).
컨텐츠 응답 이벤트 (152)는 컨텐츠에 대한 요청에 응답하는 컨텐츠가 요청을 발행하였던 클라이언트 디바이스 (180A)에 발송된 때 일어날 수 있다. 임의의 적절한 기능이 컨텐츠 응답 이벤트 (152)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 예를 들어, 컨텐츠 응답 이벤트 (152)과 관련된 기능은 컨텐츠 응답 그 자체를 변경하기 위해 수행될 수 있다 (예를 들어, 실행될 수 있다).
원천 요청 이벤트 (153)는 에지 서버 (120A)가 원천 서버(들) (110)로부터 컨텐츠를 요청하는 것을 준비하고 있을 때 일어날 수 있다. 예를 들어, 원천 요청(origin request)은 컨텐츠가 컨텐츠 캐시 (121A)에서 발견되지 않은 때 원천 서버(들) (110)로부터 컨텐츠를 획득하기 위해 발행될 수 있다. 따라서, 원천 요청 이벤트 (153)는 만약 요청된 컨텐츠가 컨텐츠 캐시 (121A)에서 발견되면 접하게 되지 않을 수 있다. 임의의 적절한 기능이 원천 요청 이벤트 (153)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 원천 요청 이벤트 (153)와 관련된 기능은 원천 요청 그 자체를 변경하기 위해 수행될 수 있다 (예를 들어, 실행될 수 있다). 예를 들어, 원천 요청 이벤트 (153)와 관련된 기능은 원천 요청의 라우팅을 바꾸고, 원천 요청의 프로토콜을 바꾸고, 및/또는 원천 요청에 대한 인증 헤더를 추가하기 위해 수행될 수 있다(예를 들어, 실행될 수 있다). 예를 들어, 원천 요청 이벤트 (153)와 관련된 기능은 컨텐츠 캐시 (121A) 또는 원천 서버(들) (110)로부터 컨텐츠를 검색하지 않고서 원천 요청에 대한 응답을 동적으로 생성하기 위해 수행될 수 있다(예를 들어, 실행될 수 있다).
원천 응답 이벤트(origin response event) (154)는 원천 요청에 응답하여 컨텐츠가 원천 서버(들) (110)로부터 에지 서버 (120A)에 의해 수신된 때 일어날 수 있다. 다시, 원천 응답 이벤트 (155)는 만약 요청된 컨텐츠가 컨텐츠 캐시 (121A)에서 발견되면 접하게 되지 않을 수 있다. 일 실시예에서, 원천 응답 이벤트 (154)는 컨텐츠가 에지 서버 (120A)에 의해 수신된 때 그러나 컨텐츠가 컨텐츠 캐시 (121A)에 배치되기 전에 일어날 수 있다. 임의의 적절한 기능이 원천 응답 이벤트 (154)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 예를 들어, 원천 응답 이벤트 (154)와 관련된 기능은 원천 응답 그 자체를 변경하기 위해 수행될 수 있다 (예를 들어, 실행될 수 있다).
에러 이벤트 (155)는 에러가 컨텐츠 요청 (151)의 프로세싱 동안에 임의의 적절한 지점에서 생성되거나 또는 접하게 될 때 일어날 수 있다. 예를 들어, 에러는 만약 요청된 컨텐츠가 클라이언트 디바이스 (180A)에 전달될 수 없다면 생성될 수 있다. 임의의 적절한 기능이 에러 이벤트 (155)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 예를 들어, 에러 이벤트 (155)와 관련된 기능은 에러 페이지 또는 다른 에러 통지, 예를 들어, 클라이언트 디바이스 (180A)에 발송되는 에러를 페치(fetch), 변경 또는 그렇지 않으면, 생성하기 위해 수행될 수 있다(예를 들어, 실행될 수 있다).
요청 테어다운 이벤트(request teardown event) (156)는 컨텐츠 응답 (152) 또는 에러 (155) 후에 일어날 수 있다. 요청 테어다운 (156)은 컨텐츠에 대한 요청 프로세싱과 관련된 하나 이상의 성능 메트릭들 및 또는 로그 엔트리들을 생성할 수 있다. 임의의 적절한 기능이 요청 테어다운 이벤트 (156)에 응답하여 에지 서버 (120A)에 의해 수행될 수 있다. 예를 들어, 요청 테어다운 이벤트 (156)와 관련된 기능은 하나 이상의 메트릭들 및/또는 로그 엔트리들을 생성하고 그것들을 메트릭들 및 로그들 (160)의 저장소에 저장하기 위해서 수행될 수 있다 (예를 들어, 실행될 수 있다).
도 4는 일 실시예에 따라 에지 서버에서 이벤트-트리거된 기능들의 보안 실행을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다. 이벤트-트리거된 컴퓨터의 조작 기능 (122A)은 예를 들어, 프로세스 분리를 위해 하나 이상의 기술들을 이용하여 보안 방식으로 컨텐츠 전달을 맞춤화하기 위한 기능들을 수행할 수 있다 (예를 들어, 실행할 수 있다). 본 출원에서 사용되는, 용어 “프로세스 분리(process isolation)”는 일반적으로 서로로부터 기능들의 프로세싱의 분리를 포함하여서 제 1 기능은 제 2 기능 (또는 제 2 기능과 관련된 데이터)에 직접 영향을 미치지 않거나 또는 액세스하지 않을 수 있다. 일 실시예에서, 임의의 에지 서버들 (120A-120N)은 프로세스 분리를 이용하여 고객에-특정된 기능들을 실행하기 위한 하나 이상의 컴포넌트들을 포함하는 보안 실행 환경(secure execution environment)을 구현할 수 있다. 프로세스 분리를 제공하기 위한 보안 실행 환경의 구현예는 고객에-특정된 기능들에 임의의 프로그램 코드의 보안 실행을 허용할 수 있다. 에지 서버 (120A), 컨텐츠 요청 프로세싱 모듈 (130A)은 클라이언트 디바이스 (180A)로부터 컨텐츠에 대한 요청을 수신할 수 있다. 상기에서 논의된 바와 같이, 하나 이상의 컨텐츠 전달 이벤트들 (예컨대 이벤트들 (151-156))은 컨텐츠에 대한 요청 프로세싱시에 접하게 될 수 있다. 예를 들어, 요청을 프로세싱하는 것은 만약 컨텐츠가 컨텐츠 캐시 (121A)에 이미 저장되지 않으면 에지 서버 (120A)가 원천 서버(들) (110)로부터 컨텐츠 (112)를 요청하는 것을 포함할 수 있다. 고객 구성 (115)에 관련된 기능과 관련된 이벤트가 접하게 된 때, 에지 서버 (120A)에서 트리거링 모듈(triggering module) (131A)은 해당 기능의 실행을 개시할 수 있다.
이벤트-트리거된 컴퓨터의 조작 (122A)은 이벤트들과 기능들 사이의 연관(association)들을 결정하기 위해서 고객 구성 (115)을 참조할 수 있다. 일 실시예에서, 각각의 기능은 대응하는 이벤트에 의해 트리거된 후에 그것 자체의 분리된 컨테이너에서 실행될 수 있다. 에지 서버 (120A)는 복수의 컨테이너들 (142A)를 포함할 수 있다. 컨테이너들 (142A)은 복수의 기능들의 실행을 위한 프로세스 분리(process isolation)을 제공할 수 있다. 컨테이너들 (142A)의 각각은 컨텐츠 전달 이벤트들과 관련된 기능들의 실행을 위한 보안 실행 환경을 구현할 수 있다. 임의의 적절한 기술들이 컨테이너들 (142A)을 구현하기 위해 사용될 수 있다. 일 실시예에서, 임의의 컨테이너들 (142A)은 기능이 수행될 수 있는 가상 기계를 구현할 수 있다. 임의의 적절한 가상 기계 기술들이 컨테이너들 (142A)를 구현하기 위해 사용될 수 있다. 일 실시예에서, 임의의 컨테이너들 (142A)은 기능이 수행될 수 있는 리눅스 컨테이너(Linux container)를 구현할 수 있다. 각각의 리눅스 컨테이너는 그것 자체의 컴퓨터 조작, 메모리, 입력/출력, 및 네트워크 자원들을 포함하는 가상 환경을 제공할 수 있다. 컨테이너들 (142A)는 한 명의 고객을 위한 또는 다수의 고객들을 위한 기능들의 실행을 위해 총괄하여 사용될 수 있다. 사용시에 컨테이너들 (142A) 중 임의의 컨테이너는, 임의의 주어진 시간에 한 명의 특정 고객을 위해 기능을 수행하도록 사용될 수 있다는 것이 고려된다.
컨테이너들 (142A)은 컨테이너 관리기 모듈 (140A)에 의해 관리될 수 있다. 예를 들어, 컨테이너 관리기 (140A)는 컨테이너들을 인스턴스화(instantiate) 할 수 있고, 컨테이너들을 리사이클 또는 리셋(reset)할 수 있고, 컨테이너들을 파기(destroy)할 수 있고, 컨테이너들 (142A)를 관리하기 위한 임의의 다른 적절한 태스크들을 수행할 수 있다. 트리거링 모듈 (131A)은 컨테이너 관리기 (140A)에, 예를 들어, 특정 기능의 실행을 위해 컨테이너를 인스턴스화하거나 또는 그렇지 않으면 준비하기 위해 컨테이너 관리기 (140A)에 명령하는 제어 메시지들을 발송할 수 있다. 트리거링 모듈 (131A)은 요청 라우팅 모듈 (141A)에 기능 실행 메시지들을 발송할 수 있고, 요청 라우팅 모듈 (141A)은 특정 기능들의 실행을 개시하기 위해 적절한 컨테이너들에 해당 메시지들을 포워딩 할 수 있다. 일 실시예에서, 특정 기능들을 위한 컨테이너들은 접하게 되는 대응하는 이벤트들에 앞서서 인스턴스화될 수 있고, 요청 라우팅 모듈 (141A)은 대응하는 이벤트들이 트리거된 때 해당 미리 구성된 컨테이너들에 실행 요청들을 라우팅할 수 있다. 일 실시예에서, 특정 기능들을 위한 컨테이너들은 접하는 대응하는 이벤트들 후에 인스턴스화될 수 있고, 요청 라우팅 모듈 (141A)은 대응하는 이벤트들이 트리거된 때 해당 컨테이너들에 실행 요청들을 라우팅할 수 있다. 컨테이너들에 기능들의 실행의 결과들은 임의의 적절한 방식으로, 예를 들어, 컨테이너들 (142A)로부터 컨텐츠 요청 프로세싱 모듈 또는 트리거링 모듈 (131A)로 컨텐츠 요청 프로세싱 모듈 (130A)로 다시 라우팅될 수 있다.
도 5는 일 실시예에 따라, 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 방법을 예시하는 플로우 차트이다. (505)에 도시된 바와 같이, 기능들은 컨텐츠 전달에 대한 이벤트들의 유형들과 관련될 수 있다. 기능들은 컨텐츠 전달 네트워크 (CDN)의 하나 이상의 고객들로부터의 고객 입력에 기초하여 이벤트들과 관련될 수 있다. 기능들은 이용 가능한 기능들의 세트에서 고객(들)에 의해 특정될 수 있거나 또는 고객(들)에 의해 선택될 수 있다. 기능들은 일반적으로 CDN로부터 컨텐츠에 대한 요청의 프로세싱시에 (컨텐츠의 전달 및 컨텐츠 생성 또는 검색을 포함) 실행될 수 있거나 또는 그렇지 않으면, 수행될 수 있는 프로그램 코드의 세트를 (프로그램 명령들을 포함) 포함할 수 있다. 이벤트들은 컨텐츠 전달 예컨대 컨텐츠 요청, 컨텐츠 응답 (예를 들어, 컨텐츠 요청에 대한 응답), 원천 요청, 원천 응답 (예를 들어, 원천 요청에 대한 응답), 에러 통지, 및/또는 요청 테어다운에 관련된 이벤트들을 포함할 수 있다. 일 실시예에서, 판독 전용 데이터 저장소가 또한 특정될 수 있다(예를 들어, 고객 입력에 기초하여).
(510)에 도시된 바와 같이, 고객에-특정된 기능들이 CDN내 복수의 에지 서버들로 발송될 수 있다. 일 실시예에서, 기능들은 에지 서버들에 전파되기 전에 중앙 집중된 위치, 예컨대 구성 서버에 이벤트들에 대해 특정될 수 있다. 에지 서버들로 기능들을 발송하는 것은 기능들과 대응하는 이벤트 유형들 사이에 연관들을 발송하는 것을 또한 포함할 수 있다. 일 실시예에서, 판독 전용 데이터 저장소가 또한 에지 서버들로 전파될 수 있다.
(515)에 도시된 바와 같이, 컨텐츠 요청은 클라이언트 디바이스로부터 에지 서버에서 수신될 수 있다. 요청은 원천 서버로부터 또는 에지 서버에서 컨텐츠 캐시로부터 컨텐츠에 대한 요청을 나타낼 수 있다. 에지 서버는 컨텐츠를 생성하기 위해 요청의 프로세싱을 개시할 수 있고, 프로세싱은 하나 이상의 이벤트들을 접하는 것을 포함할 수 있다. (520) 내지 (535)에 도시된 바와 같이, 에지 서버는 다양한 이벤트들을 통하여 반복할 수 있고 임의의 관련된 기능들을 수행할 수 있다. 이런 식으로, 컨텐츠는 이벤트들에 의해 트리거된 하나 이상의 고객에-특정된 기능들의 실행에 (적어도 부분적으로) 기초하여 생성될 수 있다. (520)에 도시된 바와 같이, 에지 서버는 기능이 현재 이벤트 (예를 들어, 고객에 의해 특정된)에 링크되는지 여부를 결정할 수 있다. 만약 그렇다면, (525)에 도시된 바와 같이, 기능은 에지 서버에서 실행되거나 또는 그렇지 않으면, 수행될 수 있다. 일 실시예에서, 기능은 프로세스 분리를 이용하여 컨테이너(container)에서 실행될 수 있어서 컨테이너는 추가 컨테이너들에서 실행하는 추가 기능들로부터 분리될 수 있다. 기능의 실행은 에지 서버들에 복제된 판독 전용 데이터 저장소로부터 하나 이상의 엘리먼트들을 이용하는 것 그리고 검색하는 것을 포함할 수 있다. (530)에 도시된 바와 같이, 요청의 프로세싱과 관련된 모든 이벤트들이 접해 졌는지 여부가 결정될 수 있다. 만약 그렇지 않다면, (535)에 도시된 바와 같이, 방법은 다음 이벤트로 진행할 수 있다. 일단 모든 이벤트들이 접해진 후에, (540)에 도시된 바와 같이, 에지 서버는 컨텐츠를 클라이언트 디바이스에 발송할 수 있다.
본 출원에 논의된 CDN은 상이한 고객들에 대한 고객에-특정된 기능들이 동일한 에지 서버상의 상이한 이벤트들에 의해 트리거될 수 있도록 멀티-테넌시(tenancy)를 위한 기술들을 구현할 수 있다. 일 실시예에서, 추가 컨텐츠에 대한 추가 요청이 에지 서버에서 수신될 수 있다. 추가 요청은 상이한 고객으로부터 예를 들어, 원천 서버로부터 또는 에지 서버에서 컨텐츠 캐시로부터 컨텐츠에 대한 요청을 나타낼 수 있다. 에지 서버는 컨텐츠를 생성하기 위한 추가 요청의 프로세싱을 개시할 수 있고, 프로세싱은 하나 이상의 이벤트들을 접하는 것을 포함할 수 있다. (520) 내지 (535)에 대하여 상기에서 논의된 바와 같이, 에지 서버는 다양한 이벤트들을 통하여 반복할 수 있고 임의의 관련된 기능들을 수행할 수 있다. 이런 식으로, 추가 컨텐츠는 상이한 고객에 의해 특정된 하나 이상의 이벤트-트리거된 기능들의 실행에 (적어도 부분적으로) 기초하여 생성될 수 있다. 일단 모든 이벤트들이 접해진 후에, 에지 서버는 추가 컨텐츠를 클라이언트 디바이스에 발송할 수 있다.
도 6은 일 실시예에 따른 에지 위치들에 판독 전용 데이터 저장소의 복제를 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다. 에지 서버들 (120A-120N)에서 이벤트-트리거된 컴퓨터의 조작은 CDN (100)의 하나 이상의 고객들 또는 다른 유저들에 의해 맞춤화될 수 있다. 일 실시예에서, 고객 입력 (614)은 이벤트-트리거된 컴퓨터의 조작을 수행하기 위해 사용 가능한 판독 전용 데이터 저장소 (615)을 (적어도 부분적으로) 특정, 정의, 또는 그렇지 않으면, 결정하기 위해 사용될 수 있다. 상기에서 논의된 바와 같이, CDN (100)의 고객들은 클라이언트 디바이스들 (180A-180N)에 대한 CDN 전달 컨텐츠 (예를 들어, 고객들에 의해 공급되거나 또는 선택되는 컨텐츠)를 가지려고 하는 엔티티들 (예를 들어, 사람들, 비즈니스들, 및/또는 다른 조직들)을 나타낼 수 있어서, 컨텐츠는 고객을 위하여 클라이언트들에게 전달되는 것을 말할 수 있다. 고객 입력 (614)은 CDN (100)의 특정 고객에 의해 제공된 입력을 나타낼 수 있고, 판독 전용 데이터 저장소 (615)은 해당 특정 고객을 위한 데이터 저장소를 나타낼 수 있다. 일 실시예에서, 추가 판독 전용 데이터 저장소들은 동일한 고객을 위한 및/또는 추가 고객들을 위한 구성 서버 (210)에 의해 유지될 수 있다. 일 실시예에서, 판독 전용 데이터 저장소 (615)는 특정 고객을 위한 특정한 애플리케이션 또는 데이터세트에 관한 것일 수 있고, 특정 고객은 추가의 애플리케이션들 또는 추가의 데이터세트들을 위한 추가의 판독 전용 데이터 저장소들을 특정할 수 있다.
고객 입력 (614)은 임의의 적절한 인터페이스(들), 예컨대 애플리케이션 프로그래밍 인터페이스 (API : application programming interface) 및/또는 그래픽 유저 인터페이스 (GUI : graphical user interface)를 이용하여 고객에 의해 제공될 수 있다. 예를 들어, 고객은 적절한 API를 구성 서버 (210)에 판독 전용 데이터 저장소 (615)에 대한 데이터의 엘리먼트들을 업로딩 할 수 있고, 그렇게 함으로써 판독 전용 데이터 저장소 (615)를 차지할 수 있다(populate). 고객 입력 (614)은 판독 전용 데이터 저장소 (615)의 엘리먼트들을 특정하기 위해서 중앙 집중된 컴포넌트 예컨대 구성 서버 (210)에 제공될 수 있다. 판독 전용 데이터 저장소 (615)은 그런 다음 구성 서버 (210)로부터 에지 서버들 (120A-120N)로 전파될 수 있다. 판독 전용 데이터 저장소 (615)에 대한 업데이트들(예를 들어, 추가 고객 입력에 기초하여)이 또한 구성 서버 (210)에서 만들어질 수 있고 그런다음 에지 서버들 (120A-120N)로 푸시 될 수 있다. 이런 식으로, 동일한 판독 전용 데이터 저장소 (615)를 이용하는 이벤트-트리거된 컴퓨터의 조작은 복수의 에지 서버들, 예컨대 에지 서버들 (120A-120N)에 걸쳐 특정 고객 (및 잠재적으로 해당 고객에 대한 특정한 애플리케이션 또는 특정한 데이터세트를 위하여)을 위하여 구현될 수 있다. 구성 서버 (210)는 에지 서버들 (120A-120N)에 대하여 임의의 적절한 위치에 위치될 수 있고 도 9에 예시된 예 컴퓨팅 디바이스 (3000)에 의해 구현될 수 있다.
임의의 적절한 스토리지 기술들이 판독 전용 데이터 저장소 (615)를 구현하기 위해 사용될 수 있다. 일 실시예에서, 판독 전용 데이터 저장소 (615)는 복수의 키-값 쌍들을 저장하는 키-값 데이터 저장소일 수 있다. 도 6의 예에 도시된 바와 같이, 판독 전용 데이터 저장소 (615)에 데이터의 엘리먼트들은 키 (616A) 및 관련된 값 (617A), 키 (616B) 및 관련된 값 (617B), 및 키 (616N) 및 관련된 값 (617N)을 포함할 수 있다. 그러나, 임의의 적절한 수 및 구성의 데이터 엘리먼트들이 판독 전용 데이터 저장소 (615)를 이용하여 유지될 수 있다는 것이 고려된다. 일 실시예에서, 고객에 의해 특정된 하나 이상의 기능들은 입력의 소스로서의 판독 전용 데이터 저장소(615)를 지칭할 수 있다. 판독 전용 데이터 저장소 및 기능들은 동일한 고객에 의해 특정될 수 있고 둘 모두는 에지 서버들 (120A-120N)로 전파될 수 있다.
도 7은 일 실시예에 따른 복제된 판독 전용 데이터 저장소를 이용하여, 에지 서버에서 이벤트-트리거된 기능들의 보안 실행을 포함하는 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 예제 시스템 환경의 추가 측면들을 예시한다. 이벤트-트리거된 컴퓨터의 조작 기능 (122A)은 예를 들어, 프로세스 분리를 위해 하나 이상의 기술들을 이용하여 보안 방식으로 컨텐츠 전달을 맞춤화하기 위한 기능들을 수행할 수 있다 (예를 들어, 실행할 수 있다). 본 출원에서 사용되는, 용어 “프로세스 분리(process isolation)”는 일반적으로 서로로부터 기능들의 프로세싱의 분리를 포함하여서 제 1 기능은 제 2 기능 (또는 제 2 기능과 관련된 데이터)에 직접 영향을 미치지 않거나 또는 액세스하지 않을 수 있다. 일 실시예에서, 임의의 에지 서버들 (120A-120N)은 프로세스 분리를 이용하여 고객에-특정된 기능들을 실행하기 위한 하나 이상의 컴포넌트들을 포함하는 보안 실행 환경(secure execution environment)을 구현할 수 있다. 에지 서버 (120A), 컨텐츠 요청 프로세싱 모듈 (130A)은 클라이언트 디바이스 (180A)로부터 컨텐츠에 대한 요청을 수신할 수 있다. 상기에서 논의된 바와 같이, 하나 이상의 컨텐츠 전달 이벤트들 (예컨대 이벤트들 (151-156))은 컨텐츠에 대한 요청 프로세싱시에 접하게 될 수 있다. 예를 들어, 요청을 프로세싱하는 것은 만약 컨텐츠가 컨텐츠 캐시 (121A)에 이미 저장되지 않으면 에지 서버 (120A)가 원천 서버(들) (110)로부터 컨텐츠 (112)를 요청하는 것을 포함할 수 있다. 고객 구성 (115)에 관련된 기능과 관련된 이벤트가 접하게 된 때, 에지 서버 (120A)에서 트리거링 모듈(triggering module) (131A)은 해당 기능의 실행을 개시할 수 있다. 기능의 실행은 판독 전용 데이터 저장소(615)로부터 데이터의 하나 이상의 엘리먼트들 예를 들어, 하나 이상의 키들과 관련된 하나 이상의 값들을 이용하는 것 그리고 검색하는 것을 포함할 수 있다. 생성되고 요청 디바이스 (180A)에 발송된 컨텐츠는 판독 전용 데이터 저장소 (615)로부터의 데이터의 엘리먼트들을 포함할 수 있거나 또는 그것에 (적어도 부분적으로) 기초될 수 있다.
이벤트-트리거된 컴퓨터의 조작 (122A)은 이벤트들과 기능들 사이의 연관(association)들을 결정하기 위해서 고객 구성 (115)을 참조할 수 있다. 일 실시예에서, 각각의 기능은 대응하는 이벤트에 의해 트리거된 후에 그것 자체의 분리된 컨테이너에서 실행될 수 있다. 에지 서버 (120A)는 복수의 컨테이너들 (142A)를 포함할 수 있다. 컨테이너들 (142A)은 복수의 기능들의 실행을 위한 프로세스 분리(process isolation)를 제공할 수 있다. 컨테이너들 (142A)의 각각은 컨텐츠 전달 이벤트들과 관련된 기능들의 실행을 위한 보안 실행 환경을 구현할 수 있다. 임의의 적절한 기술들이 컨테이너들 (142A)를 구현하기 위해 사용될 수 있다. 일 실시예에서, 임의의 컨테이너들 (142A)은 기능이 수행될 수 있는 가상 기계를 구현할 수 있다. 임의의 적절한 가상 기계 기술들이 컨테이너들 (142A)를 구현하기 위해 사용될 수 있다. 일 실시예에서, 임의의 컨테이너들 (142A)은 기능이 수행될 수 있는 리눅스 컨테이너(Linux container)를 구현할 수 있다. 각각의 리눅스 컨테이너는 그것 자체의 컴퓨터 조작, 메모리, 입력/출력, 및 네트워크 자원들을 포함하는 가상 환경을 제공할 수 있다. 컨테이너들 (142A)는 한 명의 고객을 위한 또는 다수의 고객들을 위한 기능들의 실행을 위해 총괄하여 사용될 수 있다. 사용시에 컨테이너들 (142A) 중 임의의 컨테이너는, 임의의 주어진 시간에 한 명의 특정 고객을 위해 기능을 수행하도록 사용될 수 있다는 것이 고려된다.
컨테이너들 (142A)은 컨테이너 관리기 모듈 (140A)에 의해 관리될 수 있다. 예를 들어, 컨테이너 관리기 (140A)는 컨테이너들을 인스턴스화(instantiate) 할 수 있고, 컨테이너들을 리사이클 또는 리셋(reset)할 수 있고, 컨테이너들을 파기(destroy)할 수 있고, 컨테이너들 (142A)를 관리하기 위한 임의의 다른 적절한 태스크들을 수행할 수 있다. 트리거링 모듈 (131A)은 컨테이너 관리기 (140A)에, 예를 들어, 특정 기능의 실행을 위해 컨테이너를 인스턴스화하거나 또는 그렇지 않으면 준비하기 위해 컨테이너 관리기 (140A)에 명령하는 제어 메시지들을 발송할 수 있다. 트리거링 모듈 (131A)은 요청 라우팅 모듈 (141A)에 기능 실행 메시지들을 발송할 수 있고, 요청 라우팅 모듈 (141A)은 특정 기능들의 실행을 개시하기 위해 적절한 컨테이너들에 해당 메시지들을 포워딩 할 수 있다. 일 실시예에서, 특정 기능들을 위한 컨테이너들은 접하게 되는 대응하는 이벤트들에 앞서서 인스턴스화될 수 있고, 요청 라우팅 모듈 (141A)은 대응하는 이벤트들이 트리거된 때 해당 미리 구성된 컨테이너들에 실행 요청들을 라우팅할 수 있다. 일 실시예에서, 특정 기능들을 위한 컨테이너들은 접하는 대응하는 이벤트들 후에 인스턴스화될 수 있고, 요청 라우팅 모듈 (141A)은 대응하는 이벤트들이 트리거된 때 해당 컨테이너들에 실행 요청들을 라우팅할 수 있다. 컨테이너들에 기능들의 실행의 결과들은 임의의 적절한 방식으로, 예를 들어, 컨테이너들 (142A)로부터 o 컨텐츠 요청 프로세싱 모듈 또는 트리거링 모듈 (131A)로 컨텐츠 요청 프로세싱 모듈 (130A)로 다시 라우팅될 수 있다.
도 8은 일 실시예에 따른, 에지 위치들에 판독 전용 데이터 저장소의 복제를 위한 방법의 플로우 차트이다. (805)에 도시된 바와 같이, 판독 전용 데이터 저장소가 특정될 수 있다. 데이터 저장소는 컨텐츠 전달 네트워크 (CDN)의 고객에 의해, 예를 들어, 고객이 이용 가능한 엘리먼트들의 세트로부터 데이터의 선택된 엘리먼트들 및/또는 데이터 저장소에 대한 데이터의 엘리먼트들을 업로드시킴으로써 특정될 수 있다. 데이터 저장소는 복수의 키-값 쌍들을 포함할 수 있다. 일 실시예에서, 고객은 이벤트들과 관련되는 하나 이상의 기능들 을 또한 특정할 수 있다. 기능들은 일반적으로 CDN로부터 컨텐츠에 대한 요청의 프로세싱시에 (컨텐츠의 전달 및 컨텐츠 생성 또는 검색을 포함) 실행될 수 있거나 또는 그렇지 않으면, 수행될 수 있는 프로그램 코드의 세트를 (프로그램 명령들을 포함) 포함할 수 있다. 이벤트들은 컨텐츠 전달 예컨대 컨텐츠 요청, 컨텐츠 응답 (예를 들어, 컨텐츠 요청에 대한 응답), 원천 요청, 원천 응답 (예를 들어, 원천 요청에 대한 응답), 에러 통지, 및/또는 요청 테어다운에 관련된 이벤트들을 포함할 수 있다.
(810)에 도시된 바와 같이, 판독 전용 데이터 저장소가 CDN내 복수의 에지 서버들로 발송될 수 있다. 각각의 에지 서버들은 잠재적으로 오프-서버 스토리지를 포함하여 에지 서버에 의해 관리되는 스토리지 자원들에 데이터 저장소의 로컬 복사본(local copy)을 유지할 수 있다. 판독 전용 데이터 저장소는 에지 서버들에 전파되기 전에 중앙 집중된 위치, 예컨대 구성 서버에 특정될 수 있다. 판독 전용 데이터 저장소를 에지 서버들에 발송하는 것은 판독 전용 데이터 저장소의 로컬 복사본들 또는 인스턴스들을 차지하기 위해 데이터를 에지 서버들로 발송하는 것을 포함할 수 있다. 일 실시예에서, 고객에-특정된 기능(들)이 CDN내 복수의 에지 서버들로 또한 발송될 수 있다. 에지 서버들로 기능들을 발송하는 것은 기능들과 대응하는 이벤트 유형들 사이에 연관들을 발송하는 것을 또한 포함할 수 있다.
(815)에 도시된 바와 같이, 컨텐츠 요청은 클라이언트 디바이스로부터 에지 서버에서 수신될 수 있다. 요청은 원천 서버로부터 또는 에지 서버에서 컨텐츠 캐시로부터 컨텐츠에 대한 요청을 나타낼 수 있다. (820)에 도시된 바와 같이, 에지 서버는 컨텐츠를 생성하기 위해 요청의 프로세싱을 개시할 수 있고, 프로세싱은 하나 이상의 기능들을 수행하는 것을 포함할 수 있다. 요청된 컨텐츠를 생성하기 위해서, 하나 이상의 기능들은 에지 서버에 판독 전용 데이터 저장소로부터 데이터의 엘리먼트들을 검색 및 사용할 수 있다. 일 실시예에서, 하나 이상의 기능들은 입력으로서 판독 전용 데이터 저장소의 로컬 복사본으로부터의 데이터를 참조하는 파라미터들을 포함할 수 있다. 컨텐츠 요청 프로세싱시에, 하나 이상의 이벤트들이 접하게 될 수 있다. 특정 기능들은 특정 이벤트들과 관련될 수 있어서, 각각의 기능들 (예를 들어, 또한 판독 전용 데이터 저장소를 특정한 고객에 의해 특정된)은 대응하는 이벤트가 컨텐츠 요청의 프로세싱시에 접하게 된 때 수행될 수 있다. 기능을 에지 서버에서 수행하는 것은 판독 전용 데이터 저장소의 로컬 복사본으로부터 데이터를 검색하는 것 및 사용하는 것을 포함할 수 있다. (825)에 도시된 바와 같이, 에지 서버는 컨텐츠를 클라이언트 디바이스에 발송할 수 있다.
예시적 컴퓨터 시스템
적어도 일부 실시예들에서, 본 출원에서 설명된 하나 이상의 기술들의 일부 또는 전부를 구현하는 컴퓨터 시스템은 하나 이상의 컴퓨터-판독가능한 매체들을 포함하거나 또는 액세스하도록 구성된 컴퓨터 시스템을 포함할 수 있다. 도 9 는 이런 컴퓨팅 디바이스 (3000)을 예시한다. 예시된 실시예에서, 컴퓨팅 디바이스(3000)는 입력/출력(I/O) 인터페이스(3030)를 통해 시스템 메모리(3020)에 결합된 하나 이상의 프로세서들(3010)을 포함한다. 컴퓨팅 디바이스(3000)는 I/O 인터페이스(3030)에 결합된 네트워크 인터페이스(3040)를 더 포함한다.
다양한 실시예들에서, 컴퓨팅 디바이스(3000)는 하나의 프로세서(3010), 또는 여러 개의 프로세서들(3010)(예로서, 2, 4, 8, 또는 다른 적절한 수)을 포함한 다중프로세서 시스템을 포함한 유니프로세서 시스템일 수 있다. 프로세서들(3010)은 지시들을 실행할 수 있는 임의의 적절한 프로세서를 포함할 수 있다. 예를 들면, 다양한 실시예들에서, 프로세서들(3010)은 x86, PowerPC, SPARC, 또는 MIPS ISA들, 또는 임의의 다른 적절한 ISA와 같은, 다양한 명령 세트 아키텍처들(ISA들) 중 임의의 것을 구현한 프로세서들일 수 있다. 다중프로세서 시스템들에서, 프로세서들(3010)의 각각은, 일반적으로, 반드시는 아니지만, 동일한 ISA를 구현할 수 있다.
시스템 메모리(3020)는 프로세서(들)(3010)에 의해 액세스 가능한 프로그램 명령들 및 데이터를 저장하도록 구성될 수 있다. 다양한 실시예들에서, 시스템 메모리(3020)는 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 RAM(SDRAM), 비휘발성/플래시-형 메모리, 또는 임의의 다른 유형의 메모리와 같은, 임의의 적절한 메모리 기술을 사용하여 구현될 수 있다. 예시된 실시예에서, 상기 설명된 이들 방법들, 기술들 및 데이터와 같은, 하나 이상의 원하는 기능들을 구현한 프로그램 지시들 및 데이터는 코드(즉, 프로그램 명령들)(3025) 및 데이터(3026)로서 시스템 메모리(3020) 내에 저장되어 도시된다.
일 실시예에서, I/O 인터페이스 (3030)는 프로세서 (3010), 시스템 메모리 (3020) 및 네트워크 인터페이스 (3040) 또는 다른 주변기기 인터페이스들을 포함하는 디바이스내 임의의 주변 디바이스들 사이에 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예들에서, I/O 인터페이스(3030)는 하나의 구성요소(예로서, 시스템 메모리(3020))에서 다른 구성요소(예로서, 프로세서(3010))에 의한 사용에 적합한 포맷으로 데이터 신호들을 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환들을 수행할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(3030)는 예를 들면, 주변 구성요소 상호 연결(PCI) 버스 표준 또는 범용 직렬 버스(USB) 표준의 변형과 같은, 다양한 유형들의 주변 버스들을 통해 접속된 디바이스들에 대한 지원을 포함할 수 있다. 몇몇 실시예들에서, I/O 인터페이스(3030)의 기능은 예를 들면, 노스 브리지 및 사우스 브리지와 같은, 둘 이상의 별개의 구성요소들로 분리될 수 있다. 또한, 몇몇 실시예들에서 시스템 메모리(3020)로의 인터페이스와 같은, I/O 인터페이스(3030)의 기능 중 일부 또는 모두는 프로세서(3010)로 직접 통합될 수 있다.
네트워크 인터페이스 (3040)는 데이터가 컴퓨팅 디바이스 (3000)와 네트워크 또는 네트워크들(3050)에 부착된 다른 디바이스들(3060) 간에 교환되는 것을 허용하도록 구성될 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(3040)는 예를 들면, 이더넷 네트워크의 유형들과 같은, 임의의 적절한 유선 또는 무선 일반 데이터 네트워크들을 통해 통신을 지원할 수 있다. 부가적으로, 네트워크 인터페이스(3040)는 파이버 채널 SAN들과 같은 저장 영역 네트워크들을 통해, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해, 아날로그 음성 네트워크들 또는 디지털 파이버 통신들 네트워크들과 같은 전기통신들/전화 네트워크들을 통해 통신을 지원할 수 있다.
몇몇 실시예들에서, 시스템 메모리(3020)는 대응하는 방법들 및 장치의 실시예들을 구현하기 위해 상기에서 설명된 바와 같이 프로그램 지시들 및 데이터를 저장하도록 구성된 컴퓨터-판독 가능한 (즉, 컴퓨터-액세스 가능한) 매체의 일 실시예일 수 있다. 그러나, 다른 실시예들에서, 프로그램 지시들 및/또는 데이터는 상이한 유형들의 컴퓨터-판독 가능한 매체 상에서 수신되고, 전송되거나 또는 저장될 수 있다. 일반적으로 말해서, 컴퓨터-판독 가능한 매체는 자기 또는 광 미디어, 예로서, I/O 인터페이스(3030)를 통해 컴퓨팅 디바이스(3000)에 결합된 디스크 또는 DVD/CD와 같은 비-일시적 저장 미디어 또는 메모리 미디어를 포함할 수 있다. 비-일시적 컴퓨터-판독가능한 스토리지 매체는 시스템 메모리(3020) 또는 다른 유형의 메모리로서 컴퓨팅 디바이스 (3000)의 일부 실시예들에 포함될 수 있는 RAM (예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM, 등.), ROM, 등과 같은 임의의 휘발성 또는 비-휘발성 매체들을 또한 포함할 수 있다. 뿐만 아니라, 컴퓨터-판독 가능한 매체는 네트워크 인터페이스(3040)를 통해 구현될 수 있는 바와 같이, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달된, 전기, 전자기 또는 디지털 신호들과 같은 송신 미디어 또는 신호들을 포함할 수 있다. 도 9에 예시된 것과 같은 다수의 컴퓨팅 디바이스들 중 일부들 또는 모두는 다양한 실시예들에서 설명된 기능을 구현하기 위해 사용될 수 있으며; 예를 들면, 다양한 상이한 디바이스들 및 서버들 상에서 실행하는 소프트웨어 구성요소들은 기능을 제공하기 위해 협력할 수 있다. 몇몇 실시예들에서, 설명된 기능의 부분들은 저장 디바이스들, 네트워크 디바이스들, 또는 컴퓨터 시스템들을 사용하여 구현될 수 있다. 여기에서 사용된, 용어(“컴퓨팅 디바이스(computing device)”)는 적어도 모든 이들 유형들의 디바이스들을 나타내며, 이들 유형들의 디바이스들에 제한되지 않는다.
다양한 실시예들은 컴퓨터-판독 가능한 매체에 대한 앞서 말한 설명에 따라 구현된 지시들 및/또는 데이터를 수신하는 것, 발송하는 것, 또는 저장하는 것을 더 포함할 수 있다. 일반적으로 말해서, 컴퓨터-판독 가능한 매체는 예로서, 디스크 또는 DVD/CD-ROM과 같은 자기 또는 광 미디어, RAM(예로서, SDRAM, DDR, RDRAM, SRAM 등), ROM 등과 같은 휘발성 또는 비-휘발성 미디어와 같은 스토리지 매체 또는 메모리 매체를 포함할 수 있다. 몇몇 실시예들에서, 컴퓨터-판독 가능한 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달된, 전기, 전자기 또는 디지털 신호들과 같은 송신 미디어 또는 신호들을 또한 포함할 수 있다.
도면들에 예시되며 본 출원에서 설명된 다양한 방법들은 방법들의 실시예들의 예제들을 나타낸다. 방법들은 소프트웨어, 하드웨어 또는 그것의 조합으로 구현될 수 있다. 다양한 방법들에서, 단계들의 순서는 변경될 수 있으며, 다양한 요소들이 부가되고, 재순서화되고, 조합되고, 생략되고, 수정될 수 있다. 단계들 중 다양한 단계들은 자동으로 (예를 들어, 유저 입력에 의한 직접 프롬프트되지 않고서) 및/또는 프로그램에 따라서 (예를 들어, 프로그램 명령들에 따라) 수행될 수 있다.
본 출원에서 본 발명의 상세한 설명에 사용되는 용어는 단지 특정 실시예들을 설명하기 위한 목적을 위한 것이고 본 발명을 제한하려는 것으로 의도되지 않는다. 본 발명 및 첨부된 청구항들의 설명에서 사용되는, 단수 형태 “a,” “an,” 또는 “the”는 문맥상 명확하게 달리 서술되지 않는 한 복수 등가물들을 또한 포함하도록 의도된다. 또한 본 출원에서 사용되는 용어 “및/또는”는 하나 이상의 관련된 나열된 아이템들의 임의의 것 및 모든 가능한 조합들을 지칭하고 아우르는 것으로 이해될 것이다. 본 명세서에서 사용될 때 용어들 "포함한다(includes)", "포함하는(including)", "포함한다(comprises)" 및/또는 "포함하는(comprising)"는 언급된 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 특정하지만, 그러나 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 그것의 그룹들의 존재 또는 부가를 배제하지 않은 것이 추가로 이해될 것이다.
본 출원에서 사용되는, 용어 “만약(if)”은 상황에 의존하여 “하면(when)” 또는 “에 기초하여(upon)” 또는 “결정한 것에 응답하여” 또는 “감지한 것에 응답하여,”를 의미하는 것으로 이해될 수 있다. 유사하게, 어구 “만약 그것이 결정되면” 또는 “만약 [언급된 상태 또는 이벤트]가 감지되면”은 상황에 의존하여 “결정한 것에 기초하여” 또는 “결정한 것에 응답하여” 또는 “[언급된 상태 또는 이벤트]를 감지한 것에 기초하여” 또는 “[언급된 상태 또는 이벤트]를 감지한 것에 응답하여” 를 의미하는 것으로 이해될 수 있다.
비록 용어들 제 1, 제 2, 등이, 다양한 엘리먼트들을 설명하기 위해 본 출원에 사용될 수 있지만, 이들 엘리먼트들은 이들 용어들에 의해 제한되지 않는다는 것이 또한 이해될 것이다. 이들 용어들은 하나의 엘리먼트를 다른 엘리먼트와 구별하기 위해서 단지 사용된다. 예를 들어, 제 1 컨택은 제 2 컨택으로 불리울 수 있고, 그리고, 유사하게, 제 2 컨택은 본 발명의 범위를 벗어나지 않고서 제 1 컨택으로 불리울 수 있다. 제 1 컨택 및 제 2 컨택은 둘 모두 컨택들이지만, 그러나 그것들은 동일한 컨택이 아니다.
앞에서의 것들은 이하의 항목들을 고려하여 더 잘 이해될 수 있다:
항목 1. 시스템에 있어서,
원천 서버(origin server) 및 에지 서버(edge server)를 포함하는 컨텐츠 전달 네트워크(content delivery network)를 구현하도록 구성된 복수의 컴퓨팅 디바이스들을 포함하되, 상기 에지 서버는 상기 원천 서버로부터 검색된 컨텐츠를 저장하도록 구성된 컨텐츠 캐시(content cache)를 포함하고, 상기 에지 서버는 :
이벤트와 기능(function)의 관련성(association)을 수신하고, 상기 기능 및 상기 관련성은 상기 컨텐츠 전달 네트워크의 고객으로부터의 입력에 적어도 부분적으로 기초하여 결정되고;
상기 원천 서버로부터의 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 클라이언트 디바이스로부터 수신할 수 있고;
상기 요청의 프로세싱을 개시하고, 상기 요청의 프로세싱은 상기 기능과 관련된 상기 이벤트를 접하는 것(encountering)을 포함하고;
상기 에지 서버에서 하나 이상의 다른 기능들의 실행에 대하여 프로세스 분리(process isolation)를 이용하여 상기 이벤트와 관련된 기능을 실행하고;
상기 기능의 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하고; 및
상기 클라이언트 디바이스로 상기 컨텐츠를 발송하도록 구성된다.
항목 2. 항목 1에 나열된 시스템에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 기능 실행시에, 상기 에지 서버는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하도록 구성된다.
항목 3. 항목 1에 나열된 시스템에 있어서, 상기 이벤트는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 기능 실행시에, 상기 에지 서버는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하도록 구성된다.
항목 4. 항목 1에 나열된 시스템에 있어서, 상기 컨텐츠는 상기 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 기능의 실행에 적어도 부분적으로 기초하여 생성된다.
항목 5. 컴퓨터-구현 방법에 있어서:
컨텐츠에 대한 요청을 클라이언트 디바이스로부터 에지 서버에서 수신하는 단계;
상기 요청의 프로세싱을 개시하는 단계로서, 상기 요청의 프로세싱은 이벤트를 접하는 것(encountering)을 포함하고, 상기 이벤트는 고객에 의해 특정된 기능과 관련되는, 상기 개시하는 단계;
상기 이벤트와 관련된 기능을 상기 에지 서버에서 수행하는 단계로서, 상기 기능을 수행하는 단계는 상기 에지 서버에서 하나 이상의 다른 기능들에 대하여 분리되는, 상기 수행하는 단계;
상기 기능 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계; 및
상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 컨텐츠를 발송하는 단계를 포함한다.
항목 6. 항목 5에 나열된 방법에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하는 단계를 포함한다.
항목 7. 항목 5에 나열된 방법에 있어서, 상기 이벤트는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하는 단계를 포함한다.
항목 8. 항목 5에 나열된 방법에 있어서, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 요청 프로세싱과 관련된 하나 이상의 성능 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하는 단계를 포함한다.
항목 9. 항목 5에 나열된 방법에 있어서, 상기 컨텐츠는 상기 에지 서버에 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 기능 실행에 적어도 부분적으로 기초하여 생성된다.
항목 10. 항목 5에 나열된 방법에 있어서, 상기 기능을 분리시키는 단계(isolating)는 상기 에지 서버에 컨테이너(container)에서 상기 기능을 실행하는 단계 및 상기 에지 서버에 하나 이상의 다른 컨테이너들에서 하나 이상의 다른 기능들을 실행하는 단계를 포함한다.
항목 11. 항목 10에 나열된 방법에 있어서, 상기 컨테이너는 가상 기계(virtual machine)를 포함하고, 상기 하나 이상의 다른 컨테이너들은 하나 이상의 다른 가상 기계들을 포함한다.
항목 12. 항목 5에 나열된 방법에 있어서, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
추가 서버에서 제공자 네트워크의 자원을 액세스하는 단계를 포함한다.
항목 13. 항목 5에 열거된 방법에 있어서,
추가 컨텐츠에 대한 추가 요청을 상기 에지 서버에서 수신하는 단계;
상기 추가 요청의 프로세싱을 개시하는 단계로서, 상기 추가 요청의 프로세싱은 추가 이벤트를 접하는 것(encountering)을 포함하고, 상기 추가 이벤트는 상이한 고객에 의해 특정된 상이한 기능과 관련되는, 상기 개시하는 단계;
상기 추가 이벤트와 관련된 상이한 기능을 상기 에지 서버에서 수행하는 단계로서, 상기 상이한 기능을 수행하는 단계는 상기 에지 서버에서 상기 기능의 실행에 대하여 분리되는, 상기 수행하는 단계;
상기 상이한 기능 실행에 적어도 부분적으로 기초하여 상기 추가 컨텐츠를 생성하는 단계를 더 포함한다.
항목 14. 컴퓨터-판독가능한 스토리지 매체는 :
컨텐츠에 대한 요청을 클라이언트 디바이스로부터 에지 서버에서 수신하는 단계;
상기 요청의 프로세싱을 개시하는 단계로서, 상기 요청의 프로세싱은 이벤트를 수행하는 것을 포함하고, 상기 이벤트는 유저-정의된 프로그램 코드와 관련되는, 상기 개시하는 단계;
상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 상기 에지 서버에서 실행하는 단계로서, 상기 유저-정의된 프로그램 코드는 상기 에지 서버에서의 다른 유저-정의된 프로그램 코드의 실행에 대하여 분리 기술을 이용하여 실행되는, 상기 실행하는 단계;
상기 유저-정의된 프로그램 코드의 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계; 및
상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 컨텐츠를 발송하는 단계를 수행하기 위한 컴퓨터-실행 가능한 프로그램 명령들을 저장한다.
항목 15. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하는 단계를 포함한다.
항목 16. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하는 단계를 포함한다.
항목 17. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는:
상기 요청 프로세싱과 관련된 하나 이상의 성능 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하는 단계를 포함한다.
항목 18. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 컨텐츠는 상기 에지 서버에 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 유저-정의된 프로그램 코드 실행에 적어도 부분적으로 기초하여 생성된다.
항목 19. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 분리 기술을 이용하는 단계는 상기 에지 서버에 컨테이너(container)에서 상기 유저-정의된 프로그램 코드를 수행하는 단계 및 상기 에지 서버에 하나 이상의 다른 컨테이너들에서 상기 다른 유저-정의된 프로그램 코드를 수행하는 단계를 포함한다.
항목 20. 항목 14에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 프로그램 명령들은:
추가 컨텐츠에 대한 추가 요청을 상기 에지 서버에서 수신하는 단계;
상기 추가 요청의 프로세싱을 개시하는 단계로서, 상기 추가 요청의 프로세싱은 추가 이벤트를 수행하는 것을 포함하고, 상기 추가 이벤트는 상이한 유저에 의해 특정된 상이한 유저-정의된 프로그램 코드와 관련되는, 상기 개시하는 단계;
상기 추가 이벤트와 관련된 상기 상이한 유저-정의된 프로그램 코드를 상기 에지 서버에서 실행하는 단계로서, 상기 상이한 유저-정의된 프로그램 코드는 상기 에지 서버에서의 상기 유저-정의된 프로그램 코드의 실행에 대하여 분리 기술을 이용하여 실행되는, 상기 실행하는 단계; 및
상기 상이한 유저-정의된 프로그램 코드의 실행에 적어도 부분적으로 기초하여 상기 추가 컨텐츠를 생성하는 단계를 수행하기 위해 추가로 컴퓨터-실행 가능하다.
추가적으로, 앞에서의 것들은 이하의 항목들을 고려하여 더 잘 이해될 수 있다:
항목 21. 시스템에 있어서,
원천 서버(origin server) 및 에지 서버(edge server)를 포함하는 컨텐츠 전달 네트워크(content delivery network)를 구현하도록 구성된 복수의 컴퓨팅 디바이스들을 포함하되, 상기 에지 서버는 상기 원천 서버로부터 검색된 컨텐츠를 저장하도록 구성된 컨텐츠 캐시(content cache)를 포함하고, 상기 에지 서버는 :
이벤트와 기능의 관련성(association) 및 판독 전용 데이터 저장소를 수신하고, 상기 판독 전용 데이터 저장소, 상기 기능, 및 상기 관련성은 상기 컨텐츠 전달 네트워크의 고객으로부터의 입력에 적어도 부분적으로 기초하여 결정되고;
상기 원천 서버로부터의 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 클라이언트 디바이스로부터 수신할 수 있고;
상기 요청의 프로세싱을 개시하고, 상기 요청의 프로세싱은 상기 기능과 관련된 상기 이벤트를 접하는 것(encountering)을 포함하고;
상기 이벤트와 관련된 기능을 실행하고, 상기 기능은 입력으로서 상기 판독 전용 데이터 저장소를 특정하고, 상기 기능의 실행은 상기 판독 전용 데이터 저장소로부터의 하나 이상의 엘리먼트들의 검색을 포함하고;
상기 기능의 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하고; 및
상기 클라이언트 디바이스로 상기 컨텐츠를 발송하도록 구성된다.
항목 22. 항목 21에 나열된 시스템에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 기능 실행시에, 상기 에지 서버는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하도록 구성된다.
항목 23. 항목 21에 나열된 시스템에 있어서, 상기 이벤트는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 기능 실행시에, 상기 에지 서버는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하도록 구성된다.
항목 24. 항목 21에 나열된 시스템에 있어서, 상기 컨텐츠는 상기 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 기능의 실행에 적어도 부분적으로 기초하여 생성된다.
항목 25. 컴퓨터-구현 방법에 있어서:
에지 서버에 판독 전용 데이터 저장소를 복제하는 단계(replicating);
컨텐츠에 대한 요청을 클라이언트 디바이스로부터 상기 에지 서버에서 수신하는 단계;
상기 요청의 프로세싱을 개시하는 단계로서, 상기 요청의 프로세싱은 이벤트를 접하는 것(encountering)을 포함하고, 상기 이벤트는 고객에 의해 특정된 기능과 관련되고, 상기 기능은 상기 입력으로서 상기 판독 전용 데이터 저장소를 특정하는, 상기 개시하는 단계;
상기 판독 전용 데이터 저장소로부터 데이터를 검색하는 단계를 포함하는 상기 이벤트와 관련된 기능을 상기 에지 서버에서 수행하는 단계;
상기 기능 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계; 및
상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 컨텐츠를 발송하는 단계를 포함한다.
항목 26. 항목 25에 나열된 방법에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하는 단계를 포함한다.
항목 27. 항목 25에 나열된 방법에 있어서, 상기 이벤트는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하는 단계를 포함한다.
항목 28. 항목 25에 나열된 방법에 있어서, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
상기 요청 프로세싱과 관련된 하나 이상의 성능 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하는 단계를 포함한다.
항목 29. 항목 25에 나열된 방법에 있어서, 상기 컨텐츠는 상기 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 기능 실행에 적어도 부분적으로 기초하여 생성된다.
항목 30. 항목 25에 나열된 방법에 있어서, 상기 기능은 상기 에지 서버에서 하나 이상의 다른 기능들에 대하여 프로세스 분리(process isolation)를 이용하여 실행된다.
항목 31. 항목 25에 나열된 방법에 있어서, 상기 판독 전용 데이터 저장소는 복수의 키-값 쌍들을 포함한다.
항목 32. 항목 25에 나열된 방법에 있어서, 상기 판독 전용 데이터 저장소는 상기 고객에 의해 특정된다.
항목 33. 항목 25에 나열된 방법에 있어서, 상기 이벤트와 관련된 기능을 수행하는 단계는 :
추가 서버에서 제공자 네트워크의 자원을 액세스하는 단계를 포함한다.
항목 34. 컴퓨터-판독가능한 스토리지 매체로서,
판독 전용 데이터 저장소를 에지 서버 및 복수의 추가 에지 서버들로 복제하는 단계로서, 상기 판독 전용 데이터 저장소는 컨텐츠 전달 네트워크의 고객에 의해 특정되는, 상기 복제하는 단계;
컨텐츠에 대한 요청을 클라이언트 디바이스로부터 상기 에지 서버에서 수신하는 단계;
상기 요청의 프로세싱을 개시하는 단계로서, 상기 요청의 프로세싱은 이벤트를 수행하는 것을 포함하고, 상기 이벤트는 유저-정의된 프로그램 코드와 관련되고, 상기 유저-정의된 프로그램 코드는 입력으로서 상기 판독 전용 데이터 저장소로부터 데이터를 특정하는, 상기 개시하는 단계;
상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 상기 에지 서버에서 실행하는 단계로서, 상기 유저-정의된 프로그램 코드는 상기 에지 서버에서의 다른 유저-정의된 프로그램 코드의 실행에 대하여 분리 기술을 이용하여 실행되는, 상기 실행하는 단계;
상기 유저-정의된 프로그램 코드의 실행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계로서, 상기 유저-정의된 프로그램 코드의 실행은 상기 판독 전용 데이터 저장소로부터 데이터의 검색을 포함하는, 상기 생성하는 단계; 및
상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 컨텐츠를 발송하는 단계를 수행하기 위한 컴퓨터-실행 가능한 프로그램 명령들을 저장한다.
항목 35. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트는 상기 클라이언트 디바이스로부터 컨텐츠에 대한 요청의 수신 또는 상기 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청 또는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청을 변경하는 단계를 포함한다.
항목 36. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트는 상기 에지 서버에 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답의 생성 또는 원천 서버로부터의 컨텐츠에 대한 요청에 응답의 수신을 포함하고, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는 :
상기 원천 서버로부터의 컨텐츠에 대한 요청에 응답 또는 상기 컨텐츠 캐시로부터의 컨텐츠에 대한 요청에 응답을 변경하는 단계를 포함한다.
항목 37. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 이벤트와 관련된 상기 유저-정의된 프로그램 코드를 수행하는 단계는:
상기 요청 프로세싱과 관련된 하나 이상의 성능 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하는 단계를 포함한다.
항목 38. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 컨텐츠는 컨텐츠 캐시로부터 또는 상기 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 유저-정의된 프로그램 코드 실행에 적어도 부분적으로 기초하여 생성된다.
항목 39. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 유저-정의된 프로그램 코드는 상기 에지 서버에서 다른 유저-정의된 프로그램 코드에 대하여 프로세스 분리를 이용하여 실행된다.
항목 40. 항목 34에 나열된 컴퓨터-판독가능한 스토리지 매체에 있어서, 상기 판독 전용 데이터 저장소는 복수의 키-값 쌍들을 포함한다.
결론
여러 특정 세부사항들이 본 출원에 개시되어 청구된 내용의 철저한 이해를 제공한다. 그러나, 해당 기술 분야의 당업자들에게는, 청구된 내용은 이들 특정 세부사항없이 실시될 수 있다는 점이 이해될 것이다. 통상의 기술자에 의해 알려진 다른 인스턴스들, 방법들, 장치, 또는 시스템들은 청구된 내용을 모호하게 하지 않기 위해서 상세하게 설명되지 않았다. 다양한 수정들 및 변화들은 본 개시의 이득을 가진 이 기술분야의 숙련자에게 명백할 바와 같이 이루어질 수 있다. 모든 이런 수정예들 및 변화들을 포괄하도록 의도되어서 상기의 설명은 제한적 의미보다는 오히려 예시적으로 간주되어야 한다.

Claims (15)

  1. 시스템으로서,
    하나 이상의 프로세서 및 메모리를 포함하는 에지 서버(edge server)를 포함하고, 상기 에지 서버는:
    판독 전용 데이터 저장소(read-only data store)를 수신하고 - 상기 판독 전용 데이터 저장소는 기능(function)이 실행될 때 상기 기능에 대한 입력으로서 사용하기 위해 고객으로부터의 입력에 의해 특정된 데이터를 포함함 -;
    클라이언트 디바이스로부터 상기 에지 서버에서 컨텐츠에 대한 요청을 수신하고;
    상기 요청의 프로세싱을 개시하고 - 상기 요청의 상기 프로세싱은 이벤트를 접하는 것(encountering)을 포함하고, 상기 이벤트는 상기 고객에 의해 특정된 상기 기능과 관련되고, 상기 기능은 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 입력으로서 특정함 -;
    상기 에지 서버에서, 상기 이벤트와 관련된 상기 기능을 수행하고 - 상기 기능의 상기 수행은 상기 판독 전용 데이터 저장소로부터의 상기 데이터의 검색을 포함함 -;
    상기 컨텐츠의 생성시 상기 기능에 대한 상기 입력으로서 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 사용하는 상기 기능의 수행에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하고;
    상기 에지 서버에서 상기 클라이언트 디바이스로 상기 생성된 컨텐츠를 발송하도록
    구성되는, 시스템.
  2. 청구항 1에 있어서, 상기 이벤트는 상기 에지 서버의 컨텐츠 캐시(content cache)에서 상기 클라이언트 디바이스로부터의 상기 컨텐츠에 대한 요청의 수신 또는 원천 서버로부터의 컨텐츠에 대한 요청의 준비(preparation)를 포함하고, 상기 이벤트와 관련된 상기 기능을 수행하기 위해, 상기 에지 서버는:
    상기 원천 서버로부터의 상기 컨텐츠에 대한 요청 또는 상기 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청을 변경하도록 구성되는, 시스템.
  3. 청구항 1에 있어서, 상기 이벤트는 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청에 대한 응답의 생성 또는 원천 서버로부터의 컨텐츠에 대한 요청에 대한 응답의 수신을 포함하고, 상기 이벤트와 관련된 상기 기능을 수행하기 위해, 상기 에지 서버는:
    상기 원천 서버로부터의 상기 컨텐츠에 대한 요청에 대한 상기 응답 또는 상기 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청에 대한 상기 응답을 변경하도록 구성되는, 시스템.
  4. 청구항 1에 있어서, 상기 컨텐츠는 컨텐츠 캐시로부터 또는 원천 서버로부터의 상기 컨텐츠의 검색 없이 상기 기능의 상기 수행에 적어도 부분적으로 기초하여 생성되는, 시스템.
  5. 청구항 1에 있어서, 상기 이벤트와 관련된 상기 기능을 수행하기 위해, 상기 에지 서버는:
    상기 요청의 상기 프로세싱과 관련된 하나 이상의 메트릭(metric)들 또는 로그 엔트리(log entry)들을 생성하도록 구성되는, 시스템.
  6. 청구항 1에 있어서, 상기 기능은 상기 에지 서버에서의 하나 이상의 기능에 대하여 프로세스 분리(process isolation)를 이용하여 수행되는, 시스템.
  7. 청구항 1에 있어서, 상기 판독 전용 데이터 저장소는 상기 고객에 의해 특정되는, 시스템.
  8. 컴퓨터-구현 방법에 있어서:
    판독 전용 데이터 저장소를 에지 서버에서 수신하는 단계 - 상기 판독 전용 데이터 저장소는 기능(function)이 실행될 때 상기 기능에 대한 입력으로서 사용하기 위해 고객으로부터의 입력에 의해 특정된 데이터를 포함함 -;
    컨텐츠에 대한 요청을 클라이언트 디바이스로부터 상기 에지 서버에서 수신하는 단계;
    상기 요청의 프로세싱을 상기 에지 서버에서 개시하는 단계 - 상기 요청의 상기 프로세싱은 이벤트를 접하는 것(encountering)을 포함하고, 상기 이벤트는 상기 고객에 의해 특정된 상기 기능과 관련되고, 상기 기능은 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 입력으로서 특정함 -;
    상기 판독 전용 데이터 저장소로부터 상기 데이터를 검색하는 단계를 포함하는 상기 이벤트와 관련된 상기 기능을 상기 에지 서버에서 수행하는 단계;
    상기 컨텐츠의 생성시 상기 기능에 대한 상기 입력으로서 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 사용하여 상기 기능을 수행하는 단계에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계; 및
    상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 생성된 컨텐츠를 발송하는 단계를 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 이벤트는 상기 에지 서버의 컨텐츠 캐시(content cache)에서 상기 클라이언트 디바이스로부터의 상기 컨텐츠에 대한 요청의 수신 또는 원천 서버로부터의 컨텐츠에 대한 요청의 준비(preparation)를 포함하고, 상기 이벤트와 관련된 상기 기능을 수행하는 단계는:
    상기 원천 서버로부터의 상기 컨텐츠에 대한 요청 또는 상기 에지 서버에서의 상기 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청을 변경하는 단계를 포함하는, 방법.
  10. 청구항 8에 있어서, 상기 이벤트는 상기 에지 서버에 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청에 대한 응답의 생성 또는 원천 서버로부터의 컨텐츠에 대한 요청에 대한 응답의 수신을 포함하고, 상기 이벤트와 관련된 상기 기능을 수행하는 단계는:
    상기 원천 서버로부터의 상기 컨텐츠에 대한 요청에 대한 상기 응답 또는 상기 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청에 대한 응답을 변경하는 단계를 포함하는, 방법.
  11. 청구항 8에 있어서, 상기 컨텐츠는 컨텐츠 캐시로부터 또는 원천 서버로부터 상기 컨텐츠를 검색하지 않고서 상기 기능의 수행에 적어도 부분적으로 기초하여 생성되는, 방법.
  12. 청구항 8에 있어서, 상기 기능은 상기 에지 서버에서의 하나 이상의 기능에 대하여 프로세스 분리(process isolation)를 이용하여 실행되는, 방법.
  13. 청구항 8에 있어서, 상기 판독 전용 데이터 저장소는 복수의 키-값 쌍을 포함하는, 방법.
  14. 컴퓨터-판독가능한 스토리지 매체로서,
    판독 전용 데이터 저장소를 에지 서버에서 수신하는 단계 - 상기 판독 전용 데이터 저장소는 기능(function)이 실행될 때 상기 기능에 대한 입력으로서 사용하기 위해 고객으로부터의 입력에 의해 특정된 데이터를 포함함 -;
    컨텐츠에 대한 요청을 클라이언트 디바이스로부터 상기 에지 서버에서 수신하는 단계;
    상기 요청의 프로세싱을 상기 에지 서버에서 개시하는 단계 - 상기 요청의 상기 프로세싱은 이벤트를 접하는 것(encountering)을 포함하고, 상기 이벤트는 상기 고객에 의해 특정된 상기 기능과 관련되고, 상기 기능은 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 입력으로서 특정함 -;
    상기 판독 전용 데이터 저장소로부터 상기 데이터를 검색하는 단계를 포함하는 상기 이벤트와 관련된 상기 기능을 상기 에지 서버에서 수행하는 단계;
    상기 컨텐츠의 생성시 상기 기능에 대한 상기 입력으로서 상기 판독 전용 데이터 저장소로부터의 상기 데이터를 사용하여 상기 기능을 수행하는 단계에 적어도 부분적으로 기초하여 상기 컨텐츠를 생성하는 단계; 및
    상기 에지 서버로부터 상기 클라이언트 디바이스로 상기 생성된 컨텐츠를 발송하는 단계
    를 수행하기 위한 컴퓨터-실행 가능한 프로그램 명령어들을 저장하는, 컴퓨터-판독가능한 스토리지 매체.
  15. 청구항 14에 있어서, 상기 이벤트는 상기 에지 서버의 컨텐츠 캐시에서의 상기 클라이언트 디바이스로부터의 상기 컨텐츠에 대한 요청의 수신 또는 원천 서버로부터의 컨텐츠에 대한 요청의 준비를 포함하고, 상기 이벤트와 관련된 상기 기능을 수행하는 단계는:
    상기 원천 서버로부터의 상기 컨텐츠에 대한 요청 또는 상기 에지 서버에서의 상기 컨텐츠 캐시로부터의 상기 컨텐츠에 대한 요청을 변경하는 단계를 포함하는, 컴퓨터-판독가능한 스토리지 매체.
KR1020207014946A 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체 KR102161161B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020207027486A KR102285827B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/852,256 US10848582B2 (en) 2015-09-11 2015-09-11 Customizable event-triggered computation at edge locations
US14/852,272 US11895212B2 (en) 2015-09-11 2015-09-11 Read-only data store replication to edge locations
US14/852,256 2015-09-11
US14/852,272 2015-09-11
PCT/US2016/050969 WO2017044761A1 (en) 2015-09-11 2016-09-09 System, method and computer-readable storage medium for customizable event-triggered computation at edge locations

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020187008317A Division KR102117058B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207027486A Division KR102285827B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체

Publications (2)

Publication Number Publication Date
KR20200062373A KR20200062373A (ko) 2020-06-03
KR102161161B1 true KR102161161B1 (ko) 2020-09-29

Family

ID=56959074

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020207014946A KR102161161B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
KR1020187008317A KR102117058B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
KR1020207027486A KR102285827B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
KR1020217024196A KR102367792B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020187008317A KR102117058B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
KR1020207027486A KR102285827B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
KR1020217024196A KR102367792B1 (ko) 2015-09-11 2016-09-09 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체

Country Status (7)

Country Link
EP (2) EP3348042B1 (ko)
JP (2) JP6445222B2 (ko)
KR (4) KR102161161B1 (ko)
CN (2) CN112839111B (ko)
AU (5) AU2016319754B2 (ko)
CA (1) CA2997194A1 (ko)
WO (1) WO2017044761A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102235622B1 (ko) * 2020-11-30 2021-04-01 연세대학교 산학협력단 IoT 환경에서의 협력 에지 캐싱 방법 및 그를 위한 장치

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP3343267B1 (en) 2016-12-30 2024-01-24 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
KR20230152180A (ko) 2017-12-10 2023-11-02 매직 립, 인코포레이티드 광학 도파관들 상의 반사―방지 코팅들
CA3086206A1 (en) 2017-12-20 2019-06-27 Magic Leap, Inc. Insert for augmented reality viewing device
EP3503502B1 (en) * 2017-12-24 2023-05-24 Meta Platforms, Inc. Systems and methods for delivering augmented reality content
US10685493B2 (en) * 2017-12-24 2020-06-16 Facebook, Inc. Systems and methods for delivering augmented reality content
US11068281B2 (en) 2018-03-02 2021-07-20 Fastly, Inc. Isolating applications at the edge
EP3766039A4 (en) 2018-03-15 2021-04-07 Magic Leap, Inc. IMAGE CORRECTION BY DEFORMING COMPONENTS OF A VIEWING DEVICE
WO2019231850A1 (en) 2018-05-31 2019-12-05 Magic Leap, Inc. Radar head pose localization
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
WO2020023543A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Viewing device with dust seal integration
WO2020023545A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
WO2020028834A1 (en) 2018-08-02 2020-02-06 Magic Leap, Inc. A viewing system with interpupillary distance compensation based on head motion
CN112789544B (zh) 2018-08-03 2023-06-30 奇跃公司 图腾在用户交互系统中的融合姿势的基于未融合姿势的漂移校正
JP2022523852A (ja) 2019-03-12 2022-04-26 マジック リープ, インコーポレイテッド 第1および第2の拡張現実ビューア間でのローカルコンテンツの位置合わせ
CN110046045B (zh) * 2019-04-03 2021-07-30 百度在线网络技术(北京)有限公司 语音唤醒的数据包处理方法和装置
US11445232B2 (en) * 2019-05-01 2022-09-13 Magic Leap, Inc. Content provisioning system and method
WO2021021670A1 (en) 2019-07-26 2021-02-04 Magic Leap, Inc. Systems and methods for augmented reality
WO2021097323A1 (en) 2019-11-15 2021-05-20 Magic Leap, Inc. A viewing system for use in a surgical environment
US11418995B2 (en) 2019-11-29 2022-08-16 Amazon Technologies, Inc. Mobility of cloud compute instances hosted within communications service provider networks
US10965737B1 (en) * 2019-11-29 2021-03-30 Amazon Technologies, Inc. Cloud computing in communications service provider networks
CN112783778A (zh) * 2021-01-28 2021-05-11 网宿科技股份有限公司 测试方法、装置、网络设备及存储介质
CN112988127A (zh) * 2021-01-28 2021-06-18 网宿科技股份有限公司 Cdn业务定制方法及系统
CN112988126A (zh) * 2021-01-28 2021-06-18 网宿科技股份有限公司 Cdn业务定制方法及系统
WO2022182384A1 (en) 2021-02-24 2022-09-01 Level 3 Communications, Llc Uniformity of instructions for content requests and responses in a content delivery network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003032A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation System and method for providing content-oriented services to content providers and content consumers
US20090164550A1 (en) 2007-12-20 2009-06-25 Nortel Networks Limited Media monitoring
US20120041970A1 (en) 2010-08-12 2012-02-16 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US20130159472A1 (en) * 2011-12-14 2013-06-20 Level 3 Communications, Llc Content delivery network
WO2015052355A1 (es) 2013-10-07 2015-04-16 Telefonica Digital España, S.L.U. Procedimiento y sistema para configurar una memoria caché web para procesar peticiones

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3005189B2 (ja) * 1996-04-05 2000-01-31 株式会社グラフィックス・コミュニケーション・ラボラトリーズ ストリームデータ転送方法および装置
EP1410215A4 (en) * 2000-08-22 2006-10-11 Akamai Tech Inc COMPILING DYNAMIC CONTENT ON EDGE-OF-NETWORK SERVER IN A CONTENT DELIVERY NETWORK
US20060080702A1 (en) * 2004-05-20 2006-04-13 Turner Broadcasting System, Inc. Systems and methods for delivering content over a network
JP5150769B2 (ja) * 2008-11-17 2013-02-27 アマゾン テクノロジーズ インコーポレーテッド 要求ルーティングおよびクライアントロケーション情報を利用したルーティング情報の更新
US8316106B2 (en) * 2008-12-05 2012-11-20 At&T Intellectual Property Ii, Lp System and method for assigning requests in a content distribution network
US8140646B2 (en) * 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
US8769614B1 (en) * 2009-12-29 2014-07-01 Akamai Technologies, Inc. Security framework for HTTP streaming architecture
US20120265853A1 (en) * 2010-12-17 2012-10-18 Akamai Technologies, Inc. Format-agnostic streaming architecture using an http network for streaming
JP5810779B2 (ja) * 2011-09-16 2015-11-11 株式会社リコー 画面共有システム、画面共有端末、電子黒板システムおよびプログラム
WO2013049079A2 (en) * 2011-09-26 2013-04-04 Limelight Networks, Inc. Dynamic request handling using cloud-computing capabilities
US9294582B2 (en) * 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching
WO2013164007A1 (en) * 2012-04-30 2013-11-07 Nec Europe Ltd. Method for performing dns resolution in a network, content distribution system and client terminal for deployment in a content distribution system
CN102869003A (zh) * 2012-08-28 2013-01-09 中兴通讯股份有限公司 一种异构网络下业务内容分发的方法、业务管理平台
US9699519B2 (en) * 2012-10-17 2017-07-04 Netflix, Inc. Partitioning streaming media files on multiple content distribution networks
US9660874B2 (en) * 2012-12-13 2017-05-23 Level 3 Communications, Llc Devices and methods supporting content delivery with delivery services having dynamically configurable log information
US9654579B2 (en) * 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
CN104113568B (zh) * 2013-04-18 2017-09-05 华为技术有限公司 接收请求的方法及cdn服务器
US9391847B2 (en) * 2013-08-08 2016-07-12 Level 3 Communications, Llc Content delivery methods and systems
US20150100667A1 (en) * 2013-10-08 2015-04-09 WePow, Inc. Optimizing content delivery
CN104796469B (zh) * 2015-04-15 2018-04-03 北京中油瑞飞信息技术有限责任公司 云计算平台的配置方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003032A1 (en) 2002-06-28 2004-01-01 Microsoft Corporation System and method for providing content-oriented services to content providers and content consumers
US20090164550A1 (en) 2007-12-20 2009-06-25 Nortel Networks Limited Media monitoring
US20120041970A1 (en) 2010-08-12 2012-02-16 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US20130159472A1 (en) * 2011-12-14 2013-06-20 Level 3 Communications, Llc Content delivery network
WO2015052355A1 (es) 2013-10-07 2015-04-16 Telefonica Digital España, S.L.U. Procedimiento y sistema para configurar una memoria caché web para procesar peticiones

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102235622B1 (ko) * 2020-11-30 2021-04-01 연세대학교 산학협력단 IoT 환경에서의 협력 에지 캐싱 방법 및 그를 위한 장치

Also Published As

Publication number Publication date
JP2019032903A (ja) 2019-02-28
AU2016319754A1 (en) 2018-03-29
KR102285827B1 (ko) 2021-08-04
KR20210099174A (ko) 2021-08-11
JP6445222B2 (ja) 2018-12-26
AU2019203266B2 (en) 2020-05-21
AU2021240176B2 (en) 2022-11-17
CN112839111B (zh) 2024-02-02
EP3348042B1 (en) 2020-08-12
AU2020220160B2 (en) 2021-07-01
CN112839111A (zh) 2021-05-25
JP2018526752A (ja) 2018-09-13
AU2021240176A1 (en) 2021-10-28
EP3742707A1 (en) 2020-11-25
WO2017044761A1 (en) 2017-03-16
AU2020220160A1 (en) 2020-09-10
KR20180048761A (ko) 2018-05-10
CN108028853B (zh) 2021-03-30
CA2997194A1 (en) 2017-03-16
KR20200113033A (ko) 2020-10-05
CN108028853A (zh) 2018-05-11
KR102367792B1 (ko) 2022-02-28
KR102117058B1 (ko) 2020-05-29
AU2016319754B2 (en) 2019-02-21
AU2023200859B2 (en) 2024-03-07
KR20200062373A (ko) 2020-06-03
AU2019203266A1 (en) 2019-05-30
EP3348042A1 (en) 2018-07-18
AU2023200859A1 (en) 2023-03-16
JP6723329B2 (ja) 2020-07-15

Similar Documents

Publication Publication Date Title
KR102161161B1 (ko) 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
US20210075881A1 (en) Customizable event-triggered computation at edge locations
US10455011B2 (en) Supporting heterogeneous environments during code deployment
US20240155045A1 (en) Read-only data store replication to edge locations
US10972576B2 (en) Content acceleration for cross-site resources by CDN
US9342357B2 (en) Extending cloud computing to on-premises data
US10656972B2 (en) Managing idempotent operations while interacting with a system of record
US20190245912A1 (en) Optimizing internet data transfers using an intelligent router agent
US11063992B1 (en) Network-based media processing (NBMP) workflow management through 5G framework for live uplink streaming (FLUS) control
US11526499B2 (en) Adaptively updating databases of publish and subscribe systems using optimistic updates
US20230267219A1 (en) Secure data transfer via user-specific data containers

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant