KR102099028B1 - 카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들 - Google Patents

카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들 Download PDF

Info

Publication number
KR102099028B1
KR102099028B1 KR1020187014037A KR20187014037A KR102099028B1 KR 102099028 B1 KR102099028 B1 KR 102099028B1 KR 1020187014037 A KR1020187014037 A KR 1020187014037A KR 20187014037 A KR20187014037 A KR 20187014037A KR 102099028 B1 KR102099028 B1 KR 102099028B1
Authority
KR
South Korea
Prior art keywords
request
time
canary
routing
modification
Prior art date
Application number
KR1020187014037A
Other languages
English (en)
Other versions
KR20180074723A (ko
Inventor
마이클 로이드 코헨
Original Assignee
넷플릭스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 넷플릭스, 인크. filed Critical 넷플릭스, 인크.
Publication of KR20180074723A publication Critical patent/KR20180074723A/ko
Application granted granted Critical
Publication of KR102099028B1 publication Critical patent/KR102099028B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • H04L67/42
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 일 실시예에서, 스티키 카나리 라우터는 서비스와 연관된 각각의 요청을 서비스에 대한 수정을 구현하는 서버들의 카나리 클러스터(canary cluster), 또는 수정을 구현하지 않는 서버들의 베이스라인 클러스터(baseline cluster) 중 어느 하나에 라우팅한다. 스티키 카나리 라우터는 현재 시간, 라우팅에 대한 시간 윈도우, 및 요청의 특성에 기초하여 각각의 요청의 라우팅을 결정하는 매핑 알고리즘을 구현한다. 특히, 시간 윈도우와 동일한 지속 시간을 갖는 시간 세그먼트들에 대해, 스티키 카나리 라우터가 특정 디바이스로부터 수신된 모든 요청들을 일관된 방식으로 카나리 클러스터 또는 베이스라인 클러스터 중 어느 하나에 라우팅하도록, 매핑 알고리즘이 구현될 수 있다. 이와 같이 구성된 스티키 카나리 라우터는 카나리 서버들과의 클라이언트 상호작용들의 거의 모든 섹션들에 대한 분석을 가능하게 하고, 그에 의해 변화들의 클라이언트 측 효과들의 식별을 용이하게 한다.

Description

카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들
관련 출원에 대한 상호 참조
본 출원은 본 명세서에 참조로 통합되어 있는 2015년 10월 23일자로 출원된 미국 특허 출원 일련 번호 제14/922,101호의 이득을 주장한다.
기술분야
본 발명의 실시예들은 일반적으로 컴퓨터 과학에 관한 것이고, 더 구체적으로는, 카나리 분석(canary analysis)을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들에 관한 것이다.
관련 기술의 설명
많은 서비스 제공자들은 클라이언트들이 클라이언트 디바이스들을 통해 서비스들을 요청하고, 응답으로 서버들이 서비스들을 제공하는 클라이언트-서버 아키텍쳐를 통해 서비스들을 공급한다. 예를 들어, 넷플릭스(Netflix)는 주문형 스트리밍 비디오(on-demand streaming video)를 클라이언트들에게 공급하는 서비스 제공자이다. 클라이언트들은 클라이언트 디바이스들을 통해 특정 비디오들을 재생(playback)하도록 요청하는 것과 같은 요청들을 제출하고, 넷플릭스 서버들은 클라이언트 디바이스들에 비디오들을 전달하라는 요청들에 대한 응답으로 소프트웨어를 실행한다. 클라이언트들은 비디오 게임 콘솔들, 텔레비전들, 핸드헬드 디바이스들 등과 같은 임의의 지원되는 클라이언트 디바이스들을 사용하여 요청들을 입력할 수 있다.
클라이언트 경험의 개선의 일환으로, 서비스 제공자들은 새로운 특징들을 도입하고, 기존의 특징들을 개선하며, 및/또는 결함들을 수정하는 소프트웨어 업데이트들을 자주 배포한다. 더 구체적으로, 서비스 제공자들은 소프트웨어 업데이트들을 서버들에 "밀어 넣고(push out)", 그 뒤에 서버들이 업데이트된 소프트웨어를 실행한다. 클라이언트 경험이 소프트웨어 업데이트들에 의해 악영향을 받지 않도록 보장하기 위하여, 서비스 제공자들은 일반적으로 소프트웨어 업데이트들을 배포하기 전에 소프트웨어 업데이트를 입증(validate)하기 위한 여러 가지 테스팅 방법들을 사용한다. 그러나, 모든 클라이언트 워크플로우들을 통해 클라이언트 디바이스들의 모든 지원되는 유형들에 대해 수동으로 소프트웨어 업데이트들을 테스팅하는 것은 불가능하지는 않지만, 대개 극히 어렵고 시간 소모가 크다. 예를 들어, 넷플릭스 주문형 스트리밍 비디오 서비스들은 많은 블루 레이 디스크 플레이어들(Blu-ray Disc players), 많은 태블릿 컴퓨터들, 많은 휴대 전화들, 많은 고화질 텔레비전 수신기들(high-definition television receivers), 많은 홈 씨어터 시스템들(home theatre systems), 많은 셋톱 박스들, 많은 비디오 게임 콘솔들 등을 지원한다. 결과적으로, 클라이언트 디바이스의 각각의 지원되는 유형을 사용하여 철저하게 소프트웨어 업데이트를 테스팅하는 데 필요한 시간의 양은 받아들일 수 없을 만큼(unacceptable) 길다. 또한, 소프트웨어 업데이트에 의해 도입되는 결함이 소프트웨어 업데이트의 배포 전에 검출 및 수정되지 않는다면, 이후 클라이언트 경험은 저하될 수 있다.
소프트웨어 업데이트들에 의해 도입되는 검출되지 않은 결함들의 영향을 줄이기 위한 하나의 접근법에서, 일부 서비스 제공자들은 카나리 분석(canary analysis)으로서 알려진 배포 프로세스를 사용한다. 카나리 분석에서, 서비스 제공자는 소프트웨어 업데이트를 상대적으로 적은 비율의 "카나리" 서버들에 밀어 넣는 반면, 상대적으로 큰 비율의 "베이스라인" 서버들은 불변 - 베이스라인(즉, 업데이트되지 않은) 소프트웨어를 실행함 - 인 채로 있다. 소프트웨어 업데이트가 한정된 수의 서버들 상에서만 테스팅되기 때문에, 소프트웨어 업데이트에 의해 결함이 도입된다면, 이후 상대적으로 적은 클라이언트 디바이스들과 연관된 상대적으로 적은 비율의 요청들이 영향을 받는다.
카나리 서버들 및 베이스라인 서버들이 동작함에 따라, 서비스 제공자는 소프트웨어 업데이트의 영향들을 판단(gauge)하기 위해 서버들의 동작들을 측정(measure)한다. 일반적으로, 그러한 측정들의 결과들은 "서버 측 메트릭들(server-side metrics)"로서 지칭된다. 카나리 서버들과 연관된 서버 측 메트릭들을 베이스라인 서버들과 연관된 서버 측 메트릭들과 비교함으로써, 서비스 제공자는 소프트웨어 업데이트에 의해 도입된 하나 이상의 결함을 가리키는 이상들(anomalies)을 검출할 수 있다. 예를 들어, 소프트웨어 업데이트가 추가 대기시간을 도입한다고 가정한다. 카나리 분석 동안, 서버 측 메트릭들은 카나리 서버들과 연관된 대기 시간이 베이스라인 서버들과 연관된 대기 시간을 상당히 초과함을 나타낼 수 있다. 이 결정을 내리면, 이후 서비스 제공자는 모든 서버들에 최종 소프트웨어 업데이트를 밀어 넣기 전에 추가 대기 시간을 제거하기 위해 소프트웨어 업데이트를 수정할 수 있다.
그러나, 카나리 분석은 카나리 서버들의 동작들에서의 이상들을 검출하고, 그에 의해 소프트웨어 업데이트를 배포하는 것과 연관된 리스크를 완화할 수 있지만, 소프트웨어 업데이트에 의해 도입되는 일부 결함들은 상기 설명된 카나리 분석 프로세스를 통한 검출을 피할 수 있다. 특히, 카나리 분석 동안, 베이스라인 소프트웨어의 이용 가능성은 클라이언트 디바이스들의 동작들에 대한 소프트웨어 업데이트의 영향들을 숨길 수 있다. 예를 들어, 특정 클라이언트 디바이스가 카나리 서버에 의해 수신되는 요청을 발행한 다음 카나리 서버가 요청에 대한 응답을 생성하기 위해 업데이트된 소프트웨어를 실행한다고 가정한다. 또한, 업데이트된 소프트웨어와 연관된 결함이 특정 클라이언트 디바이스가 응답을 해석할 수 없도록 카나리 서버를 오작동하게 한다고 가정한다. 종래의 카나리 분석 프로세스에서, 특정 클라이언트 디바이스는 요청을 재시도할 것이고, 서비스를 구현하는 서버들 중 카나리 서버들은 상대적으로 적기 때문에, 베이스라인 서버가 이 제2 요청을 수신할 가능성이 매우 높다. 베이스라인 서버는 베이스라인 소프트웨어를 실행할 것이고, 결과적으로, 제2 요청에 대한 응답을 생성하기 위해 제2 요청을 올바르게 처리할 것이다. 특정 클라이언트 디바이스가 제2 요청에 대한 응답을 올바르게 해석할 수 있을 것이기 때문에, 서버 측 메트릭들은 소프트웨어 업데이트와 연관된 문제를 나타내지 않을 것이다. 결과적으로, 결함은 검출을 효과적으로 피할 수 있을 것이다.
본 명세서에서 서버 측 행동의 클라이언트 측 영향들로 지칭되는, 클라이언트 디바이스들의 동작들에 대한 서버 행동의 그러한 검출되지 않는 영향들은 데이터 차이들, 포맷 변경들, 빈 서버 응답들(empty server responses) 등을 포함할 수 있다. 동작에서, 만약 검출되지 않는 결함을 도입하는 소프트웨어 업데이트가 카나리 분석을 통과한다면, 이후 서비스 제공자는 결함을 인식하지 못하고, 결국 소프트웨어 업데이트를 모든 서버들에 밀어 넣게 될 수 있을 것이다. 베이스라인 소프트웨어가 더 이상 이용 가능하지 않을 것이기 때문에, 소프트웨어 업데이트 내의 결함은 다수 유형들의 클라이언트 디바이스들에 걸쳐 클라이언트 경험에 부정적인 영향을 줄 수 있다.
전술한 바와 같이, 본 기술분야에서 필요한 것은 서버 머신들 상에서 실행되는 소프트웨어에 대한 변경들을 테스팅할 때 결함들을 검출하기 위한 보다 효과적인 기술들이다.
본 발명의 일 실시예는 카나리 분석을 수행할 때 요청들을 라우팅하기 위한, 컴퓨터에 의해 구현되는 방법(computer-implemented method)을 설명한다. 방법은 제1 요청의 적어도 하나의 특성, 제1 요청과 연관된 시간, 및 라우팅에 대한 시간 윈도우에 기초하여 제1 매핑을 컴퓨팅하는 단계; 제1 매핑이 제1 요청이 서버들을 통해 제공되는 서비스에 대한 수정과 연관될 것임을 나타내는지 여부를 결정하는 단계; 및 제1 매핑이 제1 요청이 수정과 연관될 것임을 나타내는지 여부에 기초하여 제1 요청을 수정을 구현하는 제1 서버, 또는 수정을 구현하지 않는 제2 서버 중 어느 하나에 라우팅하는 단계를 포함한다.
요청들을 라우팅하기 위한 개시된 기술들의 일 장점은 서비스 제공자가 클라이언트 경험 및 서버 행동 둘 모두에 대한 서비스에 대한 수정의 영향들을 완전히 분석하기 위해 이러한 기술들을 레버리징(leverage)할 수 있다는 것이다. 특히, 수정의 클라이언트 측 영향들을 모니터링하기 위해, 서비스 제공자는 클라이언트 디바이스들의 서브셋으로부터의 요청들이 대략 전체 클라이언트 세션들에 대한 수정을 구현하는 서버들에 지속적으로 라우팅되도록 시간 윈도우들을 구성할 수 있다. 서브셋 내에 포함되는 클라이언트 디바이스들은 시간 윈도우의 지속 시간 동안 수정 없이 서비스에 액세스할 수 없기 때문에, 서비스 제공자는 서비스 제공자가 클라이언트 디바이스들 상의 수정의 영향들을 분석할 수 있게 하는 메트릭들을 모을 수 있다.
위에서 언급된 본 발명의 특징들이 상세하게 이해될 수 있도록, 위에 간략하게 요약된 본 발명의 더 구체적인 설명은 실시예들을 참조할 수 있으며, 그들 중 일부는 첨부 도면들에 도시되어 있다. 그러나, 본 발명은 동등한 효과의 다른 실시예들을 허용할 수 있으므로, 첨부 도면들은 본 발명의 전형적인 실시예들만을 도시하며, 따라서 그것의 범위를 제한하는 것으로 간주되어서는 안 된다는 점에 주목해야 한다.
도 1a는 본 발명의 하나 이상의 양태를 구현하도록 구성되는 시스템의 개념도(conceptual illustration)이다.
도 1b는 본 발명의 여러 가지 실시예들에 따른, 도 1a의 서비스 제공자 인프라스트럭처의 더 상세한 도면이다.
도 2는 본 발명의 여러 가지 실시예들에 따른, 도 1b의 스티키 카나리 라우터(sticky canary router)의 더 상세한 도면이다.
도 3은 본 발명의 여러 가지 실시예들에 따른, 도 2의 스티키 카나리 라우터에 의해 구현되는 라우팅들의 예시이다.
도 4는 본 발명의 여러 가지 실시예들에 따른, 서비스와 연관된 소프트웨어 업데이트들의 카나리 분석을 수행할 때 요청들을 라우팅하기 위한 방법 단계들의 흐름도이다.
이하의 설명에서, 본 발명의 보다 완전한 이해를 제공하기 위해 많은 구체적인 상세들이 설명된다. 그러나, 본 발명이 하나 이상의 이러한 구체적인 상세들 없이 실시될 수 있음이 본 기술분야의 통상의 기술자에게 명백할 것이다.
시스템 개요
도 1a는 본 발명의 하나 이상의 양태를 구현하도록 구성되는 시스템(100)의 개념도이다. 도시된 바와 같이, 시스템(100)은 클라우드(102)와 상호작용할 수 있는 여러 가지 클라이언트 디바이스들에 연결된 클라우드(102)(예를 들어, 캡슐화된 공유 자원들(encapsulated shared resources), 소프트웨어, 데이터 등)를 포함하지만, 이에 한정되지 않는다. 그러한 클라이언트 디바이스들은 데스크탑 컴퓨터(108), 랩탑(106), 스마트폰(104), 스마트 텔레비전(109), 게임 콘솔(107), 태블릿(105), 텔레비전 연결 디바이스들(도시되지 않음), 핸드헬드 디바이스들(도시되지 않음), 및 스트리밍 엔터테인먼트 디바이스들(streaming entertainment devices)(도시되지 않음)을 포함하지만, 이에 한정되지 않는다.
클라우드(102)는 임의의 수(0을 포함함)의 중앙 처리 장치들(CPUs)(112), 그래픽 처리 장치들(GPUs)(114), 메모리(116) 등과 함께 구성되는 임의의 수의 컴퓨트 인스턴스들(compute instances)(110)을 포함할 수 있다. 동작에서, CPU(112)는 컴퓨트 인스턴스(110)의 마스터 프로세서(master processor)이고, 컴퓨트 인스턴스(110) 내에 포함되는 다른 컴포넌트들의 동작들을 제어 및 코디네이팅한다. 특히, CPU(112)는 GPU(114)의 동작을 제어하는 커맨드들을 발행한다. GPU(114)는 예를 들어 비디오 출력 회로를 포함하여 그래픽 및 비디오 프로세싱을 위해 최적화된 회로를 포함한다. 다양한 실시예들에서, GPU(114)는 컴퓨트 인스턴스(110)의 하나 이상의 다른 요소들과 통합될 수 있다. 메모리(116)는 컴퓨트 인스턴스(110)의 CPU(112) 및 GPU(114)에 의해 사용되기 위한 소프트웨어 애플리케이션들 및 오디오-비주얼 데이터와 같은 콘텐츠를 저장한다. 동작에서, 클라우드(102)는 클라이언트 디바이스(예를 들어, 랩탑(110))로부터 입력 클라이언트 정보를 수신하고, 하나 이상의 컴퓨트 인스턴스들(110)은 클라이언트 정보에 대해 동작하며, 클라우드(102)는 프로세싱된 정보를 클라이언트 디바이스에 전송한다.
대안의 실시예들에서, 클라우드(102)는 임의의 유형의 클라우드 컴퓨팅 환경으로 대체될 수 있다. 다른 실시예들에서, 시스템(100)은 클라우드(102) 대신에 임의의 분산 컴퓨터 시스템을 포함할 수 있다. 또 다른 실시예들에서, 시스템(100)은 클라우드(102)를 포함하지 않고, 대신에, 시스템(100)은 임의의 수의 프로세싱 유닛들(예를 들어, 중앙 처리 장치들 및/또는 그래픽 처리 장치들의 임의의 조합)을 구현하는 단일 컴퓨팅 유닛을 포함한다.
일반적으로, 클라우드(102) 내에 포함되는 컴퓨트 인스턴스들(110)은 하나 이상의 애플리케이션을 실행하는 하나 이상의 서버를 구현하도록 구성된다. 도시된 바와 같이, 컴퓨트 인스턴스들(1101 내지 110N)은 서버 제공자 인프라스트럭처(118) 내에 포함되는 서버들로서 구성된다.
도 1b는 본 발명의 다양한 실시예들에 따른 도 1a의 서비스 제공자 인프라스트럭처(118)의 보다 상세한 도면이다. 도시된 바와 같이, 서비스 제공자 인프라스트럭처(118)는 엣지 서비스 클러스터(edge services cluster)(120), 프로덕션 클러스터(production cluster)(140), 베이스라인 클러스터(150), 및 카나리 클러스터(160)를 포함하지만, 이에 한정되지 않는다. 엣지 서비스 클러스터(120), 프로덕션 클러스터(140), 베이스라인 클러스터(150), 및 카나리 클러스터(160)는 서버들로서 구성되는 하나 이상의 컴퓨트 인스턴스(110)를 포함한다. 설명의 목적들을 위해, 프로덕션 클러스터(140) 내에 포함되는 서버들은 본 명세서에서 프로덕션 서버들로서 지칭되고, 베이스라인 클러스터(150) 내에 포함되는 서버들은 본 명세서에서 베이스라인 서버들로서 지칭되며, 카나리 클러스터(160) 내에 포함되는 서버들은 본 명세서에서 카나리 서버들로서 지칭된다.
동작에서, 클라이언트 디바이스들은 서비스 제공자 인프라스트럭처(118) 내에서 구현되는 서비스와 상호작용하는 클라이언트 세션들의 일부로서의 요청들을 발행한다. 요청들에 대한 응답으로, 서비스 제공자 인프라스트럭처(188) 내에 포함되는 서버들은 소프트웨어를 실행하고 요청들에 대한 응답들을 발행한다. 각각의 클라이언트 세션은 하나 이상의 관련 태스크를 성취하도록 의도되는 행동 그룹을 포함한다. 예를 들어, 서비스가 비디오 분배 서비스(video distribution service)이고 클라이언트 디바이스는 랩탑(106)이라고 가정한다. 클라이언트 세션은 클라이언트가 서비스 제공자 인프라스트럭처(118) 내에 포함되는 서버들에 의해 생성되는 그래픽 사용자 인터페이스(graphical user interface)(GUI)를 로딩한 시간으로부터 클라이언트가 재생을 위해 비디오를 선택한 시간까지 랩탑(106)에 의해 서비스 제공자 인프라스트럭처(118)에게 발행되는 요청들을 포함할 수 있다.
동작에서, 엣지 서비스 클러스터(120)는 서비스를 구현하는 서버들에 대한 게이트웨이(gateway)로서 동작한다. 다른 것들 중에서, 엣지 서비스 클러스터(120)는 클라이언트 디바이스들로부터 요청들을 수신하고, 서비스를 구현하는 소프트웨어를 실행하는 서버들에 요청들을 라우팅한다. 일반적으로, 클라이언트 경험의 개선의 일환으로, 서비스 제공자는 서비스와 연관된 소프트웨어를 주기적으로 변경한다. 더 구체적으로 서비스 제공자는 서버들에 의해 구현되는 소프트웨어를 수정하는 소프트웨어 업데이트를 밀어 넣는다. 일반적으로 서비스 제공자는 소프트웨어 업데이트를 밀어 넣기 전에 서비스로서 연관된 소프트웨어 업데이트에 의해 도입되는 임의의 결함들을 검출하기 위한 시도를 한다. 그러나, 종종 클라이언트 디바이스들의 매우 많은 지원되는 유형들 및/또는 클라이언트들의 매우 많은 워크 플로우들은 완전한 테스팅을 실행불가능하게 만든다. 이러한 이유로, 엣지 서비스 클러스터(120)는 카나리 분석을 가능하게 하도록 구성된다.
카나리 분석의 일환으로서, 요청을 수신하면, 엣지 서비스 클러스터(120)는 요청을 프로덕션 클러스터(140), 베이스라인 클러스터(150), 또는 카나리 클러스터(160) 중 하나에 라우팅한다. 프로덕션 클러스터(140) 및 베이스라인 클러스터(150)의 각각은 요청들에 대한 응답을 발행하기 위해 소프트웨어 업데이트 없이 서비스와 연관된 소프트웨어를 실행하는 서버들을 포함한다. 설명의 목적들을 위해, 소프트웨어 업데이트 없이 서비스와 연관된 소프트웨어는 본 명세서에서 "베이스라인 서비스 소프트웨어"로서 지칭된다. 대조적으로, 카나리 클러스터(160)는 요청들에 대한 응답을 발행하기 위해 서비스와 연관된 소프트웨어 업데이트를 실행하는 서버들을 포함한다. 설명의 목적들을 위해, 서비스와 연관된 소프트웨어 업데이트는 본 명세서에서 "서비스 소프트웨어 업데이트"로서 지칭된다. 일부 실시예들에서, 본 기술분야의 통상의 기술자가 인식할 대로, 서비스와 연관된 소프트웨어 업데이트는 집합된 서비스 소프트웨어 업데이트(aggregated service software update)를 생성하기 위해 베이스라인 소프트웨어에 더하여 적용될 수 있다. 설명의 목적들을 위해, 서비스 소프트웨어 업데이트 및 집합된 서비스 소프트웨어 업데이트는 본 명세서에서 모두 서비스 소프트웨어 업데이트들로서 지칭된다.
베이스라인 클러스터(150) 및 카나리 클러스터(160) 내에 포함되는 서버들이 요청들을 실행함에 따라, 엣지 서비스 클러스터(120)는 하나 이상의 카나리 메트릭을 통해 서버들 및/또는 클라이언트 디바이스들의 동작을 캡처 및 분석한다. 카나리 메트릭들은 서비스 소프트웨어 업데이트에 의해 도입되는 예상치 못한 영향들의 검출을 용이하게 하도록 설계된다. 예를 들어, 카나리 메트릭들은 서버 에러들의 수 및/또는 유형, 서버들에 의해 도입되는 대기 시간들, 서버들의 로딩, CPU들(112)의 역학(dynamics) 등을 반영할 수 있지만, 이에 한정되지 않는다. 일반적으로, 카나리 메트릭들 각각에 대해, 엣지 서비스 클러스터(120)는 카나리 클러스터(170) 내에서 구현되는 서비스 소프트웨어 업데이트가 클라이언트 경험에 부정적인 영향을 줄 수 있는지를 나타내는 임의의 이상들을 식별하기 위해 베이스라인 클러스터(160)와 연관된 값들을 카나리 클러스터(170)와 연관된 값들과 비교한다.
엣지 서비스 클러스터(120)는 임의의 기술적으로 실현 가능한 방식으로 카나리 메트릭들을 캡처 및 분석할 수 있다. 예를 들어, 일부 실시예들에서, 엣지 서비스 클러스터(120)는 응답 스트림들 및 디바이스 로그들을 분석하기 위해 이벤트 스트림 프로세싱 시스템(event stream processing system)(도시되지 않음)과 함께 동작할 수 있다. 보다 구체적으로, 엣지 서비스 클러스터(120)는 엣지 서비스 클러스터(120)가 베이스라인 클러스터(150) 또는 카나리 클러스터(160) 중 어느 하나에 라우팅하는 각각의 요청을 "태그(tag)"할 수 있다. 이벤트 스트림 프로세싱 시스템은 요청을 발행한 클라이언트 디바이스를 식별하는 전자 일련 번호(electronic serial number)(ESN)와 같은 태그된 요청의 식별 특성에 기초하여 태그된 요청들을 식별하고 디바이스 로그들과 응답 스트림들을 서로 관련시키도록 구성될 수 있다.
카나리 메트릭들을 분석하는 것에 기초하여, 엣지 서비스 클러스터(120)는 임의의 식별된 이상들 또는 에러들에 관한 카나리 데이터를 서비스 제공자에 제공한다. 카나리 데이터는 클라이언트 디바이스 유형들, 영향을 받은 요청들의 비율 등을 포함하지만 이에 한정되지 않는 이상들 또는 에러들에 대한 임의의 유형의 정보를 포함할 수 있다. 카나리 데이터에 기초하여, 서비스 제공자는 서비스 소프트웨어 업데이트를 밀어 넣음을 확장할지 또는 서비스 소프트웨어 업데이트를 "취소(pull back)" 할지 여부를 결정할 수 있다. 서비스 제공자는 임의의 기술적으로 실현 가능한 방식으로 서비스 소프트웨어 업데이트를 취소할 수 있다. 예를 들어, 서비스 제공자는 서비스 소프트웨어 업데이트 대신 베이스라인 서비스 소프트웨어를 실행하기 위해 임의의 수의 서버들을 재구성할 수 있다. 일부 실시예들에서, 서비스 제공자는 식별된 이상들 또는 에러들을 수정하는 새로운 서비스 소프트웨어 업데이트를 밀어 넣을 수 있다. 서비스 제공자는 카나리 데이터를 임의의 기술적으로 실현 가능한 방식으로 분석할 수 있다. 예를 들어, 일부 실시예들에서, 서비스 제공자는 카나리 데이터를 해석하기 위해 자동화된 카나리 분석 툴(Automated Canary Analytics(ACA) tool)을 구성할 수 있다.
그러나, 카나리 데이터가 카나리 클러스터(160) 내에서 구현되는 서비스 소프트웨어 업데이트가 클라이언트 경험에 부정적인 영향을 줄 수 있다는 것을 나타내지 않는 것으로 서비스 제공자가 판단하면, 이후 서비스 제공자는 서비스 소프트웨어 업데이트를 추가 서버들에 밀어 넣을 수 있고, 그에 의해 카나리 클러스터(160)의 크기를 증가시킬 수 있다. 결국, 카나리 데이터가 카나리 클러스터(160) 내에서 구현되는 서비스 소프트웨어 업데이트가 클라이언트 경험에 부정적인 영향을 주지 않는다는 것을 계속해서 나타내면, 이후 서비스 제공자는 서비스 소프트웨어 업데이트를 프로덕션에 밀어 넣을 수 있다 - 베이스라인 서비스 소프트웨어 대신 서비스 소프트웨어 업데이트를 실행하도록 프로덕션 클러스터(140) 내에 포함되는 서버들을 구성함 -.
또한, 일부 실시예들에서, 엣지 서비스 클러스터(120)는 서비스 제공자가 카나리 분석을 수정하는 것을 가능하게 하는 응용 프로그래밍 인터페이스(application programming interface)(API)를 제공할 수 있다. 예를 들어, 그러한 API는 서비스 제공자가 카나리 데이터의 검색, 카나리 분석의 시작, 카나리 분석의 중지, 및 카나리 분석의 구성 등을 할 수 있게 할 수 있다. 또 다른 실시예들에서, 카나리 클러스터(160) 내에서 구현되는 서비스 소프트웨어 업데이트가 클라이언트 경험에 부정적인 영향을 줄 수 있다는 것을 나타내는 이상을 엣지 서비스 클러스터(120)가 검출하면, 이후 엣지 서비스 클러스터(120)는 자동적으로 카나리 분석을 중지할 수 있고, 그에 의해 변경들의 영향을 제한한다.
일반적으로, 카나리 메트릭들의 품질이 카나리 분석의 유효성(effectiveness)에 영향을 준다. 보다 구체적으로, 소프트웨어 서비스 업데이트에 의해 포함되는 하나 이상의 결함이 카나리 메트릭들 내에 반영되지 않는다면, 이후 서비스 제공자는 결함들을 포함하는 소프트웨어 서비스 업데이트를 프로덕션 클러스터(140)에 밀어 넣을 수 있다. 그 뒤에, 결함들은 받아들일 수 없는 수의 클라이언트들에 부정적인 영향을 줄 수 있다. 카나리 메트릭들의 품질을 감소시키는 종래의 엣지 서비스 클러스터의 한 가지 한계는 종래의 엣지 서비스 클러스터에 의해 구현되는 랜덤 라우팅 프로세스(random routing process)이다.
종래의 엣지 서비스 클러스터는 일반적으로 카나리 클러스터(160)로의 요청들의 상대적으로 작은 랜덤 샘플링을 라우팅한다. 베이스라인 소프트웨어가 베이스라인 클러스터(150) 및 프로덕션 클러스터(140) 내에 포함되는 서버들에 의해 여전히 이용 가능하고 실행되기 때문에, 랜덤 샘플링 프로세스는 클라이언트 디바이스들의 동작들에 대한 서비스 소프트웨어 업데이트의 영향들을 숨길 수 있다. 특히, 카나리 메트릭들은 카나리 클러스터(160)와 베이스라인 클러스터(150) 내에 포함되는 서버들의 행동 사이의 차이들에 기인하는, 클라이언트 디바이스들의 동작들에 대한 악영향들(adverse effects)을 반영하지 않을 수 있다. 본 명세서에서 서버 측 행동의 클라이언트 측 영향들로서 지칭되는, 클라이언트 디바이스들의 동작들에 대한 서버 행동의 그러한 검출되지 않는 영향들은 데이터 차이들, 포맷 변경들, 빈 서버 응답들 등을 포함할 수 있다.
예를 들어, 카나리 클러스터(160)가 6개의 카나리 서버들을 포함하고, 베이스라인 클러스터(150)가 6개의 베이스라인 서버들을 포함하며, 프로덕션 클러스터(140)가 988개의 프로덕션 서버들을 포함한다고 가정한다. 클라이언트 세션 동안, 클라이언트 디바이스가 30개의 요청들을 발행하고 종래의 엣지 서비스 클러스터가 요청들을 라우팅하면, 카나리 서버들 중 하나가 요청들 중 하나를 프로세싱할 가능성은 약 3%일 것이다. 또한, 종래의 엣지 서비스 클러스터가 제1 요청을 카나리 서버에 라우팅한다고 가정한다. 카나리 서버는 서비스 소프트웨어 업데이트를 실행하지만, 서비스 소프트웨어 업데이트와 연관된 결함은 카나리 서버가 오작동하게 하고 클라이언트 디바이스가 해석할 수 없는 제1 요청에 대한 응답을 발행하게 한다. 응답으로, 클라이언트 디바이스가 제2 요청을 발행함으로써 요청을 재시도한다고 가정한다.
종래의 엣지 서비스 클러스터가 제2 요청을 라우팅하면, 카나리 서버들 중 하나가 제2 요청을 프로세싱할 가능성은 약 0.09%일 것이다. 베이스라인 서버들 또는 프로덕트 서버들 중 하나가 제2 요청에 대한 제2 응답을 생성하기 위해 제2 요청을 프로세싱하고 베이스라인 소프트웨어를 실행하면, 클라이언트 디바이스는 이 제2 응답을 올바르게 해석할 수 있을 것이다. 결과적으로, 카나리 메트릭들은 문제를 나타내지 않을 것이고, 서비스 제공자가 변경들을 프로덕션 클러스터(140)에 밀어 넣을 때까지 결함은 검출을 피할 수 있을 것이다. 서비스 제공자가 변경들을 프로덕션 클러스터(140)에 밀어 넣은 후에, 클라이언트 디바이스가 제1 요청을 발행하면, 프로덕션 클러스터(140)는 서비스 소프트웨어 업데이트를 실행할 것이고 클라이언트 디바이스는 재시도의 횟수와 무관하게 응답을 올바르게 해석할 수 없을 것이다. 결과적으로, 클라이언트 경험은 저하될 것이다.
카나리 분석 동안 변경들의 그러한 클라이언트 측 영향들의 검출을 가능하게 하기 위해, 엣지 서비스 클러스터(120)는 스티키 카나리 라우터(sticky canary router)(130)를 포함한다. 일반적으로, 스티키 카나리 라우터(130)는 제한된 시간의 양 동안, 적은 비율의 클라이언트 디바이스들로부터 수신되는 요청들을, 카나리 분석을 위해 카나리 클러스터(160) 또는 베이스라인 클러스터(150) 중 어느 하나에 지속적으로 라우팅한다. 제한된 시간의 양은 본 명세서에서 유지 시간(time-to-live)(TTL)으로서 지칭되고, 일반적으로 대략 전체 클라이언트 세션들을 캡처하도록 선택된다. TTL은 또한 본 명세서에서 라우팅에 대한 시간 윈도우로서 지칭된다. 엣지 서비스 클러스터(120)는 남아 있는 요청들을 프로덕션 클러스터(140)에 라우팅한다. 스티키 카나리 라우터(130)는 임의의 기술적으로 실현 가능한 방식으로 구현될 수 있다. 예를 들어, 일부 실시예들에서, 스티키 카나리 라우터(130)는 엣지 서비스 클러스터(120) 내에 포함되는 하나 이상의 필터로서 구현될 수 있다.
동작에서, TTL과 동일한 지속 시간의 시간 세그먼트 동안, 스티키 카나리 라우터(130)는 클라이언트 디바이스들의 작은 서브셋으로부터의 요청들을 카나리 클러스터(160)에 라우팅하고, 클라이언트 디바이스들의 상이한 작은 서브셋으로부터의 요청들을 베이스라인 클러스터(150)에 라우팅한다. TTL과 동일한 지속 시간의 후속 시간 세그먼트 동안, 스티키 카나리 라우터(130)는 클라이언트 디바이스들의 또 다른 작은 서브셋으로부터의 요청들을 카나리 클러스터(160)에 라우팅하고, 클라이언트 디바이스들의 상이한 작은 서브셋으로부터의 요청들을 베이스라인 클러스터(150)에 라우팅한다. 스티키 카나리 라우터(130)는 카나리 분석이 완료될 때까지 이러한 프로세스를 계속하고, 클라이언트 디바이스들의 상이한 서브셋들로부터의 요청들을 카나리 클러스터(160) 또는 베이스라인 클러스터 중 어느 하나에 라우팅한다. 스티키 카나리 라우터(130)는 전체 시간(total time)과 같은 임의의 기술적으로 실현 가능한 기준에 기초하여 카나리 분석을 종료하도록 구성될 수 있다.
오직 설명의 목적들을 위해, 주어진 TTL에 대하여, 스티키 카나리 라우터(130)가 요청들을 카나리 클러스터(160)에 라우팅하는 클라이언트 디바이스들의 작은 서브셋은 본 명세서에서 "카나리 클라이언트 디바이스들"로서 지칭된다. 유사하게, 주어진 TTL에 대하여, 스티키 카나리 라우터(130)가 요청들을 베이스라인 클러스터(150)에 라우팅하는 클라이언트 디바이스들의 작은 서브셋은 본 명세서에서 "베이스라인 클라이언트 디바이스들"로서 지칭된다. 남아 있는 클라이언트 디바이스들은 본 명세서에서 "프로덕션 클라이언트 디바이스들"로서 지칭된다. 시간이 진행됨에 따라, 카나리 클라이언트 디바이스들로서 지칭되는 클라이언트 디바이스들의 세트, 베이스라인 클라이언트 디바이스들로서 지칭되는 클라이언트 디바이스들의 세트, 및 프로덕션 클라이언트 디바이스들로서 지칭되는 클라이언트 디바이스들의 세트는 변경된다.
유리하게, 연관된 클라이언트 디바이스에 기초하여 요청들을 지속적으로 라우팅함으로써, 스티키 카나리 라우터(130)는 엣지 서비스 클러스터(120)가 전체 클라이언트 세션들에 대한 카나리 클러스터(160)와의 상호작용들을 정확하고 포괄적으로 반영하는 카나리 메트릭들을 획득하는 것을 가능하게 한다. 결과적으로, 종래의 카나리 분석을 통한 검출을 피하는 변경들의 클라이언트 측 영향들은 카나리 메트릭들을 통해 결정될 수 있다. 특히, 변경들이 바람직하지 않은 클라이언트 측 영향을 야기하면, 카나리 메트릭들은 일반적으로 카나리 클라이언트 디바이스들과 연관된 호출 패턴들(call patterns)이 베이스라인 클라이언트 디바이스들과 연관된 호출 패턴들과 다르다는 것을 반영한다.
특히, 스티키 카나리 라우터(130)는 TTL의 지속 시간 동안 카나리 클라이언트 디바이스들로부터 수신되는 요청들을 베이스라인 소프트웨어로부터 격리시키기 때문에, 베이스라인 소프트웨어는 카나리 클라이언트 디바이스들에 대한 서비스 소프트웨어 업데이트의 영향들을 숨기지 않는다. 예를 들어, TTL이 90초이고 카나리 클라이언트 디바이스가 스티키 카나리 라우터(130)가 카나리 클러스터(160)에 라우팅하는 제1 요청을 발행한다고 가정한다. 카나리 클러스터(160) 내에 포함되는 카나리 서버는 서비스 소프트웨어 업데이트를 실행하지만, 서비스 소프트웨어 업데이트와 연관된 결함은 카나리 서버가 오작동하게 하고 클라이언트 디바이스가 해석할 수 없는 제1 요청에 대한 응답을 발행하게 한다. 응답으로, 클라이언트 디바이스가 제2 요청을 발행함으로써 요청을 재시도한다고 가정한다. 스티키 카나리 라우터(130)는 이 제2 요청을 카나리 클러스터(160)에 라우팅하고 카나리 서버는 서비스 소프트웨어 업데이트를 실행한다. 서비스 소프트웨어 업데이트는 결함을 포함하고, 결과적으로, 클라이언트 디바이스는 제2 요청에 대한 카나리 서버의 응답을 해석할 수 없다.
클라이언트 디바이스는 90초의 TTL 동안 요청을 계속해서 재시도할 수 있지만, 스티키 카나리(130)가 TTL 동안 클라이언트 디바이스로부터 수신되는 요청들 중 어느 것도 베이스라인 클러스터(150) 또는 프로덕션 클러스터(140) 중 어느 하나에 라우팅하지 않을 것이기 때문에, 클라이언트 디바이스는 성공적으로 동작할 수 없을 것이다. 특히, 서비스 소프트웨어 업데이트 내에 포함된 결함의 결과로서, 카나리 클러스터(160)에 의해 수신되는 요청들의 볼륨은 베이스라인 클러스터(150)에 의해 수신되는 요청들의 볼륨을 극적으로 초과할 수 있다. 볼륨에서의 증가가 카나리 메트릭들 내에 반영될 것이기 때문에, 서비스 제공자는 스티키 카나리 분석을 통해 서비스 소프트웨어 업데이트 내에 포함되는 결함을 검출하고, 서비스 소프트웨어 업데이트를 취소하며, 결함을 수정할 수 있다.
또한, 스티키 카나리 라우터(130)가 제한된 TTL 동안 작은 비율의 클라이언트 디바이스들만을 카나리 클러스터(160)에 라우팅하도록 구성되기 때문에, 클라이언트 경험에 대한 카나리 테스팅의 영향은 최소화된다. 예를 들어, 스티키 카나리 라우터(130)는 10초의 TTL 동안 클라이언트 디바이스들 중 3%로부터의 요청들을 카나리 클러스터(160)에 라우팅하도록 구성될 수 있다. 10초 후, 스티키 카나리 라우터(130)는 그 다음 10초 동안 클라이언트 디바이스들 중 다른 3%로부터의 요청들을 카나리 클러스터(160)에 라우팅할 수 있고, 총 2분의 카나리 테스팅 시간 동안 이런 식으로 계속할 수 있다. 결과적으로, 서비스 소프트웨어 업데이트 내에 포함되는 임의의 결함의 각각의 클라이언트 디바이스에 대한 영향은 10초로 제한될 것이다.
본 명세서에 설명된 기술들은 제한적인 것이라기 보다는 예시적인 것이고, 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않고 변경될 수 있음을 주목한다. 특히, 스티키 카나리 라우터(130)는 스티키 카나리 라우터(130)가 임의의 기술적으로 실현 가능한 기준 및 임의의 시간 길이에 기초하여 요청들을 카나리 클러스터(160) 또는 베이스라인 클러스터(150) 중 어느 하나에 지속적으로 라우팅할 수 있게 하는 임의의 알고리즘을 구현할 수 있다. 예를 들어, 대안의 실시예들에서, 카나리 라우터(130)는 디바이스 식별자, 클라이언트 식별자, 전자 일련 번호(ESN), 세션 식별자, 또는 요청의 임의의 다른 특성에 기초하여 카나리 클러스터(160)에 라우팅할 요청들을 선택할 수 있다. 일부 실시예들에서, 카나리 라우터(130)는 특정 클라이언트 디바이스 상에서 실행되는 하나의 세션으로부터의 요청들을 카나리 클러스터(160)에 라우팅하고 특정 클라이언트 디바이스 상에서 실행되는 다른 세션들로부터의 요청들을 프로덕션 클러스터(140)에 라우팅할 수 있다.
또한, 일부 실시예들에서, 시스템(100)은 엣지 서비스 클러스터(120)를 포함하지 않고, 스티키 카나리 라우터(130)는 독립형(stand-alone)의 라우팅 애플리케이션으로서 구현된다. 대안의 실시예들에서, 스티키 카나리 라우터(130) 내에 포함되는 기능성은 임의의 유닛 또는 애플리케이션 내에 포함될 수 있고 임의의 기술적으로 실현 가능한 방식으로 구현될 수 있다. 다양한 실시예들에서, 스티키 카나리 라우터(130)는 소프트웨어, 하드웨어, 또는 그것들의 임의의 조합으로 구현될 수 있다. 일부 실시예들에서, 서비스 소프트웨어 업데이트는 수정을 구현하는 서버의 기능성을 변경하는 임의의 유형의 수정으로 대체될 수 있다. 예를 들어, 일부 실시예들에서, 서비스 소프트웨어 업데이트는 소프트웨어 업데이트들, 데이터 업데이트들, 스크립팅(scripting) 업데이트들, 템플릿 업데이트들 등등의 임의의 개수 및 조합을 포함하는 서비스 업데이트로 대체된다.
스티키 카나리 라우팅
도 2는 본 발명의 다양한 실시예들에 따른 도 1의 스티키 카나리 라우터(130)의 보다 상세한 도면이다. 도시된 바와 같이, 스티키 카나리 라우터(130)는 디바이스 해시(device hash)(242), 시간 해시(246), 및 라우팅 해시(248)를 포함하지만, 이에 한정되지 않는다. 동작에서, 스티키 카나리 라우터(130)는 하나 이상의 요청들(210)을 수신하고, 하나 이상의 라우팅 구성(220)에 기초하여 요청들(210)의 각각을 프로세싱한다. 이후 스티키 카나리 라우터(130)는 요청들의 각각을 카나리 클러스터(160), 베이스라인 클러스터(150), 또는 프로덕션 클러스터(140) 중 하나에 라우팅하기 위해 엣지 서비스 클러스터(120)와 협력한다.
도시된 바와 같이, 요청(210)은 요청 식별자(ID)(212), 클라이언트 ID(214), 및 디바이스 ID(216)를 포함하지만, 이에 한정되지 않는다. 요청 ID(212), 클라이언트 ID(214), 및 디바이스 ID(216)는 임의의 기술적으로 실현 가능한 방식으로 구체화될 수 있고 본 기술분야에서 알려진 대로의 임의의 관례를 따를 수 있다. 예를 들어, 디바이스 ID(216)는 디바이스 일련 번호와 연결된 디바이스 유형을 포함하는 문자열(string)일 수 있다. 대안의 실시예들에서, 요청(210)은 요청과 연관된 임의의 수의 특성들을 식별하는 임의의 수 및 유형의 정보를 포함할 수 있다. 예를 들어, 일부 실시예들에서, 요청(210)은 전자 일련 번호(ESN) 및 세션 식별자를 포함할 수 있다.
스티키 카나리 라우터(130)는 라우팅 구성들(220)을 통해 구성된다. 라우팅 구성들(220)의 각각은 디바이스 유형(222), 라우팅(226), 백만당 비율(rate per million)(RPM)(232), 유지 시간(TTL)(234), 및 시드(seed)(236)를 포함하지만, 이에 한정되지 않는다. 디바이스 유형(222)은 플레이스테이션®3(PlayStation®3)(PS3) 또는 BIVL(Best Resolution Audio Visual Integrated Architecture Internet Video Link) 텔레비전과 같은 디바이스의 유형을 지정한다. 라우팅(226)은 라우팅 구성(220)이 카나리 클러스터(160)와 연관되는지 또는 베이스라인 클러스터(150)와 연관되는지를 지정한다. 백만 당 비율(RPM)(232)은 디바이스 유형(222)의 클라이언트 디바이스들로부터 수신되는 요청들(210) 중 라우팅(226)에 의해 지정되는 클러스터에 라우팅될 비율을 지정한다. TTL(234)은 클라이언트 디바이스들의 특정 서브셋이 디바이스 ID들(216)에 기초하여 라우팅(226)에 의해 지정되는 클러스터에 라우팅되는 동안의 시간 세그먼트들의 지속 시간을 지정한다. 마지막으로, 시드(236)는 라우팅 구성들(220)의 각각에 고유한 값이고, 스티키 카나리 라우터(130)가 라우팅 구성들(220)에 따라 라우팅하는 클라이언트 디바이스들의 서브셋이 라우팅 구성들(220) 사이에서 달리질 것을 보장하도록 선택된다.
특히, 라우팅 구성들(220)은 스티키 카나리 라우터(130) 내에 포함되는 기능성이 여러 가지 물류 고려사항들(logistical considerations)에 기초하여 미세 조정될 수 있게 한다. 일부 실시예들에서, 라우팅 구성들(220)은 디바이스 유형(222)에 기초하여 요청 라우팅들(260)을 정규화할 수 있다. 예를 들어, BIVL 텔레비전들은 PS3들보다 훨씬 덜 일반적이다. 결과적으로 BIVL 텔레비전들의 적절한 테스팅을 보장하기 위해, BIVL 텔레비전과 연관된 라우팅 구성들(220)은 1000의 RPM(232)을 포함할 수 있고, PS3과 연관된 라우팅 구성들(220)은 10의 RPM(232)을 포함할 수 있다. 라우팅 구성들(220)은 임의의 기술적으로 실현 가능한 방식 및 임의의 포맷으로 생성될 수 있다. 예를 들어, 일부 실시예들에서, 이벤트 스트림 프로세싱 시스템은 디바이스 유형들(222)의 상대적 랭킹 분포(relative ranked distribution)를 생성할 수 있고, 서비스 제공자는 이 랭킹 분포에 기초하여 RPM들(232)을 결정할 수 있다. 다른 실시예들에서, 상이한 디바이스 유형들(222)과 연관된 상이한 클라이언트 플로우들에 대해 전체 세션들을 대략 캡처하기 위해 라우팅 구성(220)마다 TTL(232)이 미세 조정될 수 있다.
동작에서, 요청(210)을 수신하면, 스티키 카나리 라우터(130)는 디바이스 ID(216)에 기초하여 요청(210)을 발행한 클라이언트 디바이스의 유형을 결정한다. 그 뒤에, 스티키 카나리 라우터(130)는 "카나리"의 라우팅(226), 및 클라이언트 디바이스의 유형과 일치하는 디바이스 유형(222)을 포함하는 라우팅 구성(220)을 식별하기 위해 하나 이상의 비교 동작들을 수행한다. 스티키 카나리 라우터(130)는 이후 디바이스 ID(216) 및 식별된 "카나리" 라우팅 구성(220)에 기초하여 요청(210)을 카나리 클러스터(160)에 라우팅할지 여부를 결정한다.
스티키 카나리 라우터(130)가 요청(210)을 카나리 클러스터(160)에 라우팅하지 않기로 결정하면, 이후 스티키 카나리 라우터(130)는 "베이스라인"의 라우팅(226), 및 클라이언트 디바이스의 유형과 일치하는 디바이스 유형(222)을 포함하는 라우팅 구성(220)을 식별하기 위해 비교 동작들을 수행한다. 스티키 카나리 라우터(130)는 이후 디바이스 ID(216) 및 식별된 "베이스라인" 라우팅 구성(220)에 기초하여 요청(210)을 베이스라인 클러스터(150)에 라우팅할지 여부를 결정한다. 도시된 바와 같이, 디바이스 유형(222) "디바이스 A"와 연관된 "카나리" 라우팅 구성(220(1)) 내에 포함되는 시드(236)는 디바이스 유형(222) "디바이스 A"와 연관된 "베이스라인" 라우팅 구성(220(2)) 내에 포함되는 시드(236)와 상이하다.
스티키 카나리 라우터(130)가 요청(210)을 카나리 라우팅 클러스터(260) 또는 베이스라인 클러스터(250) 중 어느 하나에 라우팅하지 않기로 결정하면, 이후 엣지 서비스 클러스터(210)는 요청(210)을 엣지 서비스 클러스터(210) 내에 구현되는 디폴트 라우팅에 따라 - 일반적으로 프로덕션 클러스터(140)에 - 라우팅한다. 이러한 방식으로, 스티키 카나리 라우터(130) 및 엣지 서비스 클러스터(210)는 모든 요청들(210)을 라우팅하기 위해 협력한다.
특정 라우팅 구성(220)에 기초하여 요청(210)을 라우팅할지 여부를 결정하는 것의 일환으로, 스티키 카나리 라우터(130)는 디바이스 해시(242), 시간 해시(246), 및 라우팅 해시(248)를 컴퓨팅한다. 보다 구체적으로, 디바이스 ID(216)에 기초하여, 스티키 카나리 라우터(130)는 일관된(consistent) 디바이스 해시(242)를 컴퓨팅한다. 동작에서, 스티키 카나리 라우터(130)는 라우팅 구성(220)과 관계없이 특정 클라이언트 디바이스로부터 수신되는 모든 요청들(210)에 대해 디바이스 해시(242)의 동일한 값을 컴퓨팅한다. 대조적으로, 스티키 카나리 라우터(130)는 상이한 클라이언트 디바이스들로부터 수신되는 2개의 요청들(210)에 대해 디바이스 해시(242)의 2개의 상이한 값들을 컴퓨팅한다. 따라서, 일부 대안의 실시예들에서, 스티키 카나리 라우터(130)는 카나리 라우팅 구성(220)을 식별하기 전에 디바이스 해시(242)를 컴퓨팅할 수 있다. 스티키 카나리 라우터(130)는 디바이스 ID(216)의 각각의 값에 대해 결정론적으로(deterministically) 일관된 값을 리턴하는 임의의 기술적으로 실현 가능한 방식으로 디바이스 해시(242)를 컴퓨팅할 수 있다. 예를 들어, 일부 실시예들에서, 스티키 카나리 라우터(130)는 디바이스 ID(216) 상에 해싱 동작(hashing operation) 또는 순환 중복 검사(cyclic redundancy check)(CRC) 동작을 수행할 수 있다.
TTL(234) 및 시드(236)에 기초하여, 스티키 카나리 라우터(130)는 TTL(234)과 동일한 지속 시간 동안 시간 해시(246)를 일관되게 컴퓨팅하도록 구성된다. 예를 들어, TTL(234)이 90초이고 시드(236)가 "카나리 시드"이면, 스티키 카나리 라우터(130)는 90초 동안 시간 해시(246)를 "제1 카나리 시간 세그먼트"로서 컴퓨팅할 수 있다. 그 뒤에, 그 다음 90초 동안, 스티키 카나리 라우터(130)는 시간 해시(246)를 "제2 카나리 시간 세그먼트"로서 컴퓨팅하는 식으로 계속될 수 있다. 시드(236)가 라우팅 구성들(220)의 각각에 대해 개별적으로 정의될 수 있기 때문에, 시간 해시(246)는 라우팅 구성들(220)의 TTL들(234)이 동일한지 여부에 관계없이 라우팅 구성(220)에 기초하여 변할 수 있다.
스티키 카나리 라우터(130)는 특정 시드(236)에 대해, TTL(234)과 동일한 지속 시간의 시간 세그먼트에 대해 시간 해시(246)가 일정한 값인 것을 보장하는 임의의 기술적으로 실현 가능한 방식으로 시간 해시(246)를 컴퓨팅할 수 있다. 예를 들어, 도시된 바와 같이, 스티키 카나리 라우터(130)는 다음 식을 구현할 수 있다:
1. 시간 해시(246) = floor(current_time_since_epoch()/TTL(234)) * 시드(236)
TTL들(234)은 서버 시간이 서버들, 클러스터들, 및 영역들에 걸쳐 일관될 것을 보장하는 네트워크 타임 프로토콜(Network Time Protocol)(NTP)을 통해 동기화된다. 결과적으로, 식 1은 서버들, 및 서버들의 클러스터들에 걸쳐 유효하다.
스티키 카나리 라우터(130)는 라우팅 해시(248)를 컴퓨팅하기 위해 디바이스 해시(242) 및 시간 해시(246)를 레버리징한다. 일반적으로, 디바이스 ID(216) 및 라우팅 구성(220)에 대해, 스티키 카나리 라우터(130)는 TTL(234)과 동일한 지속 시간의 시간 간격 동안 라우팅 해시(248)에 대해 단일한 고유 값을 일관되게 컴퓨팅하도록 구성된다. 스티키 카나리 라우터(130)는 라우팅 해시(248)의 전술한 속성들을 따르는 임의의 기술적으로 실현 가능한 방식으로 라우팅 해시(248)를 컴퓨팅할 수 있다. 예를 들어, 도시된 바와 같이, 스티키 카나리 라우터(130)는 디바이스 해시(242) 및 시간 해시(246) 상에 해시 리스트 동작(hash list operation)과 같은 해싱 동작을 수행할 수 있다. 대안의 실시예들에서, 스티키 카나리 라우터(130)는 디바이스 해시(242) 및 시간 해시(246) 상에 CRC 동작을 수행할 수 있다. 또 다른 실시예들에서, 스티키 카나리 라우터(130)는 디바이스 해시(242)와 시간 해시(246) 사이의 곱셈 연산을 수행할 수 있다.
요청(210)에 대해 라우팅 해시(248)를 컴퓨팅한 후, 스티키 카나리 라우터(130)는 RPM(232)에 기초하여 요청(210)을 라우팅할지 여부를 결정한다. 특히, 스티키 카나리 라우터(130)는 모듈러스(modulus)를 결정하기 위해 라우팅 해시(248) 및 값 일백만 상에 모듈로 연산(modulo operation)을 수행한다. 스티키 카나리 라우터(130)는 이후 모듈러스를 RPM(232)과 비교한다. 모듈러스가 RPM(232)보다 작으면, 스티키 카나리 라우터(130)는 라우팅 구성(220) 내에 포함되는 라우팅(226)에 기초하여 요청(210)을 라우팅한다. 예를 들어, 라우팅(226)의 값이 "카나리"이면, 스티키 카나리 라우터(130)는 요청(210)을 카나리 클러스터(160)에 라우팅한다.
특히, 주어진 TTL(324)에 의해 지정된 시간 윈도우에 대해, 라우팅 해시(240)의 일관된 값은 스티키 카나리 라우터(130)가 클라이언트 디바이스들의 각각에 대해 "스티키" 라우팅을 제공함을 보장한다. 보다 구체적으로, 주어진 TTL(324)에 대해, 스티키 카나리 라우터(130)는 카나리 클라이언트 디바이스들로부터 수신되는 요청들(210)을 카나리 클러스터(160)에 라우팅하고, 베이스라인 클라이언트 디바이스들로부터 수신되는 요청들(210)을 베이스라인 클러스터(150)에 라우팅한다. 엣지 서비스 클러스터(120)는 남아 있는 클라이언트 디바이스들 - 프로덕션 클라이언트 디바이스들 - 로부터 수신되는 요청들(210)을 프로덕션 클러스터(140)에 라우팅한다. 또한, RPM(232)은 클라이언트 디바이스들의 총 개수에 대하여 카나리 클라이언트 디바이스들 및 베이스라인 클라이언트 디바이스들의 비율을 제어한다. 이러한 방식으로, 스티키 카나리 라우터(130)는 TTL의 지속 시간 동안 카나리 클라이언트 디바이스들로부터 수신되는 요청들을 베이스라인 소프트웨어로부터 격리시킨다. 결과적으로, 베이스라인 소프트웨어는 카나리 클라이언트 디바이스들에 대한 서비스 소프트웨어 업데이트의 영향들을 숨기지 못한다.
도 3은 본 발명의 다양한 실시예들에 따른 도 2의 스티키 카나리 라우터(120)에 의해 생성되는 라우팅들의 예시이다. 도 3의 컨텍스트(context)는 요청들(210)이 클라이언트 디바이스들(305)로부터 수신되고, 라우팅 구성들(220)(도 3에 도시되지 않음)에 기초하여, 스티키 카나리 라우터(130)가 요청들(210)의 각각을 카나리 클러스터(160), 베이스라인 클러스터(150), 또는 프로덕션 클러스터(140) 중 하나에 라우팅한다는 것이다.
오직 설명의 목적들을 위해, 요청들(210)은 라우팅 구성들(220) 내에 포함되는 TTL(234) 내에서 스티키 카나리 라우터(120)에 의해 수신되는 것으로 간주된다. 따라서, 스티키 카나리 라우터(120)는 특정 클라이언트 디바이스(305)로부터 수신되는 모든 요청들(210)을 일관된 방식으로 카나리 클러스터(160), 베이스라인 클러스터(150), 또는 프로덕션 클러스터(140)에 라우팅한다. 보다 구체적으로, 도시된 바와 같이, 스티키 카나리 라우터(120)는 클라이언트 디바이스들(305(3) 및 305(5))로부터 수신되는 모든 요청들(210)을 카나리 클러스터(160)에 라우팅한다. 대조적으로, 스티키 카나리 라우터(120)는 클라이언트 디바이스들(305(4) 및 305(M))로부터 수신되는 모든 요청들(210)을 베이스라인 클러스터(150)에 라우팅한다. 스티키 카나리 라우터(120)는 남아 있는 클라이언트 디바이스들(305)로부터 수신되는 모든 요청들(210)을 엣지 서비스 클러스터(120)로 전달하고, 엣지 서비스 클러스터(120)는 이들 요청들(210)을 프로덕션 클러스터(140)에 라우팅한다.
도 4는 본 발명의 다양한 실시예들에 따라, 서비스와 연관된 소프트웨어 업데이트들의 카나리 분석을 수행할 때 요청들을 라우팅하기 위한 방법 단계들의 흐름도이다. 방법 단계들이 도 1 내지 도 3의 시스템들을 참조하여 설명되지만, 본 기술분야의 통상의 기술자들은 방법 단계들을 임의의 순서로 구현하도록 구성되는 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도시된 바와 같이, 방법(400)은 스티키 카나리 라우터(130)가 라우팅 구성들(220)을 수신하는 단계(404)에서 시작한다. 디바이스 유형들(222)의 각각에 대해, 스티키 카나리 라우터(130)는 2개의 라우팅 구성들(220)을 수신한다. 카나리 클러스터(260)와 연관된 라우팅 구성은 라우팅(226)에 대한 "카나리"의 값에 의해 나타난다. 대조적으로, 베이스라인 클러스터(250)와 연관된 라우팅 구성(220)은 라우팅(226)에 대한 "베이스라인"의 값에 의해 나타난다. 단계(406)에서, 스티키 카나리 라우터(130)는 요청(210)을 수신한다. 요청(210)은 요청(210)을 발행한 클라이언트 디바이스(305)의 디바이스 ID(216)를 포함한다. 단계(406)에서, 스티키 카나리 라우터(130)는 디바이스 ID(216)에 기초하여 디바이스 해시(242)를 계산한다.
단계(408)에서, 스티키 카나리 라우터(130)는 "카나리"의 라우팅(226), 및 클라이언트 디바이스(305)의 유형과 일치하는 디바이스 유형(222)을 포함하는 라우팅 구성(220)을 선택한다. 스티키 카나리 라우터(130)는 임의의 기술적으로 실현 가능한 방식으로 클라이언트 디바이스(305)의 유형을 획득할 수 있다. 예를 들어, 일부 실시예들에서, 클라이언트 디바이스의 유형은 디바이스 ID(216) 내에 내장된다. 단계(410)에서, 스티키 카나리 라우터(130)는 현재 시간, 선택된 라우팅 구성(220) 내에 포함된 TTL(234), 및 선택된 라우팅 구성 내에 포함된 시드(236)에 기초하여 시간 해시(246)를 계산한다. 본 명세서에 전술한 상세와 같이, 스티키 카나리 라우터(130)는 시드(236)에 대해, TTL(234)과 동일한 지속 시간의 시간 세그먼트 동안 시간 해시(246)가 일관된 값임을 보장하는 임의의 기술적으로 실현 가능한 방식으로 시간 해시(246)를 컴퓨팅할 수 있다.
단계(412)에서, 스티키 카나리 라우터(130)는 라우팅 해시(248)를 컴퓨팅하기 위해 디바이스 해시(242) 및 시간 해시(246) 상에 해싱 동작을 수행한다. 특히, 디바이스 ID(216) 및 선택된 라우팅 구성(220)에 대해, 스티키 카나리 라우터(130)는 TTL(234)과 동일한 지속 시간의 시간 간격 동안 라우팅 해시(248)에 대해 단일한 고유 값을 일관되게 컴퓨팅하도록 구성된다. 단계(414)에서, 스티키 카나리 라우터(130)는 모듈러스를 결정하기 위해 라우팅 해시(248) 및 값 일백만 상에 모듈로 연산을 수행한다. 스티키 카나리 라우터(130)는 이후 모듈러스를 선택된 라우팅 구성(220) 내에 포함된 RPM(232)과 비교한다. 단계(414)에서, 스티키 카나리 라우터(130)가 모듈러스가 RPM(232)보다 작다고 결정하면, 방법(400)은 단계(416)로 진행한다.
단계(416)에서, 스티키 카나리 라우터(130)는 선택된 라우팅 구성(220)에 따라 요청을 라우팅한다. 보다 구체적으로, 선택된 라우팅 구성(220) 내에 포함되는 라우팅(226)의 값이 "카나리"이면, 스티키 카나리 라우터(130)는 요청을 카나리 클러스터(160)에 라우팅한다. 대조적으로, 선택된 라우팅 구성(220) 내에 포함된 라우팅(226)의 값이 "베이스라인"이면, 스티키 카나리 라우터(130)는 요청을 베이스라인 클러스터(150)에 라우팅한다. 방법(400)은 이후 단계(404)로 되돌아가고, 여기서 스티키 카나리 라우터(130)는 새로운 요청(210)을 수신한다.
그러나, 단계(414)에서, 스티키 카나리 라우터(130)가 모듈러스가 RPM(232)보다 작지 않다고 결정하면, 방법(400)은 바로 단계(418)로 진행한다. 단계(418)에서, 스티키 카나리 라우터(130)는 선택된 라우팅 구성(220)이 클라이언트 디바이스(305)의 디바이스 유형에 대한 베이스라인 라우팅 구성(220)인지 여부를 결정한다. 보다 정확하게, 스티키 카나리 라우터(130)는 라우팅(226)의 값이 "베이스라인"인지 여부를 결정한다. 스티키 카나리 라우터(130)가 라우팅(226)의 값이 "베이스라인"이 아니라고 결정하면, 이후 방법(400)은 단계(420)로 진행한다.
단계(420)에서, 스티키 카나리 라우터(130)는 "베이스라인"의 라우팅(226), 및 클라이언트 디바이스(305)의 유형과 일치하는 디바이스 유형(222)을 포함하는 라우팅 구성(220)을 선택한다. 방법(400)은 이후 단계(410)로 되돌아가고, 스티키 카나리 라우터(130)는 선택된 베이스라인 라우팅 구성(220) 및 클라이언트 디바이스(305)의 디바이스 ID(216)에 기초하여 요청(210)을 베이스라인 클러스터(150)에 라우팅할지 여부를 결정한다.
그러나, 단계(418)에서, 스티키 카나리 라우터(130)가 라우팅(226)의 값이 "베이스라인"이라고 결정하면, 이후 방법(400)은 바로 단계(422)로 진행한다. 단계(422)에서, 엣지 서비스 클러스터(120)는 엣지 서비스 클러스터(120) 내에 구현되는 디폴트 라우팅 알고리즘에 따라 요청(210)을 라우팅한다. 일반적으로, 엣지 서비스 클러스터(120)는 프로덕션 클러스터(140)에 요청(210)을 라우팅한다. 방법(400)은 이후 단계(404)로 되돌아가고, 이후 여기서 스티키 카나리 라우터(130)는 새로운 요청(210)을 수신한다.
스티키 카나리 라우터(130)가 카나리 분석이 완료되었다고 결정할 때까지 스티키 카나리 라우터(130)는 이러한 방식으로 계속하여, 단계들(404 내지 422)을 순환한다. 스티키 카나리 라우터(130)는 임의의 기술적으로 실현 가능한 방식으로 카나리 분석이 완료되었다고 결정할 수 있다. 예를 들어, 스티키 카나리 라우터(130)는 10분 후에 카나리 분석을 종료하도록 구성될 수 있다.
요컨대, 개시된 기술들은 클라이언트들에 대한 결함들의 영향을 최소화하면서 서비스와 연관된 소프트웨어 업데이트에 의해 도입되는 결함들을 효과적으로 검출하기 위해 사용될 수 있다. 동작에서, 각각의 디바이스 유형에 대해, 스티키 카나리 라우터는 카나리 비율, 베이스라인 비율, 및 미리 결정된 유지 시간과 동일한 지속 시간의 시간 세그먼트들을 확립한다. 특히, 유지 시간은 서비스와의 클라이언트 상호작용들의 대략 전체 세션들을 캡처하도록 구성된다. 특정 디바이스 유형의 모든 클라이언트 디바이스들에 대해, 특정한 시간 세그먼트 내에서, 스티키 카나리 라우터는 본 명세서에서 카나리 클라이언트 디바이스들로서 지칭되는 카나리 비율의 클라이언트 디바이스들로부터의 요청들을 서비스와 연관된 소프트웨어 업데이트를 실행하는 서버들의 카나리 클러스터에 일관되게 라우팅한다. 대조적으로, 특정한 시간 세그먼트 내에서, 스티키 카나리 라우터는 본 명세서에서 베이스라인 클라이언트 디바이스들로서 지칭되는 베이스라인 비율의 클라이언트 디바이스들로부터의 요청들을 소프트웨어 업데이트를 포함하지 않는 서비스와 연관된 베이스라인 소프트웨어를 실행하는 서버들의 베이스라인 클러스터에 일관되게 라우팅한다.
특히, 스티키 카나리 라우터가 TTL의 지속 시간 동안 카나리 클라이언트 디바이스들로부터 수신되는 요청들을 베이스라인 소프트웨어로부터 격리시키기 때문에, 베이스라인 소프트웨어는 카나리 클라이언트 디바이스들에 대한 서비스 소프트웨어 업데이트의 영향들을 숨기지 못한다. 결과적으로, 소프트웨어 업데이트가 임의의 개수 및 유형의 클라이언트 디바이스들에 악영향을 줄 수 있다는 것을 나타내는 이상들을 검출하기 위해 서버들 및 디바이스들로부터의 데이터가 분석될 수 있다.
유리하게, 스티키 카나리 라우터는 대략 전체 세션들 동안 요청들을 서버들의 카나리 클러스터에 라우팅하도록 구성될 수 있기 때문에, 클라이언트 경험 및 서버 행동 둘 모두에 대한 기존 서비스에 대한 변경들의 영향들은 종래의 접근들에 비해 보다 완전히 분석될 수 있다. 특히, TTL의 지속 시간 동안 스티키 카나리 라우터가 카나리 클라이언트 디바이스들이 베이스라인 소프트웨어에 액세스하는 것을 방지하기 때문에, 클라이언트 디바이스들의 동작들은 측정 가능한 방식으로 영향을 받을 수 있다. 예를 들어, 소프트웨어 업데이트에 의해 도입되는 결함이 카나리 서버들로 하여금 오작동하게 하고 카나리 클라이언트 디바이스들이 해석할 수 없는 요청들에 대한 응답들을 발행하게 하면, 카나리 클라이언트 디바이스들은 TTL의 지속 시간 동안 실패한 요청들을 재시도할 수 있다. 결과적으로, 카나리 서버들에 의해 수신되는 요청들의 볼륨은 베이스라인 서버들에 의해 수신되는 요청의 볼륨을 극적으로 초과하고, 그에 의해 서비스와 연관된 소프트웨어 업데이트가 결함을 포함했다는 것을 나타낸다.
또한, 클라이언트 디바이스의 유형에 기초하여 카나리 비율 및/또는 유지 시간을 선택함으로써, 스티키 카나리 라우터는 상이한 디바이스 유형들 및/또는 상이한 예상 세션 길이들의 상대적 우세(relative prevalence)에 기초하여 카나리 분석의 미세 조정을 가능하게 한다. 예를 들어, 제1 디바이스 유형의 클라이언트 디바이스들이 상대적으로 우세하지만, 제2 유형의 클라이언트 디바이스들은 상대적으로 드물다고 가정한다. 제2 디바이스 유형이 적절한 카나리 테스팅을 받을 것을 보장하기 위해, 제2 디바이스 유형과 연관된 카나리 비율은 제1 디바이스 유형과 연관된 카나리 비율보다 1000배 더 큰 값으로 세팅될 수 있다.
다양한 실시예들의 설명들이 예시의 목적들을 위해 제공되지만, 철저하게 설명되거나 개시된 실시예들에 제한되게 하려는 의도는 아니다. 많은 수정들 및 변형들이 기술된 실시예들의 범위 및 사상을 벗어나지 않고 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 명세서에 설명된 주제의 양태들은 후속하는 번호가 붙은 항목들(clauses)에서 제시된다.
1. 카나리 분석을 수행할 때 요청들을 라우팅하기 위한, 컴퓨터에 의해 구현되는 방법으로서, 제1 요청의 적어도 하나의 특성, 제1 요청과 연관된 시간, 및 라우팅에 대한 시간 윈도우에 기초하여 제1 매핑을 컴퓨팅하는 단계; 제1 매핑이 제1 요청이 복수의 서버들을 통해 제공되는 서비스에 대한 수정과 연관될 것임을 나타내는지 여부를 결정하는 단계; 및 제1 매핑이 제1 요청이 수정과 연관될 것임을 나타내는지 여부에 기초하여, 제1 요청을 수정을 구현하는 제1 서버, 또는 수정을 구현하지 않는 제2 서버 중 어느 하나에 라우팅하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
2. 제1 항목에 있어서, 제1 요청의 적어도 하나의 특성은 디바이스 식별자를 포함하고, 제1 매핑을 컴퓨팅하는 단계는 디바이스 해시를 생성하기 위해 디바이스 식별자 상에 제1 해싱 동작을 수행하는 단계; 시간 세그먼트를 결정하기 위해 현재 시간을 라우팅에 대한 시간 윈도우로 나누는 단계 - 제1 요청과 연관된 시간은 시간 세그먼트 내에 있음 -; 시간 해시를 생성하기 위해 시간 세그먼트 상에 제2 해싱 동작을 수행하는 단계; 및 제1 매핑을 생성하기 위해 디바이스 해시 및 시간 해시 상에 제3 해싱 동작을 수행하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
3. 제1 항목 또는 제2 항목 중 어느 하나의 항목에 있어서, 제1 요청과 연관된 시간은 제1 시간 세그먼트 내에 있고, 제1 시간 세그먼트의 지속 시간은 라우팅에 대한 시간 윈도우와 동일하며, 제2 요청을 수신하는 단계 - 제2 요청의 적어도 하나의 특성은 제1 요청의 적어도 하나의 특성과 동일함 -; 및 제2 요청과 연관된 시간이 제1 세그먼트 내에 있는지 여부에 기초하여, 제1 요청을 수정을 구현하는 제3 서버, 또는 수정을 구현하지 않는 제4 서버 중 어느 하나에 라우팅하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
4. 제1 내지 제3 항목 중 어느 하나의 항목에 있어서, 제1 매핑을 컴퓨팅하는 단계는 제1 요청의 제1 특성, 제1 요청과 연관된 시간, 및 라우팅에 대한 시간 윈도우 상에 해싱 동작 및 순환 중복 검사 동작 중 적어도 하나를 수행하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
5. 제1 내지 제4 항목 중 어느 하나의 항목에 있어서, 해싱 동작 및 순환 중복 검사 중 적어도 하나는 수정과 연관된 고유 상수에 기초하는, 컴퓨터에 의해 구현되는 방법.
6. 제1 내지 제5 항목 중 어느 하나의 항목에 있어서, 수정은 소프트웨어 업데이트를 포함하는, 컴퓨터에 의해 구현되는 방법.
7. 제1 내지 제6 항목 중 어느 하나의 항목에 있어서, 요청의 적어도 하나의 특성은 디바이스 식별자, 클라이언트 식별자, 전자 일련 번호, 또는 세션 식별자 중 하나를 포함하는, 컴퓨터에 의해 구현되는 방법.
8. 프로그램 제품으로서, 프로세서에 의해 실행될 때 프로세서로 하여금, 제1 요청의 제1 특성에 기초하여 서비스에 대한 수정과 연관될 매핑들의 비율을 결정하는 단계; 제1 요청의 제2 특성, 제1 요청과 연관된 시간, 및 라우팅에 대한 시간 윈도우에 기초하여 제1 매핑을 컴퓨팅하는 단계; 제1 매핑이 제1 요청이 수정과 연관될 것임을 나타내는지 여부를 결정하기 위해 제1 매핑 및 매핑들의 비율에 기초하여 비교 동작을 수행하는 단계; 및 제1 매핑이 제1 요청이 수정과 연관될 것임을 나타내는지 여부에 기초하여, 제1 요청을 수정을 구현하는 제1 서버, 또는 수정을 구현하지 않는 제2 서버 중 어느 하나에 라우팅하는 단계를 수행하게 하는 명령어들을 포함하는 컴퓨터 판독가능 저장 매체를 포함하는, 프로그램 제품.
9. 제8 항목에 있어서, 제1 매핑을 컴퓨팅하는 단계는 제2 특성, 제1 요청과 연관된 시간, 및 라우팅에 대한 시간 윈도우 상에 해싱 동작 및 순환 중복 검사 동작 중 적어도 하나를 수행하는 단계를 포함하는, 프로그램 제품.
10. 제8 또는 제9 항목 중 어느 하나의 항목에 있어서, 해싱 동작 및 순환 중복 검사 중 적어도 하나는 수정과 연관된 고유 상수에 기초하는 프로그램 제품.
11. 제8 내지 제10 항목 중 어느 하나의 항목에 있어서, 제2 특성은 디바이스 식별자를 포함하고, 제1 매핑을 컴퓨팅하는 단계는, 디바이스 해시를 생성하기 위해 디바이스 식별자 상에 제1 해싱 동작을 수행하는 단계; 시간 세그먼트를 결정하기 위해 현재 시간을 라우팅에 대한 시간 윈도우로 나누는 단계 - 제1 요청과 연관된 시간은 시간 세그먼트 내에 있음 -; 시간 해시를 생성하기 위해 시간 세그먼트 상에 제2 해싱 동작을 수행하는 단계; 및 제1 매핑을 생성하기 위해 디바이스 해시 및 시간 해시 상에 제3 해싱 동작을 수행하는 단계를 포함하는, 프로그램 제품.
12. 제8 내지 제11 항목 중 어느 하나의 항목에 있어서, 제1 요청과 연관된 시간은 제1 시간 세그먼트 내에 있고, 제1 시간 세그먼트의 지속 시간은 라우팅에 대한 시간 윈도우와 동일하고, 제2 요청을 수신하는 단계 - 제2 요청의 제1 특성은 제1 요청의 제1 특성과 동일함 -; 및 제2 요청과 연관된 시간이 제1 세그먼트 내에 있는지 여부에 기초하여, 제1 요청을 수정을 구현하는 제3 서버, 또는 수정을 구현하지 않는 제4 서버 중 어느 하나에 라우팅하는 단계를 더 포함하는, 프로그램 제품.
13. 제8 내지 제12 항목 중 어느 하나의 항목에 있어서, 시작 시간과 종료 시간 간의 차이는 라우팅에 대한 시간 윈도우와 동일하고, 제1 매핑을 컴퓨팅하는 단계는 현재 시간이 시작 시간보다 크고 종료 시간보다 크지 않은 경우, 제1 매핑을 제1 해시 값과 동일하게 설정하는 단계; 또는 현재 시간이 시작 시간보다 크지 않거나 종료 시간보다 큰 경우, 제1 매핑을 제2 해시 값과 동일하게 설정하는 단계를 포함하는, 프로그램 제품.
14. 제8 내지 제13 항목 중 어느 하나의 항목에 있어서, 요청의 제2 특성은 디바이스 식별자, 클라이언트 식별자, 전자 일련 번호, 또는 세션 식별자 중 하나를 포함하는, 프로그램 제품.
15. 제8 내지 제14 항목 중 어느 하나의 항목에 있어서, 제1 요청의 제2 특성은 제1 요청이 제1 클라이언트 디바이스와 연관되는 것을 명시하고, 제1 클라이언트 디바이스는 제1 디바이스 유형과 연관되며, 제1 매핑이 요청이 수정과 연관될 것임을 나타내는지 여부를 결정하는 단계는 제1 매핑 및 수정과 연관될 제1 디바이스 유형의 클라이언트 디바이스들의 비율을 명시하는 비율(rate)에 기초하여 비교 동작을 수행하는 단계를 포함하는, 프로그램 제품.
16. 제8 내지 제15 항목 중 어느 하나의 항목에 있어서, 제1 특성에 기초하여 라우팅에 대한 시간 윈도우를 설정하는 단계를 더 포함하는, 프로그램 제품.
17. 카나리 분석을 수행할 때 요청들을 라우팅하도록 구성되는 시스템으로서, 서비스에 대한 수정을 구현하는 제1 서버; 서비스를 구현하지만 수정을 구현하지 않는 복수의 서버들; 및 스티키 카나리 라우터를 포함하고, 스티키 카나리 라우터는, 요청의 적어도 하나의 특성에 기초하여 제1 매핑을 컴퓨팅하고; 요청과 연관된 시간, 라우팅에 대한 시간 윈도우, 및 수정과 연관된 고유 상수에 기초하여 제2 매핑을 컴퓨팅하며; 제1 매핑 및 제2 매핑에 기초하여 제3 매핑을 컴퓨팅하고; 제3 매핑이 요청이 수정과 연관될 것임을 나타내는지 여부를 결정하며; 제3 매핑이 요청이 수정과 연관될 것임을 나타내는지 여부에 기초하여, 요청을 제1 서버 또는 복수의 서버들 중 어느 하나에 라우팅하도록 구성되는, 시스템.
18. 제17 항목에 있어서, 스티키 카나리 라우터는, 시간 세그먼트를 결정하기 위해 현재 시간을 라우팅에 대한 시간 윈도우로 나누고; 제2 매핑을 생성하기 위해 시간 세그먼트와 고유 상수를 곱함으로써 제2 매핑을 컴퓨팅하도록 구성되는, 시스템.
19. 제17 또는 제18 항목 중 어느 하나의 항목에 있어서, 수정은 소프트웨어 업데이트 및 데이터 업데이트 중 적어도 하나를 포함하는, 시스템.
20. 제17 내지 제19 항목 중 어느 하나의 항목에 있어서, 요청의 적어도 하나의 특성은 디바이스 식별자, 클라이언트 식별자, 전자 일련 번호, 또는 세션 식별자 중 하나를 포함하는, 시스템.
본 실시예들의 양태들은 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 레지던트 소프트웨어, 마이크로-코드 등을 포함함), 또는 모두 일반적으로 "회로", "모듈", 또는 "시스템"으로서 본 명세서에서 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 결합시킨 실시예의 형태를 취할 수 있다. 더욱이, 본 개시내용의 양태들은 컴퓨터 판독가능 프로그램 코드가 내장되어 있는 하나 이상의 컴퓨터 판독가능 매체(들)로 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 예를 들어, 컴퓨터 판독가능 저장 매체는 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것의 임의의 적합한 조합일 수 있으나, 이에 한정되지 않는다. 컴퓨터 판독가능 매체의 보다 구체적인 예시들(불완전 리스트)은 다음을 포함할 것이다: 하나 이상의 와이어를 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능 프로그램가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적합한 조합. 본 문서의 맥락에서, 컴퓨터 판독가능 저장 매체는 명령어 실행 시스템, 장치, 또는 디바이스에 의한, 또는 그와 관련한 사용을 위한 프로그램을 포함, 또는 저장할 수 있는 임의의 유형의(tangible) 매체일 수 있다.
본 개시내용의 양태들이 본 개시내용의 실시예들에 따른 방법들, 장치(시스템들), 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 상기 설명된다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들이 컴퓨터 프로그램 명령어들에 의해 구현될 수 있음이 이해될 것이다. 이들 컴퓨터 프로그램 명령어들은 머신을 생산하기 위해 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그램가능 데이터 처리 장치의 프로세서에 제공될 수 있어, 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행되는 명령어들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시되는 기능들/액트들의 구현을 가능하게 하도록 한다. 그러한 프로세서들은 범용 프로세서들, 특수 목적 프로세서들, 애플리케이션 특정 프로세서들, 또는 필드 프로그램가능 프로세서들 또는 게이트 어레이들일 수 있지만, 이에 한정되지 않는다.
도면에서 흐름도 및 블록도들은 본 개시내용의 다양한 실시예들에 따라 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현예들의 아키텍처, 기능성, 및 동작을 예시한다. 이 점에서, 흐름도 또는 블록도들 내의 각각의 블록은 모듈, 세그먼트, 또는 코드의 부분을 나타낼 수 있고, 이는 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어를 포함한다. 또한, 일부 대안의 구현예들에서, 블록 내에 언급된 기능들은 도면들 내에 언급된 순서를 벗어나 발생할 수 있음에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록들은 사실 실질적으로 동시에 실행될 수 있거나, 관련된 기능성에 따라 블록들은 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내의 블록들의 조합들은 지정된 기능들 또는 액트들, 또는 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있음에 유의해야 한다.
전술한 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 다른 실시예들 및 추가 실시예들이 그것의 기본 범위를 벗어나지 않고 만들어질 수 있으며, 그 범위는 후속하는 청구항들에 의해 결정된다.

Claims (20)

  1. 카나리 분석(canary analysis)을 수행할 때 요청들을 라우팅하기 위한, 컴퓨터에 의해 구현되는 방법(computer-implemented method)으로서,
    제1 요청의 적어도 하나의 디바이스 특성, 상기 제1 요청과 연관된 시간, 및 상기 제1 요청을 라우팅하기 위한 시간 윈도우(time window)에 기초하여 제1 값을 컴퓨팅하는 단계;
    상기 제1 값이 상기 제1 요청이 복수의 서버들을 통해 제공되는 서비스에 대한 수정과 연관될 것임을 나타내는지 여부를 결정하는 단계; 및
    상기 제1 값이 상기 제1 요청이 상기 수정과 연관될 것임을 나타내는지 여부에 기초하여, 상기 제1 요청을 상기 수정을 구현하는 제1 서버, 또는 상기 수정을 구현하지 않는 제2 서버 중 어느 하나에 라우팅하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  2. 제1항에 있어서, 상기 제1 요청의 상기 적어도 하나의 디바이스 특성은 디바이스 식별자를 포함하고, 상기 제1 값을 컴퓨팅하는 단계는,
    디바이스 해시(device hash)를 생성하기 위해 상기 디바이스 식별자 상에 제1 해싱 동작을 수행하는 단계;
    시간 세그먼트(segment of time)를 결정하기 위해 현재 시간을 상기 라우팅에 대한 상기 시간 윈도우로 나누는 단계 - 상기 제1 요청과 연관된 상기 시간은 상기 시간 세그먼트 내에 있음 -;
    시간 해시를 생성하기 위해 상기 시간 세그먼트 상에 제2 해싱 동작을 수행하는 단계; 및
    상기 제1 값을 생성하기 위해 상기 디바이스 해시 및 상기 시간 해시 상에 제3 해싱 동작을 수행하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  3. 제1항에 있어서, 상기 제1 요청과 연관된 상기 시간은 제1 시간 세그먼트 내에 있고, 상기 제1 시간 세그먼트의 지속 시간은 상기 라우팅에 대한 상기 시간 윈도우와 동일하고,
    제2 요청을 수신하는 단계 - 상기 제2 요청의 적어도 하나의 디바이스 특성은 상기 제1 요청의 적어도 하나의 디바이스 특성과 동일함 -; 및
    상기 제2 요청과 연관된 시간이 상기 제1 시간 세그먼트 내에 있는지 여부에 기초하여, 상기 제1 요청을 상기 수정을 구현하는 제3 서버, 또는 상기 수정을 구현하지 않는 제4 서버 중 어느 하나에 라우팅하는 단계
    를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  4. 제1항에 있어서, 상기 제1 값을 컴퓨팅하는 단계는 상기 제1 요청의 제1 특성, 상기 제1 요청과 연관된 상기 시간, 및 상기 라우팅에 대한 상기 시간 윈도우 상에 해싱 동작 및 순환 중복 검사 동작(cyclic redundancy check operation) 중 적어도 하나를 수행하는 단계를 포함하는, 컴퓨터에 의해 구현되는 방법.
  5. 제1항에 있어서, 상기 수정은 소프트웨어 업데이트를 포함하는, 컴퓨터에 의해 구현되는 방법.
  6. 제1항에 있어서, 상기 제1 요청의 적어도 하나의 디바이스 특성은 디바이스 식별자 및 전자 일련 번호 중 적어도 하나를 포함하는, 컴퓨터에 의해 구현되는 방법.
  7. 명령어들을 포함하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금,
    제1 요청의 제1 특성에 기초하여 서비스에 대한 수정과 연관될 라우팅 비율을 결정하는 단계;
    상기 제1 요청의 디바이스 특성을 포함하는 상기 제1 요청의 제2 특성, 상기 제1 요청과 연관된 시간, 및 상기 제1 요청을 라우팅하기 위한 시간 윈도우에 기초하여 제1 값을 컴퓨팅하는 단계;
    상기 제1 값이 상기 제1 요청이 상기 수정과 연관될 것임을 나타내는지 여부를 결정하기 위해 상기 제1 값 및 상기 라우팅 비율에 기초하여 비교 동작을 수행하는 단계; 및
    상기 제1 값이 상기 제1 요청이 상기 수정과 연관될 것임을 나타내는지 여부에 기초하여, 상기 제1 요청을 상기 수정을 구현하는 제1 서버, 또는 상기 수정을 구현하지 않는 제2 서버 중 어느 하나에 라우팅하는 단계
    를 수행하게 하는 컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서, 상기 제1 값을 컴퓨팅하는 단계는 상기 제2 특성, 상기 제1 요청과 연관된 상기 시간, 및 상기 라우팅에 대한 상기 시간 윈도우 상에 해싱 동작 및 순환 중복 검사 동작 중 적어도 하나를 수행하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 해싱 동작 및 상기 순환 중복 검사 중 적어도 하나는 상기 수정과 연관된 고유 상수에 기초하는, 컴퓨터 판독가능 저장 매체.
  10. 제7항에 있어서, 상기 제2 특성은 디바이스 식별자를 포함하고, 상기 제1 값을 컴퓨팅하는 단계는,
    디바이스 해시를 생성하기 위해 상기 디바이스 식별자 상에 제1 해싱 동작을 수행하는 단계;
    시간 세그먼트를 결정하기 위해 현재 시간을 상기 라우팅에 대한 상기 시간 윈도우로 나누는 단계 - 상기 제1 요청과 연관된 상기 시간은 상기 시간 세그먼트 내에 있음 -;
    시간 해시를 생성하기 위해 상기 시간 세그먼트 상에 제2 해싱 동작을 수행하는 단계; 및
    상기 제1 값을 생성하기 위해 상기 디바이스 해시 및 상기 시간 해시 상에 제3 해싱 동작을 수행하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  11. 제7항에 있어서, 상기 제1 요청과 연관된 상기 시간은 제1 시간 세그먼트 내에 있고, 상기 제1 시간 세그먼트의 지속 시간은 상기 라우팅에 대한 상기 시간 윈도우와 동일하고,
    제2 요청을 수신하고 - 상기 제2 요청의 제1 특성은 상기 제1 요청의 상기 제1 특성과 동일함 -;
    상기 제2 요청과 연관된 시간이 상기 제1 시간 세그먼트 내에 있는지 여부에 기초하여, 상기 제1 요청을 상기 수정을 구현하는 제3 서버, 또는 상기 수정을 구현하지 않는 제4 서버 중 어느 하나에 라우팅하는
    것을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  12. 제7항에 있어서, 시작 시간과 종료 시간 간의 차이는 상기 라우팅에 대한 상기 시간 윈도우와 동일하고, 상기 제1 값을 컴퓨팅하는 단계는,
    현재 시간이 상기 시작 시간보다 크고 상기 종료 시간보다 크지 않은 경우, 상기 제1 값을 제1 해시 값과 동일하게 설정하는 단계; 또는
    상기 현재 시간이 상기 시작 시간보다 크지 않거나 상기 종료 시간보다 큰 경우, 상기 제1 값을 제2 해시 값과 동일하게 설정하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  13. 제7항에 있어서, 상기 제1 요청의 상기 제2 특성은 상기 제1 요청이 제1 클라이언트 디바이스와 연관되는 것을 명시하고, 상기 제1 클라이언트 디바이스는 제1 디바이스 유형과 연관되며, 상기 제1 값이 상기 요청이 상기 수정과 연관될 것임을 나타내는지 여부를 결정하는 단계는 상기 제1 값, 및 상기 수정과 연관될 상기 제1 디바이스 유형의 클라이언트 디바이스들의 비율을 명시하는 비율(rate)에 기초하여 비교 동작을 수행하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  14. 제7항에 있어서, 상기 제1 특성에 기초하여 상기 라우팅에 대한 상기 시간 윈도우를 설정하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 카나리 분석을 수행할 때 요청들을 라우팅하도록 구성되는 시스템으로서,
    서비스에 대한 수정을 구현하는 제1 서버;
    상기 서비스를 구현하지만 상기 수정을 구현하지 않는 복수의 서버들; 및
    스티키 카나리 라우터(sticky canary router)
    를 포함하고, 상기 스티키 카나리 라우터는,
    요청의 적어도 하나의 디바이스 특성에 기초하여 제1 값을 컴퓨팅하고;
    상기 요청과 연관된 시간, 상기 요청을 라우팅하기 위한 시간 윈도우, 및 상기 수정과 연관된 고유 상수에 기초하여 제2 값을 컴퓨팅하며;
    상기 제1 값 및 상기 제2 값에 기초하여 제3 값을 컴퓨팅하고;
    상기 제3 값이 상기 요청이 상기 수정과 연관될 것임을 나타내는지 여부를 결정하며;
    상기 제3 값이 상기 요청이 상기 수정과 연관될 것임을 나타내는지 여부에 기초하여, 상기 요청을 상기 제1 서버 또는 상기 복수의 서버들 중 어느 하나에 라우팅하도록
    구성되는, 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020187014037A 2015-10-23 2016-10-18 카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들 KR102099028B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/922,101 2015-10-23
US14/922,101 US11616719B2 (en) 2015-10-23 2015-10-23 Techniques for determining client-side effects of server-side behavior using canary analysis
PCT/US2016/057521 WO2017070108A1 (en) 2015-10-23 2016-10-18 Techniques for determining client-side effects of server-side behavior using canary analysis

Publications (2)

Publication Number Publication Date
KR20180074723A KR20180074723A (ko) 2018-07-03
KR102099028B1 true KR102099028B1 (ko) 2020-04-08

Family

ID=57227114

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187014037A KR102099028B1 (ko) 2015-10-23 2016-10-18 카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들

Country Status (11)

Country Link
US (1) US11616719B2 (ko)
EP (1) EP3365791B1 (ko)
JP (1) JP6613373B2 (ko)
KR (1) KR102099028B1 (ko)
CN (1) CN108431782B (ko)
AU (2) AU2016341190B2 (ko)
CA (1) CA3002807C (ko)
DK (1) DK3365791T3 (ko)
MX (1) MX2018005000A (ko)
SG (1) SG11201803337XA (ko)
WO (1) WO2017070108A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033079A (ja) * 2015-07-29 2017-02-09 富士通株式会社 ソフトウェア導入支援プログラム、ソフトウェア導入支援装置およびソフトウェア導入支援方法
CN109726099B (zh) * 2018-04-12 2024-03-19 惠商云服(北京)科技有限公司 一种应用灰度发布方法、装置及设备
US10735262B1 (en) * 2018-04-26 2020-08-04 Intuit Inc. System and method for self-orchestrated canary release deployment within an API gateway architecture
US20200057714A1 (en) * 2018-08-17 2020-02-20 Google Llc Testing data changes in production systems
US11237815B2 (en) * 2018-08-23 2022-02-01 Citrix Systems, Inc. Service pool architecture for multitenant services to support canary release
CN110333884A (zh) * 2019-06-05 2019-10-15 钛马信息网络技术有限公司 软件升级方法、分布式系统及装置
JP7300344B2 (ja) * 2019-08-29 2023-06-29 株式会社デンソーテン 管理装置、サーバシステム、および、管理方法
CN112199104B (zh) * 2020-10-10 2024-03-01 卫宁健康科技集团股份有限公司 一种软件升级方法、装置、电子设备和存储介质
US20220413923A1 (en) * 2021-06-24 2022-12-29 Charter Communications Operating, Llc Seamless micro-services data source migration with mirroring

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299732A1 (en) * 2009-05-22 2010-11-25 Microsoft Corporation Time window based canary solutions for browser security
US20140379901A1 (en) * 2013-06-25 2014-12-25 Netflix, Inc. Progressive deployment and termination of canary instances for software analysis

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3829125B2 (ja) * 2003-05-16 2006-10-04 株式会社コナミデジタルエンタテインメント ネットワークシステム、ネットワーク制御方法及びプログラム
JP2007287098A (ja) 2006-04-20 2007-11-01 Canon Inc ネットワークメンテンナスシステム
WO2011130406A1 (en) 2010-04-13 2011-10-20 Et International, Inc. Runspace method, system and apparatus
JP5954666B2 (ja) 2010-12-08 2016-07-20 パナソニックIpマネジメント株式会社 情報処理装置、及び、情報処理方法
US8677189B2 (en) 2011-11-16 2014-03-18 GM Global Technology Operations LLC Recovering from stack corruption faults in embedded software systems
US9367360B2 (en) 2012-01-30 2016-06-14 Microsoft Technology Licensing, Llc Deploying a hardware inventory as a cloud-computing stamp
US8990778B1 (en) 2012-09-14 2015-03-24 Amazon Technologies, Inc. Shadow test replay service
CN103853662B (zh) 2014-02-21 2016-08-17 北京神舟航天软件技术有限公司 一种航天软件系统溢出检测和破坏限制机制
US9979644B2 (en) * 2014-07-13 2018-05-22 Cisco Technology, Inc. Linking to content using information centric networking

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100299732A1 (en) * 2009-05-22 2010-11-25 Microsoft Corporation Time window based canary solutions for browser security
US20140379901A1 (en) * 2013-06-25 2014-12-25 Netflix, Inc. Progressive deployment and termination of canary instances for software analysis

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
인터넷 블로그, "How we do Canary Deployments", 2013년 11월. http://engineering.plumbee.com/blog/2013/11/15/how-we-do-canary-deployments/*

Also Published As

Publication number Publication date
AU2019246866A1 (en) 2019-10-31
AU2016341190A1 (en) 2018-05-10
JP6613373B2 (ja) 2019-11-27
EP3365791B1 (en) 2021-04-07
KR20180074723A (ko) 2018-07-03
CN108431782B (zh) 2021-12-07
EP3365791A1 (en) 2018-08-29
CN108431782A (zh) 2018-08-21
JP2018535486A (ja) 2018-11-29
BR112018008094A2 (pt) 2019-01-08
SG11201803337XA (en) 2018-05-30
WO2017070108A1 (en) 2017-04-27
DK3365791T3 (da) 2021-06-21
CA3002807A1 (en) 2017-04-27
US11616719B2 (en) 2023-03-28
US20170118110A1 (en) 2017-04-27
CA3002807C (en) 2023-02-14
MX2018005000A (es) 2018-09-21
AU2016341190B2 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
KR102099028B1 (ko) 카나리 분석을 사용하여 서버 측 행동의 클라이언트 측 영향들을 결정하기 위한 기술들
US10042668B2 (en) Concurrent execution of a computer software application along multiple decision paths
US11507488B2 (en) Upstream fault detection
US20170019308A1 (en) Server outlier detection
CN108696404B (zh) 经由协作平台实现受测试设备会议
US9667508B2 (en) Method and system for testing and monitoring a real-time streaming media recognition service provider
CN112153410B (zh) 一种流媒体服务高并发测试方法和系统
US10983903B1 (en) Enhanced automated protocol for secure application testing
US20200329112A1 (en) User tracking method, server, and client
AU2014357345B2 (en) Method for measuring end-to-end internet application performance
US20160112285A1 (en) Apparatus and method for detecting abnormal connection
KR20160133677A (ko) 공간 크라우드소싱 데이터의 신뢰성 향상을 위한 프로그래밍 기반 동적 자동 검증 시스템
KR102010236B1 (ko) 동영상 비교 방법 및 이를 이용한 동영상 비교 시스템
US20140280897A1 (en) Session-based server transaction storm controls
JP2017515329A (ja) ビデオセッションにおける再バッファリングイベントを決定するための方法
BR112018008094B1 (pt) Método implementado em computador e sistema configurado para encaminhar solicitações quando executando uma análise canária e um ou mais meios de armazenamento legíveis por computador não-transitórios
CN106302715A (zh) 一种文件管理方法、装置及系统
US20150095891A1 (en) Eliminating redundant interactions when testing computer software applications
US20140297767A1 (en) Information processing apparatus and verification control method
US20150193327A1 (en) Connection checking for hardwired monitoring system

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant