BR112018008094B1 - 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 - Google Patents

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 Download PDF

Info

Publication number
BR112018008094B1
BR112018008094B1 BR112018008094-2A BR112018008094A BR112018008094B1 BR 112018008094 B1 BR112018008094 B1 BR 112018008094B1 BR 112018008094 A BR112018008094 A BR 112018008094A BR 112018008094 B1 BR112018008094 B1 BR 112018008094B1
Authority
BR
Brazil
Prior art keywords
request
time
canary
modification
routing
Prior art date
Application number
BR112018008094-2A
Other languages
English (en)
Other versions
BR112018008094A2 (pt
Inventor
Michael Lloyd Cohen
Original Assignee
Netflix, Inc
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/922,101 external-priority patent/US11616719B2/en
Application filed by Netflix, Inc filed Critical Netflix, Inc
Publication of BR112018008094A2 publication Critical patent/BR112018008094A2/pt
Publication of BR112018008094B1 publication Critical patent/BR112018008094B1/pt

Links

Abstract

Numa modalidade da presente invenção, um roteador canário fixo encaminha cada pedido associado a um serviço para um cluster canário de servidores que implementam uma modificação no serviço ou um cluster de linha de base de servidores que não implementam a modificação. O roteador canário pegajoso implementa um algoritmo de mapeamento que determina o roteiro de cada pedido com base em um horário atual, uma janela de tempo para o roteiro e uma característica do pedido. Notavelmente, o algoritmo de mapeamento pode ser implementado de tal forma que, para segmentos de tempo com duração igual à janela de tempo, o roteador canário pegajoso roteia todos os pedidos recebidos de um dispositivo particular de maneira consistente - para o cluster canário ou para um cluster de linha de base. Configurado desta forma, o roteador canário pegajoso permite a análise de seções aproximadamente inteiras de interações do cliente com os servidores canários, facilitando assim a identificação dos efeitos do lado do cliente das mudanças.

Description

REFERÊNCIA A PEDIDOS DE PATENTE RELACIONADOS
[001] Este pedido de patente reivindica benefício do pedido de patente dos Estados Unidos número de série 14/922.101, depositado em 23 de outubro de 2015, o qual é por este meio incorporado neste documento por referência.
FUNDAMENTOS DA INVENÇÃO Campo da Invenção
[002] Modalidades da presente invenção referem-se geralmente à ciência da computação e, mais especificamente, a técnicas para determinar efeitos do lado do cliente de comportamento do lado do servidor usando análise canária.
Descrição da Técnica Relacionada
[003] Muitos provedores de serviços fornecem serviços por meio de uma arquitetura cliente-servidor na qual clientes solicitam serviços por meio de dispositivos de cliente e, em resposta, servidores fornecem serviços. Por exemplo, a Netflix é um provedor de serviços que fornece transmissão de vídeo sob demanda a clientes. Os clientes submetem solicitações, tais como solicitação para reprodução de vídeos específicos, por meio de dispositivos de cliente, e servidores da Netflix executam software em resposta às solicitações para entregar os vídeos aos dispositivos de cliente. Os clientes podem fazer as solicitações usando quaisquer dispositivos suportados por clientes, tais como consoles de videogames, televisões, dispositivos portáteis, etc.
[004] Como parte do melhoramento da experiência do cliente, provedores de serviços frequentemente implementam atualizações de software que introduzem novos recursos, melhoram recursos existentes, e/ou corrigem defeitos. Mais especificamente, os provedores de serviços “impõem” as atualizações de software aos servidores e, subsequentemente, os servidores executam o software atualizado. Em uma tentativa para garantir que a experiência do cliente não seja adversamente afetada pelas atualizações de software, os provedores de serviços utilizam tipicamente uma variedade de métodos de teste para validar as atualizações de software antes da implementação das atualizações de software. Contudo, testar manualmente as atualizações de software em todos os tipos suportados de dispositivos de cliente através de todos os fluxos de trabalho de clientes é geralmente extremamente difícil e demorado, se não impossível. Por exemplo, serviços de transmissão de vídeos sob demanda da Netflix suportam numerosos reprodutores de Discos Blu-ray, numerosos computadores tablet, numerosos telefones móveis, numerosos receptores de televisão de alta definição, numerosos sistemas de cinema doméstico, numerosos conversores de televisão, numerosos consoles de videogame, etc. Consequentemente, o período de tempo necessário para testar exaustivamente uma atualização de software usando cada tipo suportado de dispositivo de cliente é inaceitavelmente longo. Além disso, se um defeito que é introduzido por uma atualização de software não for detectado e corrigido antes da implementação da atualização de software, então a experiência do cliente pode ser degradada.
[005] Em uma técnica para reduzir o impacto de defeitos não detectados que são introduzidos por atualizações de software, alguns provedores de serviços usam um processo de implementação conhecido como análise canária. Na análise canária, um provedor de serviços impõe uma atualização de software a uma percentagem relativamente pequena de servidores “canários”, enquanto uma percentagem relativamente grande de servidores “de linha-base” permanece inalterada - executando o software de linha de base (isto é, não atualizado). Como a atualização de software é testada em apenas um número limitado de servidores, se um defeito é introduzido pela atualização de software, então uma percentagem relativamente pequena de solicitações associadas a relativamente poucos dispositivos de cliente é impactada.
[006] À medida que os servidores canários e servidores de linha-base operam, o provedor de serviços mede as operações dos servidores para calibrar os efeitos da atualização de software. Em geral, os resultados de tais medições são denominados de “métricas do lado do servidor”. Por comparação das métricas do lado do servidor associadas aos servidores canários com as métricas do lado do servidor associadas aos servidores de linha-base, o provedor de serviços pode detectar anomalias que são indicativas de um ou mais defeitos que foram introduzidos pela atualização de software. Por exemplo, suponha-se que uma atualização de software introduz latência adicional. Durante análise canária, as métricas do lado do servidor poderiam indicar que a latência associada aos servidores canários excede significativamente a latência associada aos servidores de linha-base. Ao fazer esta determinação, o provedor de serviços poderia então modificar a atualização de software para eliminar a latência adicional antes de impor a atualização de software final a todos os servidores.
[007] Contudo, embora a análise canária possa detectar anomalias nas operações dos servidores canários, deste modo mitigando o risco associado à implementação de uma atualização de software, alguns defeitos introduzidos por uma atualização de software podem eludir a detecção por meio do processo de análise canária descrito acima. Em particular, durante análise canária, a disponibilidade do software de linha-base pode mascarar os efeitos da atualização de software sobre as operações dos dispositivos de cliente. Por exemplo, suponha-se que um dispositivo de cliente específico emita uma solicitação que é recebida por um servidor canário e em seguida o servidor canário executa a atualização de software para gerar uma resposta para a solicitação. Além disso, suponha-se que um defeito associado à atualização de software faça com que o servidor canário funcione defeituosamente de modo que o dispositivo de cliente específico não seja capaz de interpretar a resposta. Em um processo de análise canária convencional, o dispositivo de cliente específico tentaria novamente a solicitação e, como relativamente poucos dos servidores que implementam o serviço são servidores canários, muito provavelmente um servidor de linha-base receberia esta segunda solicitação. O servidor de linha-base executaria o software de linha-base e, consequentemente, processaria corretamente a segunda solicitação para gerar uma resposta à segunda solicitação. Como o dispositivo de cliente específico seria capaz de interpretar corretamente a resposta à segunda solicitação, as métricas do lado do servidor não indicariam um problema associado à atualização de software. Consequentemente, o defeito eludiria efetivamente a detecção.
[008] Tais defeitos não detectados de comportamento de servidor nas operações de dispositivos de cliente, denominados neste documento de efeitos do lado do cliente de comportamento do lado do servidor, podem incluir diferenças de dados, mudanças de formato, respostas de servidores cheios, etc. Em operação, se uma atualização de software que introduz um defeito não detectado passar pela análise canária, então o provedor de serviços poderia terminar impondo a atualização de software a todos os servidores, sem notar o defeito. Como o software de linha-base não estaria mais disponível, o defeito na atualização de software poderia impactar negativamente a experiência do cliente através de múltiplos tipos de dispositivos de cliente.
[009] Como o acima mencionado ilustra, o que é necessário na técnica são técnicas mais efetivas para detectar defeitos quando testando mudanças no software que é executado nas máquinas dos servidores.
SUMÁRIO DA INVENÇÃO
[0010] Uma modalidade da presente invenção apresenta um método implementado em computador para encaminhar solicitações quando executando uma análise canária. O método inclui computar um primeiro mapeamento baseado em ao menos uma característica de uma primeira solicitação, um tempo associado à primeira solicitação, e uma janela de tempo para um roteamento; determinar se o primeiro mapeamento indica que a primeira solicitação deve estar associada a uma modificação para um serviço propiciado por meio dos servidores; e encaminhar a primeira solicitação ou a um primeiro servidor que implementa a modificação ou a um segundo servidor que não implementa a modificação com base em se o primeiro mapeamento indicar que a primeira solicitação deve estar associada à modificação.
[0011] Uma vantagem das técnicas reveladas para roteamento de solicitações é que um provedor de serviços pode alavancar estas técnicas para analisar compreensivelmente os efeitos da modificação para o serviço tanto na experiência do cliente como no comportamento do servidor. Em particular, para monitorar os efeitos do lado do cliente da modificação, o provedor de serviços pode configurar as janelas de tempo de modo que as solicitações provenientes de um subconjunto de dispositivos de cliente sejam consistentemente encaminhadas aos servidores que implementam a modificação para sessões aproximadamente completas do cliente. Como os dispositivos de cliente incluídos no subconjunto são incapazes de acessar o serviço sem a modificação durante a janela de tempo, o provedor de serviços pode obter métricas que permitam que o provedor de serviços analise os efeitos da modificação sobre os dispositivos de cliente.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0012] Para que a maneira na qual os recursos mencionados acima da presente invenção possam ser compreendidos em detalhe, uma descrição mais específica da invenção, resumida brevemente acima, pode ser considerada por referência para modalidades, algumas das quais são ilustradas nos desenhos anexos. Deve ser observado, contudo, que os desenhos anexos ilustram apenas modalidades típicas desta invenção e não devem, portanto, ser consideradas limitando o seu âmbito, uma vez que a invenção pode admitir outras modalidades igualmente efetivas.
[0013] A Figura 1A é uma ilustração conceitual de um sistema configurado para implementar um ou mais aspectos da presente invenção;
[0014] a Figura 1B é uma ilustração mais detalhada da infraestrutura do provedor de serviços da Figura 1A, de acordo com diversas modalidades da presente invenção;
[0015] a Figura 2 é uma ilustração mais detalhada do roteador canário aderente da Figura 1B, de acordo com diversas modalidades da presente invenção;
[0016] a Figura 3 é um exemplo de roteamentos implementados pelo roteador canário aderente da Figura 2, de acordo com diversas modalidades da presente invenção; e
[0017] a Figura 4 é um fluxograma de etapas de métodos para solicitações de roteamento quando executando uma análise canária de atualizações de software associadas a um serviço, de acordo com diversas modalidades da presente invenção.
DESCRIÇÃO DETALHADA
[0018] Na descrição a seguir, são apresentados diversos detalhes específicos para fornecer uma compreensão mais completa da presente invenção. Contudo, será evidente para aquele versado na técnica que a presente invenção pode ser executada sem um ou mais destes detalhes específicos.
Visão Geral do Sistema
[0019] A Figura 1A é uma ilustração conceitual de um sistema 100 configurado para implementar um ou mais aspectos da presente invenção. Como mostrado, o sistema 100 inclui, sem limitação, uma nuvem 102 (por exemplo, recursos partilhados encapsulados, software, dados, etc.) conectada a uma variedade de dispositivos de cliente capazes de interagir com a nuvem 102. Tais dispositivos de cliente incluem, sem limitação, um computador de mesa 108, um computador portátil 106, um telefone inteligente 104, uma televisão inteligente 109, um console de jogos 107, um tablet 105, dispositivos conectados à televisão (não mostrados), dispositivos portáteis (não mostrados) e dispositivos de entretenimento de transmissão (não mostrados).
[0020] A nuvem 102 pode incluir qualquer número de instâncias de computação 110 configuradas com qualquer número (incluindo zero) de unidades de processamento central (CPUs) 112, unidades de processamento gráfico (GPUs) 114, memória 116, etc. Em operação, a CPU 112 é o processador mestre da instância de computação 110, controlando e coordenando operações de outros componentes incluídos na instância de computação 110. Em particular, a CPU 112 emite comandos que controlam a operação da GPU 114. A GPU 114 incorpora conjunto de circuitos otimizados para processamento gráfico e de vídeo, incluindo, por exemplo, conjunto de circuitos de saída de vídeo. Em diversas modalidades, a GPU 114 pode estar integrada a um ou mais de outros elementos da instância de computação 110. A memória 116 armazena conteúdo, tal como aplicativos de software e dados audiovisuais, para uso pela CPU 112 e GPU 114 da instância de computação 110. Em operação, a nuvem 102 recebe informações de saída de clientes provenientes de um dispositivo de cliente (por exemplo, um computador portátil 110), uma ou mais das outras instâncias de computação 110 operam sobre as informações do cliente, e a nuvem 102 transmite informações processadas ao dispositivo de cliente.
[0021] Em modalidades alternativas, a nuvem 102 pode ser substituída por qualquer tipo de ambiente computacional de nuvem. Em outras modalidades, o sistema 100 pode incluir qualquer sistema computacional distribuído ao invés da nuvem 102. Em ainda outras modalidades, o sistema 100 não inclui a nuvem 102 e, ao invés, o sistema 100 inclui uma única unidade computacional que implementa qualquer número de unidades de processamento (por exemplo, unidades de processamento central e/ou unidades de processamento gráfico em qualquer combinação).
[0022] Em geral, as instâncias de computação 110 incluídas na nuvem 102 são configuradas para implementar um ou mais servidores que executam um ou mais aplicativos. Como mostrado, as instâncias de computação 1101-110N são configuradas como servidores que estão incluídos em uma infraestrutura de provedor de serviços 118.
[0023] A Figura 1B é uma ilustração mais detalhada da infraestrutura de provedor de serviços 118 da Figura 1A, de acordo com diversas modalidades da invenção. Como mostrado, a infraestrutura de provedor de serviços 118 inclui, sem limitação, um agrupamento de serviços de borda 120, um agrupamento de produção 140, um agrupamento de linha-base 150 e um agrupamento canário 160. O agrupamento de serviços de borda 120, o agrupamento de produção 140, o agrupamento de linha-base 150 e o agrupamento canário 160 incluem uma ou mais das instâncias de computação 110 configuradas como servidores. Para fins explicativos, os servidores incluídos no agrupamento de produção 140 são denominados neste documento de servidores de produção, os servidores incluídos no agrupamento de linha-base 150 são denominados neste documento de servidores de linha-base, e os servidores incluídos no agrupamento canário 160 são denominados neste documento de servidores canários.
[0024] Em operação, os dispositivos de cliente emitem solicitações como parte de sessões de cliente que interagem com um serviço que é implementado na infraestrutura de provedor de serviços 118. Em resposta às solicitações, os servidores incluídos na infraestrutura de provedor de serviços 118 executam software e emitem respostas às solicitações. Cada sessão de cliente inclui um grupo de comportamento que se destina a realizar uma ou mais tarefas relacionadas. Por exemplo, supor que o serviço é um serviço de distribuição de vídeos e que um dispositivo de cliente é um computador portátil 106. Uma sessão de cliente poderia incluir as solicitações emitidas pelo computador portátil 106 à infraestrutura de provedor de serviços 118 desde o instante em que o cliente carregou uma interface gráfica de usuário (GUI) gerada por servidores incluídos na infraestrutura de provedor de serviços 118 até o momento em que o cliente selecionou um vídeo para reprodução.
[0025] Em operação, o agrupamento de servidores de borda 120 age como um portal para os servidores que implementam o serviço. Dentre outras coisas, o agrupamento de servidores de borda 120 recebe solicitações provenientes dos dispositivos de cliente e encaminha as solicitações aos servidores que executam o software que implementa o serviço. Tipicamente, como parte da melhoria da experiência do cliente, um provedor de serviços muda periodicamente o software associado ao serviço. Mais especificamente, o provedor de serviços impõe uma atualização de software que modifica o software que é implementado pelos servidores. Tipicamente o provedor de serviços tenta detectar quaisquer defeitos introduzidos por uma atualização de software associada ao serviço antes de impor a atualização de software. Contudo, frequentemente a multiplicidade dos tipos suportados de dispositivos de cliente e/ou a multiplicidade dos fluxos de trabalho dos clientes torna inviável testes compreensivos. Por esta razão, o agrupamento de serviços de borda 120 é configurado para permitir análise canária.
[0026] Como parte da análise canária, ao receber uma solicitação, o agrupamento de serviços de borda 120 encaminha a solicitação a um dentre o agrupamento de produção 140, o agrupamento de linha-base 150, ou o agrupamento canário 160. Cada um do agrupamento de produção 140 e do agrupamento de linha-base 150 inclui servidores que executam o software associado ao serviço sem a atualização de software para emitir respostas a solicitações. Para fins de explicação, o software associado ao serviço sem a atualização de software é denominado neste documento de “software de serviço de linha-base”. Por contraste, o agrupamento canário 160 inclui servidores que executam o software associado ao serviço para emitir respostas a solicitações. Para fins de explicação, a atualização de software associada ao serviço é denominada neste documento de “atualização de software de serviço”. Como pessoas versadas na técnica reconhecerão, em algumas modalidades, uma atualização de software associada a um serviço pode ser aplicada em adição ao software de linha- base para criar uma atualização de software de serviço agregada. Para fins de explicação, uma atualização de software de serviço e uma atualização de software de serviço agregada são ambas denominadas neste documento de atualizações de software de serviço.
[0027] À medida que os servidores incluídos no agrupamento de linha-base 150 e no agrupamento canário 160 executam solicitações, o agrupamento de serviços de borda 120 captura e analisa a operação dos servidores e/ou dos dispositivos de cliente por meio de uma ou mais métricas canárias. As métricas canárias são projetadas para facilitar detecção de efeitos inesperados introduzidos pela atualização de software de serviço. Por exemplo, as métricas canárias podem refletir, sem limitação, o número e/ou tipo de erros de servidor, latências introduzidas pelos servidores, carregamento dos servidores, dinâmica das CPUs 112, e assim por diante. Em geral, para cada uma das métricas canárias, o agrupamento de serviços de borda 120 compara valores associados ao agrupamento de linha-base 160 a valores associados ao agrupamento canário 170 para identificar quaisquer anomalias que indiquem que a atualização de software de serviço implementada no agrupamento canário 170 pode impactar negativamente a experiência do cliente.
[0028] O agrupamento de serviços de borda 120 pode capturar e analisar as métricas canárias de qualquer modo tecnicamente factível. Por exemplo, em algumas modalidades, o agrupamento de serviços de borda 120 pode operar em conjunto com um sistema de processamento de fluxo de eventos (não mostrado) para analisar fluxos de respostas e registros de dispositivos. Mais especificamente, o agrupamento de serviços de borda 120 pode “etiquetar” cada solicitação que o agrupamento de serviços de borda 120 encaminha para o agrupamento de linha-base 150 ou para o agrupamento canário 160. O sistema de processamento de fluxo de eventos pode ser configurado para identificar solicitações etiquetadas e registros de dispositivos e feixes de respostas relacionados baseados em uma característica de identificação da solicitação etiquetada, tal como um número de série eletrônico (ESN) que identifica o dispositivo de cliente que emitiu a solicitação.
[0029] Baseado na análise das métricas canárias, o agrupamento de serviços de borda 120 fornece dados canários referentes a quaisquer anomalias ou erros identificados ao provedor de serviços. Os dados canários podem incluir qualquer tipo de informações referentes às anomalias ou erros incluindo, sem limitação, tipos de dispositivos de cliente, percentagem de solicitações afetadas, etc. Baseado nos dados canários, o provedor de serviços pode determinar se expande a imposição da atualização de software de serviço ou “retira” a atualização de software de serviço. O provedor de serviços pode retirar a atualização de software de serviço de qualquer modo técnico factível. Por exemplo, o provedor de serviços poderia reconfigurar qualquer número dos servidores para executar o software de serviço de linha-base ao invés da atualização de software de serviço. Em algumas modalidades, o provedor de serviços pode impor uma nova atualização de software de serviço que corrija as anomalias ou erros identificados. O provedor de serviços pode analisar os dados canários de qualquer modo tecnicamente factível. Por exemplo, em algumas modalidades, o provedor de serviços pode configurar uma ferramenta de Análise Canária Automatizada (ACA) para interpretar os dados canários.
[0030] Se, contudo, o provedor de serviços determinar que os dados canários não indicam que a atualização de software de serviço implementada no agrupamento canário 160 pode impactar negativamente a experiência do cliente, então o provedor de serviços pode impor a atualização de software de serviço a servidores adicionais, aumentando deste modo o tamanho do agrupamento canário 160. Eventualmente, se os dados canários continuarem a indicar que a atualização de software de serviço implementada no agrupamento canário 160 não impacta negativamente a experiência do cliente, então o provedor de serviços pode impor a atualização de software de serviço à produção - configurando os servidores incluídos no agrupamento de produção 140 para executarem a atualização de software de serviço ao invés do software de serviço de linha- base.
[0031] Além disso, em algumas modalidades, o agrupamento de serviços de borda 120 pode propiciar uma interface de programação de aplicativos (API) que permite que o provedor de serviços modifique a análise canária. Por exemplo, tal API poderia permitir que o provedor de serviços recuperasse dados canários, iniciasse a análise canária, interrompesse a análise canária, configurasse a análise canária, etc. Em ainda outras modalidades, se o agrupamento de serviços de borda 120 detectar uma anomalia que indique que a atualização de software de serviço implementada no agrupamento canário 160 pode afetar negativamente a experiência do cliente, então o agrupamento de serviços de borda 120 pode automaticamente interromper a análise canária, limitando deste modo o impacto das mudanças.
[0032] Em geral, a qualidade das métricas canárias impacta a eficácia da análise canária. Mais especificamente, se um ou mais defeitos incluídos pela atualização de software de serviço não forem refletidos nas métricas canárias, então o provedor de serviços pode impor a atualização de software de serviço, incluindo os defeitos, ao agrupamento de produção 140. Subsequentemente, os defeitos podem impactar negativamente um número inaceitável de clientes. Uma limitação de um agrupamento de serviços de borda convencional que reduz a qualidade das métricas canárias é o processo de roteamento aleatório implementado por um agrupamento de serviços de borda convencional.
[0033] Um agrupamento de serviços de borda convencional encaminha tipicamente uma amostragem aleatória relativamente pequena das solicitações ao agrupamento canário 160. Como o software de linha-base está ainda disponível e é executado pelos servidores incluídos no agrupamento de linha-base 150 e no agrupamento de produção 140, um processo de amostragem aleatória pode mascarar os efeitos da atualização de software de serviço sobre as operações dos dispositivos de cliente. Em particular, as métricas canárias podem não refletir efeitos adversos sobre as operações dos dispositivos de cliente que são atribuíveis às diferenças entre o comportamento dos servidores incluídos no agrupamento canário 160 e no agrupamento de linha-base 150. Tais defeitos não detectados de comportamento de servidores sobre as operações dos dispositivos de cliente, denominados neste documento de efeitos do lado do cliente de comportamento do lado do servidor, podem incluir diferenças de dados, mudanças de formato, respostas vazias de servidores, etc.
[0034] Por exemplo, supor que o agrupamento canário 160 inclui 6 servidores canários, o agrupamento de linha-base 150 inclui 6 servidores de linha-base e o agrupamento de produção 140 inclui 988 servidores de produção. Durante uma sessão de cliente, se um dispositivo de cliente emitir 30 solicitações e um agrupamento de serviços de borda convencional encaminha as solicitações, então a probabilidade de que um dos servidores canários processe uma das solicitações seria de aproximadamente 3%. Além disso, supor que o agrupamento de serviços de borda convencional encaminha uma primeira solicitação a um servidor canário. O servidor canário executa a atualização de software de serviço, mas um defeito associado à atualização de software de serviço faz com que o servidor canário funcione defeituosamente e emita uma resposta à primeira solicitação que o dispositivo de cliente é incapaz de interpretar. Em resposta, supor que o dispositivo de cliente tente novamente a solicitação mediante emissão de uma segunda solicitação.
[0035] Se o agrupamento de serviços de borda convencional encaminha a segunda solicitação, então a probabilidade de que um dos servidores canário processe a segunda solicitação seria de aproximadamente 0,09%. Se um dos servidores de linha-base ou dos servidores de produto processar a segunda solicitação e executar o software de linha-base para gerar uma segunda resposta à segunda solicitação, então o dispositivo de cliente seria capaz de interpretar corretamente esta segunda resposta. Consequentemente, as métricas canárias não indicariam um problema e o defeito poderia eludir detecção até que o provedor de serviços impusesse as mudanças ao agrupamento de produção 140. Após o provedor de serviços impor as mudanças ao agrupamento de produção 140, se o dispositivo de cliente emitir uma primeira solicitação, então o agrupamento de produção 140 executaria a atualização de software de serviço e o dispositivo de cliente não seria capaz de interpretar corretamente a resposta independentemente do número de novas tentativas. Consequentemente, a experiência do cliente seria degradada.
[0036] Para permitir a detecção de tais efeitos do lado do cliente de mudanças durante análise canária, o agrupamento de serviços de borda 120 inclui um roteador canário aderente 130. Em geral, o roteador canário aderente 130 encaminha consistentemente solicitações recebidas de uma pequena percentagem dos dispositivos de cliente, durante um período de tempo limitado, tanto para o agrupamento canário 160 como para o agrupamento de linha-base 150 para análise canária. O período de tempo limitado é denominado neste documento de tempo de vida (TTL) e é tipicamente selecionado para capturar sessões aproximadamente completas de cliente. O TTL é também denominado neste documento de janela de tempo para um roteamento. O agrupamento de serviços de borda 120 encaminha as restantes solicitações ao agrupamento de produção 140. O roteador canário aderente 130 pode ser implementado de qualquer modo tecnicamente factível. Por exemplo, em algumas modalidades, o roteador canário aderente 130 pode ser implementado como um ou mais filtros incluídos no agrupamento de serviços de borda 120.
[0037] Em operação, para um segmento de tempo de uma duração que iguale o TTL, o roteador canário aderente 130 encaminha solicitações de um pequeno subconjunto dos dispositivos de cliente ao agrupamento canário 160 e um diferente subconjunto pequeno dos dispositivos de cliente ao agrupamento de linha-base 150. Durante um segmento de tempo subsequente de uma duração que iguale o TTL, o roteador canário aderente 130 encaminha solicitações de ainda outro subconjunto pequeno dos dispositivos de cliente ao agrupamento canário 160 e um diferente subconjunto pequeno dos dispositivos de cliente ao agrupamento de linha-base 150. O roteador canário aderente 130 continua este processo, encaminhando solicitações de diferentes subconjuntos dos dispositivos de cliente ou ao agrupamento canário 160 ou ao agrupamento de linha-base até que a análise canária tenha terminado. O roteador canário aderente 130 pode ser configurado para interromper a análise canária com base em qualquer critério tecnicamente factível, tal como tempo total.
[0038] Apenas para fins de explicação, para um determinado TTL, o pequeno subconjunto de dispositivos de cliente para o qual o roteador canário aderente 130 encaminha as solicitações ao agrupamento canário 160 é denominado neste documento de “dispositivos de cliente canários”. Similarmente, para um determinado TTL, o pequeno subconjunto de dispositivos de cliente para o qual o roteador canário aderente 130 encaminha as solicitações ao agrupamento de linha-base 150 é denominado neste documento de “dispositivos de cliente de linha-base”. Os restantes dispositivos de cliente são denominados neste documento de “dispositivos de cliente de produção”. À medida que o tempo passa, o conjunto de dispositivos de cliente denominados de dispositivos de cliente canários, o conjunto de dispositivos de cliente denominados de dispositivos de cliente de linha-base e o conjunto de dispositivos de cliente denominados de dispositivos de cliente de produção mudam.
[0039] Vantajosamente, pelo roteamento consistente de solicitações com base no dispositivo de cliente associado, o roteador canário aderente 130 permite que o agrupamento de serviços de borda 120 obtenha métricas canárias que exata e compreensivelmente refletem interações com o agrupamento canário 160 para sessões completas de cliente. Consequentemente, os efeitos do lado do cliente das mudanças que iludem detecção por meio de análise canária convencional podem ser determinados por meio das métricas canárias. Em particular, se as mudanças provocam um efeito indesejável do lado do cliente, então as métricas canárias refletem tipicamente que os padrões de chamada associados aos dispositivos de cliente canários diferem dos padrões de chamada associados aos dispositivos de cliente de linha- base.
[0040] Em particular, como o roteador canário aderente 130 isola as solicitações que são recebidas dos dispositivos de cliente canários a partir do software de linha-base durante o TTL, o software de linha-base não mascara os efeitos da atualização de software de serviço nos dispositivos de cliente canários. Por exemplo, supor que o TTL é noventa segundos e um dispositivo de cliente canário emita uma primeira solicitação que o roteador canário aderente 130 encaminha ao agrupamento canário 160. O servidor canário incluído no agrupamento canário 160 executa a atualização de software de serviço, mas um defeito associado à atualização de software de serviço faz com que o servido canário funcione defeituosamente e emita uma resposta à primeira solicitação que o dispositivo de cliente é incapaz de interpretar. Em resposta, supor que o dispositivo de cliente tenta novamente a solicitação mediante emissão de uma segunda solicitação. O roteador canário aderente 130 encaminha esta segunda solicitação ao agrupamento canário 160 e um servidor canário executa a atualização de software de serviço. A atualização de software de serviço inclui o defeito e, consequentemente, o dispositivo de cliente é incapaz de interpretar a resposta do servidor canário à segunda solicitação.
[0041] O dispositivo de cliente poderia continuar a tentar novamente a solicitação para o TTL de noventa segundos, mas, como o roteador canário aderente 130 não encaminharia qualquer das solicitações recebidas do dispositivo de cliente a qualquer do agrupamento de linha- base 150 ou do agrupamento de produção 140 durante o TTL, o dispositivo de cliente seria incapaz de operar com êxito. Notavelmente, como resultado do defeito incluído na atualização de software de serviço, o volume de solicitações recebidas pelo agrupamento canário 160 poderia exceder dramaticamente o volume de solicitações recebidas pelo agrupamento de linha-base 150. Uma vez que o aumento em volume poderia ser refletido nas métricas canárias, o provedor de serviços poderia detectar o defeito incluído na atualização de software de serviço por meio da análise canária aderente, retirar a atualização de software de serviço e corrigir o defeito.
[0042] Além disso, como o roteador canário aderente 130 é configurado para encaminhar apenas uma pequena percentagem dos dispositivos de cliente ao agrupamento canário 160 durante o TTL limitado, o impacto do teste canário sobre a experiência do cliente é minimizado. Por exemplo, o roteador canário aderente 130 poderia ser configurado para encaminhar solicitações dos 3% dos dispositivos de cliente ao agrupamento canário 160 para um TTL de dez segundos. Após dez segundos, o roteador canário aderente 130 poderia encaminhar solicitações de diferentes 3% dos dispositivos de cliente ao agrupamento canário 160 durante os dez segundos seguintes, e assim por diante para um tempo total de teste canário de dois minutos. Consequentemente, o impacto sobre cada dispositivo de cliente de qualquer defeito incluído na atualização de software de serviço seria limitado a dez segundos.
[0043] Observar que as técnicas descritas neste documento são ilustrativas ao invés de restritivas, e podem ser alteradas sem divergir do espírito e âmbitos mais amplos da invenção. Em particular, o roteador canário aderente 130 pode implementar qualquer algoritmo que permita que o roteador canário aderente 130 encaminhe consistentemente solicitações ao agrupamento canário 160 ou ao agrupamento de linha-base 150 com base em qualquer critério tecnicamente factível e durante qualquer intervalo de tempo. Por exemplo, em modalidades alternativas, o roteador canário aderente 130 pode selecionar as solicitações a encaminhar ao agrupamento canário 160 com base em um identificador de dispositivo, um identificador de cliente, um número de série eletrônico (ESN), um identificador de sessão, ou em qualquer outra característica da solicitação. Em algumas modalidades, o roteador canário 130 pode encaminhar solicitações de uma sessão em execução em um dispositivo de cliente específico ao agrupamento canário 160 e encaminhar solicitações de outras sessões em execução no dispositivo de cliente específico ao agrupamento de produção 140.
[0044] Além disso, em algumas modalidades, o sistema 100 não inclui um agrupamento de serviços de borda 120 e o roteador canário aderente 130 é implementado como um aplicativo de roteamento independente. Em modalidades alternativas, a funcionalidade incluída no roteador canário aderente 130 pode ser incluída em qualquer unidade ou aplicativo e implementada de qualquer modo tecnicamente factível. Em diversas modalidades, o roteador canário aderente 130 pode ser implementado em software, hardware, ou qualquer combinação destes. Em algumas modalidades, a atualização de software de serviço pode ser substituída por qualquer tipo de modificação que altere a funcionalidade do servidor que implementa a modificação. Por exemplo, em algumas modalidades, a atualização de software de serviço é substituída por uma atualização de serviços que inclui qualquer número e combinação de atualizações de software, atualizações de dados, atualizações de roteiros, atualizações de gabaritos, etc.
Roteamento Canário Aderente
[0045] A Figura 2 é uma ilustração mais detalhada do roteador canário aderente 130 da Figura 1, de acordo com diversas modalidades da presente invenção. Como mostrado, o roteador canário aderente 130 inclui, sem limitação, uma dispersão de dispositivo 242, uma dispersão de tempo 246 e uma dispersão de roteamento 248. Em operação, o roteador canário aderente 130 recebe uma ou mais solicitações 210 e processa cada uma das solicitações 210 em uma ou mais configurações de roteamento 220. O roteador canário aderente 130 colabora em seguida com o agrupamento de serviços de borda 120 para encaminhar cada uma das solicitações a um dentre o agrupamento canário 160, o agrupamento de linha- base 150 ou o agrupamento de produção 140.
[0046] Como mostrado, a solicitação 210 inclui sem limitação, um identificador (ID) de solicitação 212, um ID de cliente 214 e um ID de dispositivo 216. O ID de solicitação 212, o ID de cliente 214 e o ID de dispositivo 216 podem ser especificados de qualquer modo tecnicamente factível e aderem a qualquer convenção como mostrado na técnica. Por exemplo, o ID de dispositivo 216 pode ser uma série que inclua um tipo de dispositivo concatenado com um número de série do dispositivo. Em modalidades alternativas, a solicitação 210 pode incluir qualquer número e tipo de informação que identifique qualquer número de características associadas à solicitação. Por exemplo, em algumas modalidades, a solicitação 210 pode incluir um número de série eletrônico (ESN) e um identificador de sessão.
[0047] O roteador canário aderente 130 é configurado por meio das configurações de roteamento 220. Cada uma das configurações de roteamento 220 inclui, sem limitação, um tipo de dispositivo 222, um roteamento 226, uma taxa por milhão (RPM) 232, um tempo de vida (TTL) 234 e uma origem 236. O tipo de dispositivo 222 especifica um tipo de dispositivo, tal como uma PlayStation ®3 (PS3) ou uma televisão de Ligação de Vídeo de Internet de Arquitetura Integrada Audiovisual de Melhor Resolução (BIVL). O roteamento 226 especifica se a configuração de roteamento 220 está associada ao agrupamento canário 160 ou ao agrupamento de linha-base 150. A taxa por milhão (RPM) 232 especifica a percentagem das solicitações 210 que são recebidas dos dispositivos de cliente do tipo de dispositivo 222 que estão para ser encaminhadas ao agrupamento especificado pelo roteamento 226. O TTL 234 especifica a duração dos segmentos de tempo durante os quais um subconjunto específico de dispositivos de cliente é encaminhado ao agrupamento especificado pelo roteamento 226 baseado nos IDs dos dispositivos 216. Finalmente, a origem 236 é um valor que é único para cada uma das configurações de roteamento 220 e é selecionado para garantir que o subconjunto de dispositivos de cliente que o roteador canário aderente 130 encaminha de acordo com as configurações de roteamento 220 variem entre as configurações de roteamento 220.
[0048] Notavelmente, as configurações de roteamento 220 permitem que a funcionalidade incluída no roteador canário aderente 130 seja baseada em sintonia fina em uma variedade de considerações logísticas. Em algumas modalidades, as configurações de roteamento 220 podem normalizar os roteamentos de solicitações 260 baseados no tipo de dispositivo 222. Por exemplo, televisões BIVL são muito menos prevalentes que PS3s. Consequentemente, para garantir teste adequado de televisões BIVL, as configurações de roteamento 220 associadas à televisão BIVL poderiam incluir a RPM 232 de 1.000 e as configurações de roteamento 220 associadas ao PS3 poderiam incluir a RPM 232 de 10. As configurações de roteamento 220 podem ser geradas de qualquer modo tecnicamente factível e em qualquer formato. Por exemplo, em algumas modalidades um sistema de processamento de fluxos de eventos pode criar uma distribuição ordenada relativa dos tipos de dispositivos 222 e o provedor de serviços pode determinar as RPMs 232 baseadas nesta distribuição ordenada. Em outras modalidades, o TTL 232 pode ter sintonia fina pela configuração de roteamento 220 para capturar aproximadamente sessões completas para diferentes fluxos de clientes associados a diferentes tipos de dispositivo 222.
[0049] Em operação, ao receber a solicitação 210, o roteador canário aderente 130 determina o tipo do dispositivo de cliente que emitiu a solicitação 210 baseado no ID do dispositivo 216. Subsequentemente, o roteador canário aderente 130 executa uma ou mais operações de comparação para identificar a configuração de roteamento 220 que inclui o roteamento 226 de “canário” e o tipo de dispositivo que corresponde ao tipo do dispositivo do cliente. O roteador canário aderente 130 determina em seguida se encaminha a solicitação 210 ao agrupamento canário 160 baseado no ID do dispositivo 216 e na configuração de roteamento “canária” identificada.
[0050] Se o roteador canário aderente 130 determinar não encaminhar a solicitação 210 ao agrupamento canário 160, então o roteador canário aderente 130 executa operações de comparação para identificar a configuração de roteamento 220 que inclui o roteamento 226 da “linha-base” e do tipo de dispositivo 222 que corresponde ao tipo do dispositivo do cliente. O roteador canário aderente 130 determina em seguida se encaminha a solicitação 210 ao agrupamento de linha-base 150 baseado no ID do dispositivo 216 e na configuração de roteamento de “linha-base” identificada 220. Como mostrado, a origem 236 incluída na configuração de roteamento “canária” 220(1) associada ao tipo de dispositivo 222 “dispositivo A” difere da origem 236 incluída na configuração de roteamento de “linha-base” 220(2) associada ao tipo de dispositivo 222 “dispositivo A”.
[0051] Se, o roteador canário aderente 130 determinar não encaminhar a solicitação 210 a qualquer um dentre o agrupamento de roteamento canário 260 ou o agrupamento de linha-base 150, então o agrupamento de serviços de borda 120 encaminha a solicitação 210 de acordo com o roteamento padrão implementado no agrupamento de serviços de borda 120 - tipicamente ao agrupamento de produção 140. Deste modo, o roteador canário aderente 130 e o agrupamento de serviços de borda 120 colaboram para encaminhar todas as solicitações 210.
[0052] Como parte de determinar se encaminhar a solicitação 210 baseada em uma configuração de roteamento específica 220, o roteador canário aderente 130 computa a dispersão de dispositivo 242, a dispersão de tempo 246 e a dispersão de roteamento 248. Mais especificamente, baseado no ID do dispositivo 216, o roteador canário aderente 130 computa uma dispersão de dispositivo consistente 242. Em operação, o roteador canário aderente 130 computa o mesmo valor da dispersão de dispositivo 242 para todas as solicitações 210 recebidas de um dispositivo de cliente específico independentemente da configuração de roteamento 220. Por contraste, o roteador canário aderente 130 computa dois diferentes valores da dispersão de dispositivo 242 para duas solicitações 210 recebidas de diferentes dispositivos de cliente. Consequentemente, em algumas modalidades alternativas, o roteador canário aderente 130 pode computar a dispersão de dispositivo 242 antes de identificar a configuração de roteamento canária 220. O roteador canário aderente 130 pode computar a dispersão de dispositivo 242 de qualquer modo tecnicamente factível que retorna deterministicamente um valor consistente para cada valor do ID do dispositivo 216. Por exemplo, em algumas modalidades, o roteador canário aderente 130 pode executar uma operação de dispersão ou uma operação de verificação cíclica de redundância (CRC) no ID do dispositivo 216.
[0053] Baseado no TTL 234 e na origem 236, o roteador canário aderente 130 é configurado para computar a dispersão de tempo 246 consistentemente durante um intervalo de tempo que iguale o TTL 234. Por exemplo, se o TTL 234 for noventa segundos e a origem 236 for “origem canária”, então o roteador canário aderente 130 poderia computar a dispersão de tempo 246 como “primeiro segmento de tempo canário” durante noventa segundos. Subsequentemente, durante os noventa segundos seguintes, o roteador canário aderente 130 poderia computar a dispersão de tempo 246 como “segundo segmento de tempo canário”, e assim por diante. Uma vez que a origem 236 pode ser definida separadamente para cada uma das configurações de roteamento 220, a dispersão de tempo 246 pode variar com base na configuração de roteamento 220 independentemente dos TTLs 234 das configurações de roteamento 220 serem iguais.
[0054] O roteador canário aderente 130 pode computar a dispersão de tempo 246 de qualquer modo tecnicamente factível que, para uma origem específica 236, garanta que a dispersão de tempo 246 seja um valor consistente para um segmento de tempo de uma duração que iguale o TTL 234. Por exemplo, como mostrado, o roteador canário aderente 130 poderia implementar a seguinte equação: dispersão de tempo 246 = piso(tempo_atual_desde_início() / TTL 234) * origem 236 Os TTLs 234 são sincronizados por meio do Protocolo de Tempo de Rede (NTP) que garante que o tempo de servidor é consistente nos servidores, agrupamentos e regiões. Consequentemente, a equação 1 é válida nos servidores e nos agrupamentos dos servidores.
[0055] O roteador canário aderente 130 alavanca a dispersão de dispositivo 242 e a dispersão de tempo 246 para computar a dispersão de roteamento 248. Em geral, para o ID do dispositivo 216 e a configuração de roteamento 220, o roteador canário aderente 130 é configurado para computar consistentemente um valor único para a dispersão de roteamento 248 durante um intervalo de tempo de duração igual ao TTL 234. O roteador canário aderente 130 pode computar a dispersão de roteamento 248 de qualquer modo tecnicamente factível que obedeça às propriedades acima mencionadas da dispersão de roteamento 248. Por exemplo, como mostrado, o roteador canário aderente 130 poderia executar uma operação de dispersão, tal como uma operação de lista de dispersão, na dispersão de dispositivo 242 e na dispersão de tempo 246. Em modalidades alternativas, o roteador canário aderente 130 poderia executar uma operação de CRC na dispersão de dispositivo 242 e na dispersão de tempo 246. Em ainda outras modalidades, o roteador canário aderente 130 poderia executar uma operação de multiplicação entre a dispersão de dispositivo 242 e a dispersão de tempo 246.
[0056] Após computar a dispersão de roteamento 248 para a solicitação 210, o roteador canário aderente 130 determina se encaminha a solicitação 210 baseado na RPM 232. Em particular, o roteador canário aderente 130 executa uma operação de módulo na dispersão de roteamento 248 e no valor um milhão para determinar um módulo. O roteador canário aderente 130 compara em seguida o módulo à RPM 232. Se o módulo for menor que a RPM 232, então o roteador canário aderente 130 encaminha a solicitação 210 baseado no roteamento 226 incluído na configuração de roteamento 220. Por exemplo, se o valor do roteamento 226 for “canário”, então o roteador canário aderente 130 encaminha a solicitação 210 ao agrupamento canário 160.
[0057] Notavelmente, para a janela de tempo especificada por um determinado TTL 324, o valor consistente da dispersão de roteamento 240 garante que o roteador canário aderente 130 forneça um roteamento “aderente” para cada um dos dispositivos de cliente. Mais especificamente, para um determinado TTL 324, o roteador canário aderente 130 encaminha a solicitação 210 recebida dos dispositivos de cliente canários ao agrupamento canário 160 e encaminha as solicitações 210 recebidas dos dispositivos de cliente de linha-base ao agrupamento de linha-base 150. O agrupamento de serviços de borda 120 encaminha solicitações 210 recebidas dos restantes dispositivos de cliente - os dispositivos de cliente de produção - ao agrupamento de produção 140. Além disso, a RPM 232 controla a percentagem dos dispositivos de cliente canários e dos dispositivos de cliente de linha-base em relação ao número total de dispositivos de cliente. Deste modo, o roteador canário aderente 130 isola as solicitações que são recebidas dos dispositivos de cliente canários do software de linha-base pela duração do TTL. Consequentemente, o software de linha-base não mascara os efeitos da atualização de software de serviço nos dispositivos de cliente canários.
[0058] A Figura 3 é um exemplo de roteamentos gerados pelo roteador canário aderente 120 da Figura 2, de acordo com diversas modalidades da presente invenção. O contexto da Figura 3 é que as solicitações 210 são recebidas dos dispositivos de cliente 305 e, com base nas configurações de roteamento (não mostradas na Figura 3), o roteador canário aderente 130 encaminhe cada uma das solicitações 210 a um dentre o agrupamento canário 160, o agrupamento de linha- base 150 ou o agrupamento de produção 140.
[0059] Apenas para fins de explicação, as solicitações 210 são consideradas como sendo recebidas pelo roteador canário aderente 120 dentro do TTL 234 incluído nas configurações de roteamento 220. Consequentemente, o roteador canário aderente 120 encaminha todas as solicitações 210 recebidas de um dispositivo de cliente específico 305 em um modo consistente com o agrupamento canário 160, o agrupamento de linha-base 150 ou o agrupamento de produção 140. Mais especificamente, como mostrado, o roteador canário aderente 120 encaminha todas as solicitações 210 recebidas dos dispositivos de cliente 305(3) e 305(5) ao agrupamento canário 160. Por contraste, o roteador canário aderente 120 encaminha todas as solicitações 210 recebidas dos dispositivos de cliente 305(4) e 305(M) ao agrupamento de linha-base 150. O roteador canário aderente 120 passa todas as solicitações 210 recebidas dos restantes dispositivos de cliente 305 ao agrupamento de serviços de borda 120, e o agrupamento de serviços de borda 120 encaminha estas solicitações 210 ao agrupamento de produção 140.
[0060] A Figura 4 é um fluxograma de etapas de método para encaminhar solicitações quando executando uma análise canária de atualizações de software associadas a um serviço, de acordo com diversas modalidades da presente invenção. Embora as etapas de método sejam descritas com referência aos sistemas das Figuras 1-3, pessoas versadas na técnica entenderão que qualquer sistema configurado para implementar as etapas do método, em qualquer ordem, cai dentro do âmbito da presente invenção.
[0061] Como mostrado, um método 400 começa na etapa 404, onde o roteador canário aderente 130 recebe as configurações de roteamento 220. Para cada um dos tipos de dispositivo 222, o roteador canário aderente 130 recebe duas configurações de roteamento 220. A configuração de roteamento associada ao agrupamento canário 260 é indicado pelo valor de “canário” para o roteamento 226. Por contraste, a configuração de roteamento 220 associada ao agrupamento de linha-base 250 é indicada pelo valor de “linha-base” para o roteamento 226. Na etapa 406, o roteador canário aderente 130 recebe a solicitação 210. A solicitação 210 inclui o ID do dispositivo 216 do dispositivo de cliente 305 que emitiu a solicitação 210. Na etapa 406, o roteador canário aderente 130 calcula a dispersão de dispositivo 242 baseado no ID de dispositivo 216.
[0062] Na etapa 408, o roteador canário aderente 130 seleciona a configuração de roteamento 220 que inclui o roteamento 226 de “canário” e o tipo de dispositivo 222 que corresponde ao tipo do dispositivo do cliente 305. O roteador canário aderente 130 pode obter o tipo do dispositivo do cliente 305 de qualquer modo tecnicamente factível. Por exemplo, em algumas modalidades, o tipo do dispositivo do cliente está embutido no ID do dispositivo 216. Na etapa 410, o roteador canário aderente 130 calcula a dispersão de tempo 246 baseado no tempo atual, o TTL incluído na configuração de roteamento selecionada 220, e a origem 236 incluída na configuração de roteamento selecionada. Como detalhado previamente neste documento, o roteador canário aderente 130 pode computar a dispersão de tempo 246 de qualquer modo tecnicamente factível que garanta que, para a origem 236, a dispersão de tempo 246 seja um valor consistente para um segmento de tempo de uma duração que iguale o TTL 234.
[0063] Na etapa 412, o roteador canário aderente 130 executa uma operação de dispersão na dispersão de dispositivo 242 e na dispersão de tempo 246 para computar a dispersão de roteamento 248. Notavelmente, para o ID de dispositivo 216 e a configuração de roteamento selecionada 220, o roteador canário aderente 130 é configurado para computar consistentemente um único valor para a dispersão de roteamento 248 durante um intervalo de tempo de duração igual ao TTL 234. Na etapa 414, o roteador canário aderente 130 compara uma operação de módulo na dispersão de roteamento 248 e o valor de um milhão para determinar um módulo. O roteador canário aderente 130 compara em seguida o módulo à RPM 232 incluída na configuração de roteamento selecionada 220. Se, na etapa 414, o roteador canário aderente 130 determinar que o módulo é inferior à RPM 232, então o módulo 400 prossegue para a etapa 416.
[0064] Na etapa 416, o roteador canário aderente 130 encaminha a solicitação de acordo com a configuração de roteamento selecionada 220. Mais especificamente, se o valor de roteamento 226 incluído na configuração de roteamento selecionada 220 for “canário”, então o roteador canário aderente 130 encaminha a solicitação ao agrupamento canário 160. Por contraste, se o valor do roteamento 226 incluído na configuração de roteamento selecionada 220 for “linha-base”, então o roteador canário aderente 130 encaminha a solicitação ao agrupamento de linha-base 150. O método 400 retorna em seguida à etapa 404, onde o roteador canário aderente 130 recebe uma nova solicitação 210.
[0065] Se, contudo, na etapa 414, o roteador canário aderente 130 determinar que o módulo não é inferior à RPM 232, então o módulo 400 prossegue diretamente para a etapa 418. Na etapa 418, o roteador canário aderente 130 determina se a configuração de roteamento selecionada 220 é a configuração de roteamento de linha-base 220 para o tipo de dispositivo do dispositivo do cliente 305. Mais precisamente, o roteador canário aderente 130 determina se o valor do roteamento 226 é “linha-base”. Se o roteador canário aderente 130 determinar que o valor do roteamento 226 não é “linha-base”, então o método prossegue para a etapa 420.
[0066] Na etapa 420, o roteador canário aderente 130 seleciona a configuração de roteamento 220 que inclui o roteamento 226 de “linha-base” e o tipo de dispositivo 222 que corresponde ao tipo do dispositivo do cliente 305. O método 400 retorna em seguida à etapa 410, e o roteador canário aderente 130 determina se encaminha a solicitação 210 ao agrupamento de linha-base 150 baseado na configuração de roteamento de linha-base selecionada 220 e no ID do dispositivo 216 do dispositivo do cliente 305.
[0067] Se, contudo, na etapa 418, o roteador canário aderente 130 determinar que o valor do roteamento 226 é “linha-base”, então o método 400 prossegue diretamente para a etapa 422. Na etapa 422, o agrupamento de serviços de borda 120 encaminha a solicitação 210 de acordo com o algoritmo de roteamento padrão implementado no agrupamento de serviços de borda 120. Tipicamente, o agrupamento de serviços de borda 120 encaminha a solicitação 210 ao agrupamento de produção 140. O método 400 retorna em seguida à etapa 404, onde então o roteador canário aderente 130 recebe uma nova solicitação 210.
[0068] O roteador canário aderente 130 continua neste modo, deslocando-se ciclicamente pelas etapas 404-422, até que o roteador canário aderente 130 determine que a análise canária terminou. O roteador canário aderente 130 pode determinar que a análise canária terminou de qualquer modo tecnicamente factível. Por exemplo, o roteador canário aderente 130 poderia ser configurado para terminar a análise canária após dez minutos.
[0069] Em resumo, as técnicas reveladas podem ser usadas para detectar eficientemente defeitos introduzidos por uma atualização de software associada a um serviço enquanto minimizando o impacto dos defeitos sobre os clientes. Em operação, para cada tipo de dispositivo, um roteador canário aderente estabelece uma percentagem canária, uma percentagem de linha-base e segmentos de tempo de uma duração que iguala um tempo de vida predeterminado. Notavelmente, o tempo de vida é configurado para capturar sessões aproximadamente completas de interações de clientes com o serviço. Para todos os dispositivos de cliente de um tipo de dispositivo específico, dentro de um segmento de tempo específico, o roteador canário aderente encaminha consistentemente solicitações da percentagem canária dos dispositivos de cliente, denominados neste documento de dispositivos de cliente canários, a um agrupamento canário de servidores que executam a atualização de software associada ao serviço. Por contraste, dentro do segmento de tempo específico, o roteador canário aderente encaminha consistentemente solicitações da percentagem de linha-base de dispositivos de cliente, denominados neste documento de dispositivos de cliente de linha-base, a um agrupamento de linha-base de servidores que executam software de linha-base associado ao serviço que não inclui a atualização de software.
[0070] Notavelmente, como o roteador canário aderente isola as solicitações que são recebidas dos dispositivos de cliente canários a partir do software de linha-base pela duração do TTL, o software de linha-base não mascara os efeitos da atualização de software de serviço sobre os dispositivos de cliente canários. Consequentemente, dados provenientes dos servidores e dispositivos podem ser analisados para detectar anomalias que indiquem que a atualização do software pode afetar adversamente qualquer número e tipo de dispositivos de cliente.
[0071] Vantajosamente, como o roteador canário aderente pode ser configurado para encaminhar solicitações ao agrupamento canário de servidores durante sessões aproximadamente completas, os efeitos das mudanças no serviço existente tanto sobre a experiência do cliente como sobre o comportamento do servidor podem ser mais compreensivelmente analisados em relação a técnicas convencionais. Em particular, como o roteador canário aderente impede os dispositivos de cliente canários de acessar o software de linha-base pela duração do TTL, as operações dos dispositivos de cliente podem ser impactadas de um modo mensurável. Por exemplo, se um defeito introduzido pela atualização de software fizer com que os servidores canários funcionem defeituosamente e emitam respostas a solicitações que os dispositivos de cliente canários são incapazes de interpretar, então os dispositivos de cliente canários podem tentar novamente as solicitações que falharam pela duração do TTL. Consequentemente, o volume de solicitações recebidas pelos servidores canários pode exceder dramaticamente o volume de solicitações recebidas pelos servidores de linha-base, indicando deste modo que a atualização de software associada ao serviço inclui o defeito.
[0072] Além disso, ao selecionar a percentagem canária e/ou o tempo de vida baseado no tipo de dispositivo de cliente, o roteador canário aderente permite sintonia fina da análise canária baseada na prevalência relativa de diferentes tipos de dispositivos e/ou diferentes durações esperadas de sessão. Por exemplo, supor que dispositivos de cliente de um primeiro tipo de dispositivo são relativamente prevalentes enquanto dispositivos de um segundo tipo de dispositivo são relativamente raros. Para garantir que o segundo tipo de dispositivo receba testes canários adequados, a percentagem canária associada ao segundo tipo de dispositivo pode ser ajustada para um valor que seja 1.000 vezes maior que a percentagem canária associada ao primeiro tipo de dispositivo.
[0073] As descrições das diversas modalidades foram apresentadas para fins de ilustração, mas não se destinam a ser exaustivas ou limitadas às modalidades reveladas. Muitas modificações e variações serão evidentes para aqueles versados na técnica sem divergir do âmbito e espírito das modalidades descritas.
[0074] Aspectos do assunto descrito neste documento são apresentados nas cláusulas numeradas a seguir: 1. Método implementado em computador para encaminhar solicitações quando executando uma análise canária, o método compreendendo computar um primeiro mapeamento baseado em ao menos uma característica de uma primeira solicitação, um tempo associado à primeira solicitação e uma janela de tempo para um roteamento; determinar se o primeiro mapeamento indica que a primeira solicitação deve estar associada a uma modificação em um serviço fornecido por meio de uma pluralidade de servidores; e encaminhar a primeira solicitação ou a um primeiro servidor que implementa a modificação ou a um segundo servidor que não implementa a modificação baseado em se o primeiro mapeamento indica que a primeira solicitação deve estar associada à modificação. 2. Método implementado em computador da cláusula 1, onde a ao menos uma característica da primeira solicitação compreende um identificador de dispositivo, e computar o primeiro mapeamento compreende executar uma primeira operação de dispersão no identificador de dispositivo para gerar uma dispersão de dispositivo; dividir um tempo atual pela janela de tempo para o roteamento determinar um segmento de tempo, onde o tempo associado à primeira solicitação encontra-se dentro do segmento de tempo; executar uma segunda operação de dispersão no segmento de tempo para gerar uma dispersão de tempo; e executar uma terceira operação de dispersão na dispersão de dispositivo e na dispersão de tempo para gerar o primeiro mapeamento. 3. Método implementado em computador de qualquer da cláusula 1 ou da cláusula 2, onde o tempo associado à primeira solicitação encontra-se dentro de um primeiro segmento de tempo, uma duração do primeiro segmento de tempo é igual à janela de tempo para o roteamento, e ainda compreende receber uma segunda solicitação, onde ao menos uma característica da segunda solicitação é igual à ao menos uma característica da primeira solicitação; e encaminhar a primeira solicitação ou a um terceiro servidor que implementa a modificação ou a um quarto servidor que não implementa a modificação baseado em se um tempo associado à segunda solicitação encontra-se dentro do primeiro segmento. 4. Método implementado em computador de qualquer das cláusulas 1-3, onde computar o primeiro mapeamento compreende executar ao menos uma dentre uma operação de dispersão e uma operação de verificação de redundância cíclica em uma primeira característica da primeira solicitação, o tempo associado à primeira solicitação e a janela de tempo para o roteamento. 5. Método implementado em computador de qualquer das cláusulas 1-4, onde a ao menos uma dentre a operação de dispersão e a verificação de redundância cíclica é baseada em uma constante única que está associada à modificação. 6. Método implementado em computador de qualquer das cláusulas 1-5, onde a modificação compreende uma atualização de software. 7. Método implementado em computador de qualquer das cláusulas 1-6, onde a ao menos uma característica da solicitação compreende um dentre um identificador de dispositivo, um identificador de cliente, um número de série eletrônico, ou um identificador de sessão. 8. Produto de programa que compreende um meio de armazenamento legível por computador que inclui instruções que, quando executadas por um processador, fazem com que o processador execute as etapas de determinar uma percentagem de mapeamentos que devem estar associados a uma modificação para um serviço baseado em uma primeira característica de uma primeira solicitação; computar um primeiro mapeamento baseado em uma segunda característica da primeira solicitação, um tempo associado à primeira solicitação, e uma janela de tempo para um roteamento; executar uma operação de comparação baseada no primeiro mapeamento e na percentagem de mapeamentos para determinar se o primeiro mapeamento indica que a primeira solicitação deve estar associada à modificação; e encaminhar a primeira solicitação ou a primeiro servidor que implementa a modificação ou a um segundo servidor que não implementa a modificação baseado em se o primeiro mapeamento indica que a primeira solicitação deve estar associada à modificação. 9. Produto de programa da cláusula 8, onde computar o primeiro mapeamento compreende executar ao menos uma dentre uma operação de dispersão e uma operação de verificação de redundância cíclica na segunda característica, o tempo associado à primeira solicitação, e a janela de tempo para o roteamento. 10. Produto de programa de qualquer da cláusula 8 ou da cláusula 9, onde a ao menos uma dentre a operação de dispersão e a verificação de redundância cíclica é baseada em uma constante única que está associada à modificação. 11. Produto de programa de qualquer das cláusulas 8-10, onde a segunda característica compreende um identificador de dispositivo, e computar o primeiro mapeamento compreende executar uma primeira operação de dispersão no identificador de dispositivo para gerar uma dispersão de dispositivo; dividir um tempo atual pela janela de tempo para o roteamento determinar um segmento de tempo, onde o tempo associado à primeira solicitação encontra-se dentro do segmento de tempo; executar uma segunda operação de dispersão no segmento de tempo para gerar uma dispersão de tempo; e executar uma terceira operação de dispersão na dispersão de dispositivo e na dispersão de tempo para gerar o primeiro mapeamento. 12. Produto de programa de qualquer das cláusulas 8-11, onde o tempo associado à primeira solicitação encontra-se dentro de um primeiro segmento de tempo, uma duração do primeiro segmento de tempo é igual à janela de tempo para o roteamento, e ainda compreende receber uma segunda solicitação, onde uma primeira característica da segunda solicitação é igual à primeira característica da primeira solicitação; e encaminhar a primeira solicitação ou a um terceiro servidor que implementa a modificação ou a um quarto servidor que não implementa a modificação baseado em se um tempo associado à segunda solicitação encontra-se dentro do primeiro segmento. 13. Produto de programa de qualquer das cláusulas 8-12, onde uma diferença entre um tempo inicial e um tempo final iguala a janela de tempo para o roteamento, e computar o primeiro mapeamento compreende fixar o primeiro mapeamento igual a um primeiro valor de dispersão, se um tempo atual for maior que o tempo inicial e não for maior que o tempo final; ou fixar o primeiro mapeamento igual ao segundo valor de dispersão, se o tempo atual não for maior que o tempo inicial ou for maior que o tempo final. 14. Produto de programa de qualquer das cláusulas 8-13, onde a segunda característica da solicitação compreende um dentre um identificador de dispositivo, um identificador de cliente, um número de série eletrônico, ou um identificador de sessão. 15. Produto de programa de qualquer das cláusulas 8-14, onde a segunda característica da primeira solicitação especifica que a primeira solicitação está associada a um primeiro dispositivo de cliente, o primeiro dispositivo de cliente está associado a um primeiro tipo de dispositivo, e determinar se o primeiro mapeamento indica que a solicitação deve estar associada à modificação compreende executar uma operação de comparação baseada no primeiro mapeamento e em uma taxa que especifica uma percentagem de dispositivos de cliente do primeiro tipo de dispositivo que devem estar associados à modificação. 16. Produto de programa de qualquer das cláusulas 8-15, compreendendo ainda fixar a janela de tempo para o roteamento baseado na primeira característica. 17. Sistema configurado para encaminhar solicitações quando executando uma análise canária, o sistema compreendendo um primeiro servidor que implementa uma modificação em um serviço; uma pluralidade de servidores que implementam o serviço, mas não implementam a modificação; e um roteador canário aderente configurado para computar um primeiro mapeamento baseado em ao menos uma característica de uma solicitação; computar um segundo mapeamento baseado em um tempo associado à solicitação, uma janela de tempo para um roteamento, e uma constante única que está associada à modificação; computar um terceiro mapeamento baseado no primeiro mapeamento e no segundo mapeamento; determinar se o terceiro mapeamento indica que a solicitação deve estar associada à modificação; e encaminhar a solicitação ou ao primeiro servidor ou à pluralidade de servidores baseado em se o terceiro mapeamento indica que a solicitação deve estar associada à modificação. 18. Sistema da cláusula 17, onde o roteador canário aderente é configurado para computar o segundo mapeamento pela divisão de um tempo atual pela janela de tempo para o roteamento determinar um segmento de tempo, onde o tempo associado à solicitação encontra-se dentro do segmento de tempo; e multiplicar o segmento de tempo e a constante única para gerar o segundo mapeamento. 19. Sistema de qualquer da cláusula 17 ou cláusula 18, onde a modificação compreende ao menos uma dentre uma atualização de software e uma atualização de dados. 20. Sistema de qualquer das cláusulas 17-19, onde a ao menos uma característica da solicitação compreende um dentre um identificador de dispositivo, um identificador de cliente, um número de série eletrônico, ou um identificador de sessão. Aspectos das presentes modalidades podem ser corporificados como um sistema, método ou produto de programa computacional. Consequentemente, aspectos da presente revelação podem tomar a forma de uma modalidade inteiramente de hardware, uma modalidade inteiramente de software (incluindo firmware, software residente, microcódigo, etc.) ou uma modalidade que combina aspectos de software e hardware que pode geralmente ser denominada neste documento de “circuito”, “módulo” ou “sistema”. Além disso, aspectos da presente revelação podem tomar a forma de um produto de programa computacional incorporado em um ou mais meio(s) legível(eis) por computador com código de programa legível por computador incorporado naquele(s).
[0075] Qualquer combinação de um ou mais meio(s) legível(eis) por computador pode ser utilizada. O meio legível por computador pode ser um meio de sinais legíveis por computador ou um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, um sistema, aparelho, ou dispositivo eletrônico, magnético, ótico, eletromagnético, infravermelho, ou semicondutor, ou qualquer combinação adequada dos precedentes, mas não limitado a estes. Mais exemplos específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluiriam os seguintes: uma conexão elétrica com um ou mais fios, um disquete portátil de computador, um disco rígido, uma memória de acesso aleatório (RAM), uma memória apenas de leitura (ROM), uma memória apenas de leitura programável apagável (EPROM ou memória Flash), uma fibra ótica, uma memória apenas de leitura de disco portátil compacto (CD-ROM), um dispositivo de armazenamento ótico, um disco de armazenamento magnético, ou qualquer combinação adequada dos anteriormente mencionados. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que possa conter, ou armazenar um programa para uso por ou em conexão com um sistema, aparelho, ou dispositivo de execução de instruções
[0076] Aspectos da presente revelação são descritos acima com referência a ilustrações de fluxograma e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa computacional de acordo com modalidades da revelação. Será entendido que cada bloco das ilustrações de fluxograma e/ou dos diagramas de blocos, e combinações de blocos das ilustrações de fluxograma e/ou dos diagramas de blocos, podem ser implementados por instruções de programa computacional. Estas instruções de programa computacional podem ser fornecidas a um processador de um computador de uso geral, computador de uso especial, ou outro aparelho programável de processamento de dados para produzir uma máquina, de modo que as instruções, executadas por meio do processador do computador ou de outro aparelho programável de processamento de dados, permitam a implementação das funções/ações especificadas no bloco ou blocos do fluxograma e/ou dos diagramas de blocos. Tais processadores podem ser, sem limitação, processadores de uso geral, processadores de uso especial, processadores específicos de aplicativos, ou processadores ou conjuntos de portas programáveis de campo.
[0077] O fluxograma e diagramas de blocos nas figuras ilustram a arquitetura, funcionalidade, e operação de possíveis implementações de sistema, métodos e produtos de programa computacional de acordo com diversas modalidades da presente revelação. No que se refere a isto, cada bloco no fluxograma ou diagramas de blocos pode representar um módulo, segmento, ou porção de código, o qual compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) específica(s). Deverá também ser observado que, em algumas implementações alternativas, as funções mencionadas no bloco podem ocorrer fora da ordem mencionada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, na verdade, ser executados de modo substancialmente concorrente, ou os blocos podem algumas vezes ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também será observado que cada bloco dos diagramas de blocos e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração de fluxograma, podem ser implementados por sistemas baseados em hardware para fim específico que executam as funções ou ações especificadas, ou combinações de hardware para fim especial e instruções de computador.
[0078] Embora o precedente seja direcionado a modalidades da presente revelação, outras e adicionais modalidades da revelação podem ser vislumbradas sem divergir do seu âmbito básico, e o seu âmbito é determinado pelas reivindicações que seguem.

Claims (18)

1. Método implementado em computador para encaminhar solicitações quando executando uma análise canária, o método caracterizado por compreender: computar um primeiro valor baseado em ao menos uma característica de uma primeira solicitação, um tempo associado à primeira solicitação e uma janela de tempo para roteamento da primeira solicitação ao realizar pelo menos uma de uma operação de dispersão ou uma operação de verificação de redundância cíclica em uma primeira característica da primeira solicitação, o tempo associado à primeira solicitação e a janela de tempo para roteamento da primeira solicitação, em que a ao menos uma das operações de dispersão ou a operação de verificação de redundância cíclica é baseada em uma constante única que está associada à modificação; determinar se o primeiro valor indica que a primeira solicitação deve estar associada a uma modificação em um serviço fornecido por meio de uma pluralidade de servidores; e encaminhar a primeira solicitação a um primeiro servidor que implementa a modificação ou a um segundo servidor que não implementa a modificação baseado em se o primeiro valor indica que a primeira solicitação deve estar associada à modificação.
2. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira característica da primeira solicitação compreender um identificador de dispositivo, e que computar o primeiro valor compreende ainda: executar uma primeira operação de dispersão no identificador de dispositivo para gerar uma dispersão de dispositivo; dividir um tempo atual pela janela de tempo para roteamento para determinar um segmento de tempo, onde o tempo associado à primeira solicitação encontra-se dentro do segmento de tempo; executar uma segunda operação de dispersão no segmento de tempo para gerar uma dispersão de tempo; e executar uma terceira operação de dispersão na dispersão de dispositivo e na dispersão de tempo para gerar o primeiro valor.
3. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato do tempo associado à primeira solicitação encontrar-se dentro de um primeiro segmento de tempo, uma duração do primeiro segmento de tempo ser igual à janela de tempo para roteamento, e ainda compreendendo: receber uma segunda solicitação, onde ao menos uma característica de dispositivo da segunda solicitação é igual à ao menos uma característica de dispositivo da primeira solicitação; e encaminhar a segunda solicitação a um terceiro servidor que implementa a modificação ou a um quarto servidor que não implementa a modificação baseado em se um tempo associado à segunda solicitação se encontra dentro do primeiro segmento.
4. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato da modificação compreender uma atualização de software.
5. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de ao menos uma característica de dispositivo da solicitação da primeira solicitação compreende pelo menos um identificador de dispositivo ou um número de série eletrônico.
6. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a janela de tempo para encaminhar a primeira solicitação determina um roteamento da primeira solicitação para um agrupamento de servidores específico de uma pluralidade de agrupamento de servidores.
7. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a janela de tempo para encaminhar a primeira solicitação aloca uma primeira quantidade de tempo para encaminhar a primeira solicitação para um determinado agrupamento de servidores incluído em uma pluralidade de agrupamento de servidores.
8. Um ou mais meios de armazenamento legíveis por computador não-transitórios caracterizado pelo fato de incluir instruções que, quando executadas por um ou mais processadores, fazem com que o um ou mais processadores executem as etapas de: determinar uma percentagem de roteamento que devem estar associados a uma modificação para um serviço baseado em uma primeira característica de uma primeira solicitação; computar um primeiro valor baseado em uma segunda característica da primeira solicitação, um tempo associado à primeira solicitação, e uma janela de tempo para roteamento da primeira solicitação, realizando pelo menos uma de uma operação de dispersão ou uma operação de verificação de redundância cíclica em uma segunda característica, o tempo associado à primeira solicitação e a janela de tempo para encaminhar a primeira solicitação, em que pelo menos uma da operação de dispersão ou a operação de verificação de redundância cíclica é baseada em uma constante única que está associada à modificação; executar uma operação de comparação baseada no primeiro valor e na percentagem de roteamento para determinar se o primeiro valor indica que a primeira solicitação deve estar associada à modificação; e encaminhar a primeira solicitação a um primeiro servidor que implementa a modificação ou a um segundo servidor que não implementa a modificação baseado em se o primeiro valor indica que a primeira solicitação deve estar associada à modificação.
9. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado pelo fato da segunda característica compreender um identificador de dispositivo, e que computar o primeiro valor ainda compreende: executar uma primeira operação de dispersão no identificador de dispositivo para gerar uma dispersão de dispositivo; dividir um tempo atual pela janela de tempo para roteamento para determinar um segmento de tempo, onde o tempo associado à primeira solicitação se encontra dentro do segmento de tempo; executar uma segunda operação de dispersão no segmento de tempo para gerar uma dispersão de tempo; e executar uma terceira operação de dispersão na dispersão de dispositivo e na dispersão de tempo para gerar o primeiro valor.
10. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado pelo fato do tempo associado à primeira solicitação encontrar-se dentro de um primeiro segmento de tempo, uma duração do primeiro segmento de tempo ser igual à janela de tempo para roteamento, e ainda compreendendo: receber uma segunda solicitação, onde uma primeira característica da segunda solicitação é igual à primeira característica da primeira solicitação; e encaminhar a segunda solicitação a um terceiro servidor que implementa a modificação ou a um quarto servidor que não implementa a modificação baseado em se um tempo associado à segunda solicitação se encontra dentro do primeiro segmento.
11. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado pelo fato de uma diferença entre um tempo inicial e um tempo final igualar à janela de tempo para roteamento e computar o primeiro valor ainda compreende: fixar o primeiro valor igual a um primeiro valor de dispersão, se um tempo atual for maior que o tempo inicial e não for maior que o tempo final; ou fixar o primeiro valor igual ao segundo valor de dispersão, se o tempo atual não for maior que o tempo inicial ou for maior que o tempo final.
12. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado pelo fato da segunda característica da primeira solicitação compreender pelo menos um identificador de dispositivo ou um número de série eletrônico.
13. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado pelo fato da segunda característica da primeira solicitação especificar que a primeira solicitação está associada a um primeiro dispositivo de cliente, o primeiro dispositivo de cliente está associado a um primeiro tipo de dispositivo, e determinar se o primeiro valor indica que a solicitação deve estar associada à modificação compreende executar uma operação de comparação baseada no primeiro valor e em uma taxa que especifica uma percentagem de dispositivos de cliente do primeiro tipo de dispositivo que devem estar associados à modificação.
14. Um ou mais meios de armazenamento legíveis por computador não-transitórios, de acordo com a reivindicação 8, caracterizado por compreender ainda fixar a janela de tempo para roteamento baseado na primeira característica.
15. Sistema configurado para encaminhar solicitações quando executando uma análise canária, o sistema caracterizado por compreender: um primeiro servidor que implementa uma modificação em um serviço; uma pluralidade de servidores que implementam o serviço, mas não implementam a modificação; e um roteador canário aderente configurado para: computar um primeiro valor baseado em uma primeira característica de uma solicitação; computar um segundo valor baseado em uma segunda característica da solicitação, um tempo associado à solicitação, e uma janela de tempo para roteamento da solicitação ao realizar ao menos uma de uma operação de dispersão ou uma operação de verificação de redundância cíclica na segunda característica, o tempo associado à solicitação e a janela de tempo para roteamento da solicitação, em que a ao menos uma das operação de dispersão ou a operação de verificação de redundância cíclica é baseada em uma constante única que está associada à modificação; computar um terceiro valor baseado no primeiro valor e no segundo valor; determinar se o terceiro valor indica que a solicitação deve estar associada à modificação; e encaminhar a solicitação ao primeiro servidor ou à pluralidade de servidores baseado em se o terceiro valor indica que a solicitação deve estar associada à modificação.
16. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de que o roteador canário aderente ser configurado para ainda computar o segundo valor por meio de: dividir um tempo atual pela janela de tempo para roteamento para determinar um segmento de tempo, onde o tempo associado à primeira solicitação se encontra dentro do segmento de tempo; e multiplicar o segmento de tempo e a constante única para gerar o segundo valor.
17. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato da modificação compreender ao menos uma atualização de software ou uma atualização de dados.
18. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato da segunda característica da solicitação compreende pelo menos um de um identificador de dispositivo ou um número de série eletrônico.
BR112018008094-2A 2015-10-23 2016-10-18 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 BR112018008094B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/922,101 US11616719B2 (en) 2015-10-23 2015-10-23 Techniques for determining client-side effects of server-side behavior using canary analysis
US14/922,101 2015-10-23
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
BR112018008094A2 BR112018008094A2 (pt) 2019-01-08
BR112018008094B1 true BR112018008094B1 (pt) 2023-08-08

Family

ID=

Similar Documents

Publication Publication Date Title
CA3002807C (en) Techniques for determining client-side effects of server-side behavior using canary analysis
US10009335B2 (en) Global unified session identifier across multiple data centers
US10481905B2 (en) Method, apparatus and system for verifying code integrity on clients
US10999132B1 (en) Detecting degraded network monitoring agents
TWI654533B (zh) 下載以及安裝客戶端的方法、伺服器以及客戶端
US9201755B2 (en) Real-time, interactive measurement techniques for desktop virtualization
US10983903B1 (en) Enhanced automated protocol for secure application testing
US8626880B2 (en) Embedded configuration variance detector
US10938687B2 (en) Enabling device under test conferencing via a collaboration platform
US20140196012A1 (en) Methods, devices, systems, and non-transitory machine-readable medium for performing an automated calibration for testing of a computer software application
US20180278482A1 (en) Policy driven network probe for determining internet protocol selection
US20170187584A9 (en) Ubiquitous trouble management and e-service ecosystem for the internet of things
US9973635B1 (en) System and method for processing of a service subscription using a telecommunications operator
JP2013522786A5 (pt)
AU2014357345B2 (en) Method for measuring end-to-end internet application performance
US9356903B2 (en) Dynamically managing social networking groups
US10761817B2 (en) System and method for facilitating an instance-specific user interface
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
CN113973124B (zh) 数据传输方法及装置、电子设备、计算机可读存储介质
KR102291385B1 (ko) 통신환경에 기초한 게임 패치 제공 방법 및 장치
US20150095891A1 (en) Eliminating redundant interactions when testing computer software applications
US20240095157A1 (en) Systems and methods for operating web management software
US20230126589A1 (en) System and method for generating brain data visualizations based on federated analysis of brain data in a complex computing network
US20150363298A1 (en) Automated testing of websites based on mode