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) é uma medida dessa confiabilidade a ser usada para se comunicar sobre a confiabilidade do serviço e para gerenciá-lo.

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 as seguintes seções do Manual de engenharia de confiabilidade do site:

Propriedades de um bom SLI

Consideramos os SLIs "bons" quando aquelas medidas 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 linearmente de acordo com a satisfação do usuário.

    Um bom SLI faz o escalonamento monotonicamente e linearmente de acordo com a satisfação do usuário. Se o SLI melhorar, a satisfação do usuário melhora. Da mesma forma, se o SLI diminuir, a satisfação do usuário diminuirá. 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 até um minuto após o horário de início.

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 código no navegador do usuário resulta em uma medição mais precisa da latência do que a latência percebida pelo usuário ou por outras opções de medição.

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

Como resultado, embora o indicador 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. No entanto, 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 equilibrar essa compensação, 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

Serviços que realizam vários tipos de trabalho, para diferentes categorias de usuários, e em que cada tipo de trabalho influencia a satisfação do usuário de maneira diferente em relação a vários SLIs.

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, a métrica de SLI tem uma etiqueta que pode ser usada para classificar os valores em um dos vários buckets.

Uma tarefa com resultados diferentes

Serviços com um único tipo de trabalho, mas em que as expectativas do usuário são diferentes com base na resposta, beneficiam-se de vários SLIs.

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 sã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:

Para ver um exemplo que ilustra como criar um SLI para serviços que informam métricas personalizadas, consulte Como configurar SLOs: observabilidade usando métricas personalizadas.