Visão geral

Nesta seção, analisamos o conceito de indicadores de nível de serviço (SLIs, na sigla em inglês), definimos o que torna um SLI bom ou útil e fornecemos exemplos de implementações de SLI para serviços selecionados. Esta página é destinada a pessoas que querem exemplos que implementem SLIs específicos de serviços.

Introdução aos SLIs

A confiabilidade de um serviço é uma noção abstrata. O signficado de confiabilidade depende do serviço e das necessidades dos usuários. Um indicador de nível de serviço (SLI, na sigla em inglês) é uma medida de confiabilidade para comunicar a confiabilidade do serviço e tomar decisões sobre ele.

Os SLIs são medidos ao longo de uma janela de tempo. O tamanho da janela geralmente depende da decisão em que as informações são usadas. Por exemplo, um único SLI pode ser avaliado das seguintes maneiras:

  • Na última hora, para criar políticas de alerta.
  • Ao longo das semanas, para tomar decisões táticas.
  • Ao longo dos meses, para tomar decisões estratégicas.

Recomendamos usar 28 dias como ponto de partida para avaliar seu SLI. Esse valor proporciona um bom equilíbrio entre os casos de uso estratégicos e táticos.

Para mais informações, consulte os capítulos a seguir no Manual de engenharia de confiabilidade do site:

Propriedades de um bom SLI

Consideramos os SLIs "bons" quando atendem aos critérios a seguir:

  • Os SLIs são uma boa medida da satisfação dos usuários.

    Um bom SLI está amplamente relacionado à satisfação do usuário. Use o SLI como base para um objetivo de nível de serviço (SLO, na sigla em inglês), um limite definido no SLI. Defina o SLO para que, quando o SLI estiver dentro de um intervalo definido, a maioria dos usuários esteja feliz. Para que esse relacionamento seja mantido, o SLI precisa ser uma boa medida de avaliação da satisfação do usuário.

    Se o SLI for uma boa forma de avaliar a satisfação do usuário, quando ocorrer um evento que afete esse satisfação, o SLI será alterado de alguma maneira. Da mesma forma, quando não ocorrerem eventos que afetem a satisfação do usuário, o SLI não mudará.

  • Os SLIs são escalonados monotonicamente e quase linearmente de acordo com a satisfação do usuário.

    Um bom SLI faz o escalonamento monotonicamente e quase linearmente de acordo com a satisfação do usuário. Se o SLI melhorar, a satisfação do usuário melhora e vice-versa. A melhoria no valor de um bom SLI corresponde à melhoria na satisfação do usuário.

  • Os SLIs produzem medidas que variam de 0% a 100%.

    Um bom SLI produz uma medição de desempenho que varia de 0% a 100%: esse intervalo é intuitivo e fácil de utilizar. Por exemplo, o desempenho de SLI de 100% significa que tudo está funcionando e o desempenho de SLI de 0% significa que nada está funcionando.

    Ter um SLI com valor de 0% a 100% facilita a configuração de um SLO no SLI. Atribua um valor percentual desejado como 99,9%, e o desempenho do SLI precisa ser igual ou superior ao valor desejado para que o serviço atenda ao SLO.

Promessas

Uma forma de implementar um SLI com essas propriedades é pensar nos SLIs como promessas feitas aos usuários. Ao contar as promessas feitas e mantidas em uma janela de tempo, é possível derivar um número que varia de 0% a 100%. Esses SLIs também podem ser usados em margens de erro: para um determinado SLO, a margem de erro é o número de promessas que você pode não conseguir manter ao longo de um período, mesmo que atenda ao seu SLO.

Veja alguns exemplos de promessas:

  • Para retornar uma resposta com um código de status HTTP 200 para a solicitação de um cliente.
  • Para responder a uma solicitação gRPC em menos de 100 ms.
  • Para concluir o fluxo de trabalho "Criar máquina virtual" com sucesso.
  • Para exibir dados que foram atualizados nos últimos 10 minutos.
  • Para começar a executar o job em lote programado para 1 minuto antes do horário de início desejado.

As promessas podem ser de nível básico, como os exemplos de HTTP e gRPC, ou de nível superior, como o exemplo de fluxo de trabalho.

Especificações e implementações do SLI

Uma especificação do SLI é o que você quer medir. A especificação não inclui os detalhes técnicos exatos de como será feita a medição. Por exemplo, veja uma especificação de um SLI para o tempo de carregamento da página:

  • A porcentagem de solicitações de página inicial que são carregadas em menos de 100 ms.

Pode haver muitas maneiras de medir um SLI, cada uma com vantagens e benefícios. As maneiras de medir o SLI são as implementações do SLI. Por exemplo, é possível implementar a especificação de carregamento de página como uma das seguintes opções:

  • O campo de latência do registro de solicitação do servidor de aplicativos.
  • Métricas exportadas pelo servidor de aplicativos.
  • Métricas exportadas por um balanceador de carga na frente dos servidores de aplicativos.
  • Um serviço de monitoramento de caixa preta que envia solicitações artificiais para o sistema e mede o tempo necessário para receber respostas válidas.
  • Código específico do aplicativo executado no navegador do cliente que registra informações de marcação de tempo e as envia de volta para um serviço de coleta.

Cada uma dessas opções envolve desvantagens entre as seguintes características:

  • Fidelidade: a precisão com que captura a experiência do usuário.
  • Cobertura: qual proporção de interações do usuário é medida.
  • Custo: o valor financeiro e o tempo de engenharia necessários para criar e manter a solução.

Geralmente, a qualidade da experiência do usuário melhora quando o SLI é medido mais próximo do usuário. Por exemplo, a implementação que usa o código no navegador do usuário resulta em uma medição mais precisa da latência que é concedida pelo usuário do que outras opções de implementação.

A desvantagem é que a medição baseada em navegador também inclui qualquer latência introduzida pela conexão do usuário ao serviço. No caso de um serviço usado pela Internet pública, essa latência pode variar significativamente com as condições de localização geográfica ou de rede.

Como resultado, embora o sinal baseado em navegador seja uma boa medida da satisfação do usuário, ele pode não fornecer informações úteis que podem ser usadas para melhorar a confiabilidade do serviço.

Para informações sobre como combinar várias medidas para compensar essa desvantagem, consulte esta postagem do The Telegraph (em inglês).

Agrupamento por classes

Talvez sejam necessários vários SLIs para um serviço se o serviço realizar diferentes tipos de trabalho para diferentes usuários ou se executar uma tarefa específica com diferentes resultados possíveis.

Tarefas diferentes

Um tipo de serviço que se beneficia de vários SLIs é um que executa vários tipos de trabalho, para diferentes categorias de usuários, e em que cada tipo de trabalho tem impactos diferentes na satisfação do usuário.

Por exemplo, se o serviço lida com solicitações de leitura e gravação, os usuários que executam essas tarefas podem ter requisitos diferentes:

  • As solicitações de leitura precisam ser rápidas.
  • As solicitações de gravação precisam ser bem-sucedidas.

Para capturar esses requisitos diferentes, o SLI precisa ser capaz de distinguir entre esses dois casos. Normalmente, isso significa que a métrica de SLI tem um rótulo que pode ser usado para classificar valores em um de vários buckets.

Uma tarefa com resultados diferentes

Outro tipo de serviço que se beneficia de vários SLIs é um que executa um único tipo de trabalho, mas em que as expectativas do usuário diferem com base na resposta.

Por exemplo, se o serviço oferecer apenas acesso de leitura aos dados, os usuários poderão ter uma tolerância diferente à latência, dependendo do resultado da solicitação:

  • Os usuários podem ser tolerantes aos erros que são retornados rapidamente, porque eles podem repetir a solicitação imediatamente.
  • Os usuários podem ser menos tolerantes a solicitações bem-sucedidas que demoram muito.
  • Os usuários serão menos tolerantes em relação ao pior dos casos: solicitações que levam muito tempo para retornar um erro.

Nesse caso, o SLI de latência precisa ser capaz de distinguir entre solicitações bem-sucedidas e não realizadas.

A seguir

Para informações sobre como implementar SLIs para serviços do Google Cloud usando métricas do Google Cloud, consulte:

Para obter informações sobre como implementar SLIs específicos do aplicativo, consulte: