Os níveis de serviço descrevem os serviços fornecidos aos usuários dentro de um determinado período de tempo, em termos mensuráveis. Os objetivos de nível de serviço (SLOs) são as metas definidas para a disponibilidade esperada de um sistema. Os indicadores de nível de serviço (SLIs) são as principais medidas e métricas para determinar a disponibilidade de um sistema. Acordos de nível de serviço (SLAs) são os contratos legais que explicam o que é acordado e o que acontece se os sistemas não atenderem aos SLOs.

Por exemplo, um SLO para um aplicativo da web pode estabelecer que os vídeos comecem a ser reproduzidos em menos de 2 segundos, 99% do tempo durante um período de uma semana. O SLI mede a proporção de vídeos do site que começam a ser reproduzidos em menos de 2 segundos. O SLA inclui este SLO e outros SLOs acordados entre o cliente e o provedor de serviços, o escopo dos serviços que serão cobertos e os SLIs, que são as métricas que serão usadas para medir o desempenho.

A engenharia de confiabilidade de sites (SRE) popularizou as práticas recomendadas para manter o tempo de operação e a confiabilidade de sistemas distribuídos, com foco na forma de medir o desempenho e a confiabilidade dos serviços. O Google publicou Site Reliability Engineering: How Google Runs Production Systems em março de 2016, descrevendo uma estrutura para modelar, selecionar e analisar métricas, começando com objetivos de nível de serviço.

Então, como os SLOs, SLIs e SLAs se relacionam entre si e com as formas de gerenciar os níveis de serviço que seus usuários esperam? Vejamos cada um com mais detalhes.

O que são SLOs?

SLOs são as metas que você define para a disponibilidade esperada do seu sistema, expressas como uma porcentagem durante um período de tempo.

Os objetivos de nível de serviço ajudam as equipes a colaborar em um significado compartilhado de “disponibilidade” e “tempo de operação”. Você usa SLOs como padrão para medir sua confiabilidade e disponibilidade. Conforme descrito no exemplo anterior, um SLO afirma que os vídeos no aplicativo Web devem começar a ser reproduzidos em menos de 2 segundos, 99% do tempo durante um período de uma semana.

Exemplos de SLOs

Conforme mencionado anteriormente, os SLOs servem como uma ponte entre as métricas técnicas e os acordos de nível de serviço (SLAs) mais amplos acordados com os clientes. Vejamos mais alguns exemplos.

 

SLOs de tempo de atividade/disponibilidade

  • Tempo de operação de 99,9% em um período de 30 dias.
  • Menos de 0,1% das solicitações falham devido a erros do sistema em qualquer semana.

SLOs de latência

  • 95% dos carregamentos de páginas da web são concluídos em 2 segundos.
  • 99% das solicitações de API retornam em 300 milissegundos.

SLOs de taxa de erro

  • Menos de 0,05% de todas as transações resultam em erro.
  • Menos de 1% das gravações do banco de dados falham.

SLOs de taxas de transferência

  • O sistema pode lidar com 10.000 solicitações por segundo durante horários de pico.
  • Taxas de ingestão de dados de 5 TB por dia sem degradação.

SLOs de capacidade e uso

  • O uso do disco em sistemas críticos permanece sempre abaixo de 80%.
  • Não mais que 70% do uso total de RAM em qualquer instância de serviço.

SLOs de integridade e consistência de dados:

  • A replicação de dados entre clusters é concluída em 5 minutos.
  • Menos de 0,01% de inconsistência de dados entre sistemas de armazenamento primário e secundário.

SLOs de durabilidade:

  • 99,9999999% (nove 9) de durabilidade dos dados ao longo de um ano.
  • Restauração de backup bem-sucedida em 99,5% das vezes.

SLOs de gerenciamento e implantação de mudanças:

  • 98% das implantações ocorrem sem reversão.
  • 99% das mudanças não resultam em interrupções não planejadas.

Como definir SLOs

Definir os SLOs certos é um processo estratégico, mas quando feito corretamente, melhora a confiabilidade do serviço e cria uma experiência incrível para o cliente. Esse processo começa com a compreensão das expectativas e necessidades dos seus usuários. Você vai querer envolver todas as partes interessadas, incluindo, mas não se limitando a clientes e equipes internas para obter insights sobre o que é crítico para o desempenho e a confiabilidade do seu aplicativo. Feito isso, você desejará analisar o desempenho histórico do seu sistema para entender seu comportamento atual e identificar quaisquer problemas recorrentes ou áreas de preocupação. Essas informações permitirá que você defina indicadores específicos e mensuráveis que representem verdadeiramente a integridade do serviço, como latência, taxa de erro ou tempo de operação. Assim que esses indicadores estiverem em vigor, defina seus objetivos-alvo. Eles devem ser desafiadores, mas alcançáveis e alinhados com seus objetivos de negócios mais amplos. 

Lembre-se de que os SLOs devem ser revisados e possivelmente ajustados periodicamente para refletir mudanças nas expectativas dos usuários, no comportamento do sistema ou nas prioridades de negócios. Além disso, é essencial encontrar um equilíbrio: embora a alta confiabilidade seja crucial, SLOs excessivamente rigorosos podem impedir a agilidade e a inovação. Ferramentas colaborativas e plataformas de observabilidade como a New Relic podem ajudar no monitoramento e ajuste contínuos de SLOs à medida que seu sistema e negócios evoluem.

O que acontece se os SLOs não forem cumpridos consistentemente?

Se os SLOs não forem cumpridos de forma consistente, isso poderá indicar problemas subjacentes no serviço. As equipes devem realizar análises de causa raiz para identificar problemas e trabalhar em melhorias. Para SLAs, a falta de SLOs pode resultar em penalidades ou outras consequências definidas no contrato.

Como você pode equilibrar a definição de SLOs agressivos e realistas?

Encontrar um equilíbrio envolve compreender as expectativas do usuário e os recursos técnicos do seu sistema. É crucial envolver as partes interessadas, tanto do lado comercial como técnico, para definir SLOs que sejam desafiadores, mas viáveis.

O que são SLIs?

SLIs são medidas quantitativas de como os usuários experimentam a disponibilidade de um sistema. Eles representam uma proporção de resultados bem-sucedidos para um nível de serviço, expressos como uma porcentagem. 

Esses indicadores de nível de serviço são descritos em relação aos SLOs, mas os SLIs fornecem sinais em tempo real sobre a confiabilidade do sistema. Os SLIs podem medir a proporção de solicitações que foram mais rápidas que um limite ou a proporção de registros que entram em um pipeline que resultam na saída do valor correto. Conforme descrito no exemplo anterior, o SLI mede a proporção de vídeos no site que começam a ser reproduzidos em menos de 2 segundos. Você pode saber a que distância está do objetivo no SLO.

Exemplos de SLIs

Os SLIs servem como base sobre a qual os SLOs e SLAs se baseiam. Vejamos alguns exemplos.

Disponibilidade/tempo de operação

  • Porcentagem de solicitações bem-sucedidas versus total de solicitações.
  • Proporção entre o tempo de operação do sistema e o período de tempo total.

Latência

  • Tempo necessário para uma solicitação de API retornar uma resposta.
  • Tempo necessário para uma página da web carregar para o usuário final.

Taxas de transferência

  • Número de solicitações tratadas por segundo.
  • Volume de dados processados dentro de um período de tempo específico.

Taxa de erros

  • Porcentagem de solicitações com falha versus total de solicitações.
  • Número de códigos de status HTTP 4xx ou 5xx retornados.

Saturação

  • Porcentagem de utilização de recursos, como CPU ou RAM.
  • Quantidade de armazenamento usado em relação ao armazenamento total disponível.

Cobertura

  • Porcentagem de usuários que recebem uma atualização de novo recurso em um determinado período.
  • Proporção de respostas armazenadas em cache versus total de respostas entregues.

Frescor

  • Idade dos dados que estão sendo lidos em relação a quando foram gravados.
  • Tempo necessário para replicação de dados em vários bancos de dados ou sistemas.

Capacidade o sistema pode manipular sem degradação.

  • Número máximo de usuários ou sessões que o sistema pode controlar simultaneamente.
  • Volume máximo de dados que o sistema pode manipular sem degradação.

Como você escolhe SLIs apropriados para um serviço?

Os SLIs devem ser escolhidos com base no que é mais importante para os usuários/clientes. SLIs comuns incluem latência, taxas de erro, rendimento e disponibilidade. É essencial compreender as expectativas dos usuários e as prioridades do negócio.

Como você mede SLIs com precisão?

A medição precisa muitas vezes requer a implementação de sistemas de monitoramento e registro. Use ferramentas que capturem pontos de dados relevantes e forneçam insights sobre SLIs. Valide e calibre regularmente os sistemas de medição para garantir a precisão.

O que são SLAs?

Os SLAs definem o nível de serviço que seus clientes esperam quando usam seu serviço.

Esses acordos de nível de serviço são contratos entre provedores de serviço e seus clientes que documentam quais serviços o prestador fornecerá e definem os padrões de serviço que o prestador é obrigado a cumprir. Os SLAs descrevem soluções ou penalidades como resultados da violação dos compromissos do SLO.

No exemplo anterior, o SLA incluirá todos os SLOs do aplicativo Web, bem como o escopo dos serviços que serão cobertos, e todos os SLIs, que são as métricas que serão usadas para medir o desempenho em relação aos SLOs. O acordo também inclui as responsabilidades do provedor de serviço e do cliente.Aqui estão mais exemplos de SLIs que medem a experiência do usuário em tempo real, em comparação com SLOs:

Aqui estão mais exemplos de SLIs que medem a experiência do usuário em tempo real, em comparação com SLOs:

SLIs, SLOs e SLAs são cruciais para a observabilidade. Comece hoje mesmo com os níveis de serviço da New Relic.

Quem usa níveis de serviço, SLOs, SLIs e SLAs?

Equipes SRE, engenheiros de confiabilidade e equipes multifuncionais muitas vezes lutam para definir e medir a “confiabilidade" do serviço. As equipes multifuncionais precisam criar uma visão agregada e abrangente de métricas importantes para todos os aspectos de um serviço ou sistema para que possam medir facilmente o tempo de operação e o desempenho.

Os níveis de serviço entram em ação para ajudar as equipes de SRE e os engenheiros de confiabilidade a identificar componentes críticos de seus aplicativos e infraestrutura. Em particular, eles precisam saber quando um ou mais componentes expõem funcionalidades a clientes externos. Chamamos esses pontos de intersecção de limites do sistema. Os limites do sistema são onde os engenheiros de confiabilidade do site precisam aplicar indicadores e objetivos de nível de serviço às suas métricas para contar a história real do desempenho e da confiabilidade do sistema

É preciso muito esforço e reflexão para estabelecer limites de serviço e determinar quais métricas precisam ser SLIs e quais devem ser os requisitos de conformidade do SLO. Essa complexidade muitas vezes resulta no abandono total do esforço pelas equipes. Os engenheiros de confiabilidade e as equipes de SRE precisam de SLIs e SLOs precisos e personalizados com base no desempenho histórico do sistema para que possam definir rapidamente uma linha de base para disponibilidade e tempo de atividade em toda a pilha, para todas as suas equipes.

Embora as equipes de SRE e os engenheiros de confiabilidade nem sempre sejam responsáveis pelo gerenciamento dos níveis de serviço, muitas vezes isso está sob sua alçada. Ao rastrear SLIs e vinculá-los a SLOs, você pode definir metas em torno do desempenho de um sistema. O livro SRE do Google define os quatro sinais dourados dos níveis de serviço como latência, tráfego, erros e saturação. Assim, por exemplo, você poderia observar uma chamada de API e rastrear seu número de solicitações bem-sucedidas/com falha (o SLI) em relação a uma porcentagem geral de solicitações (o SLO, por exemplo, 95%) que precisam ser bem-sucedidas para que os clientes tenham um boa experiencia. 

As equipes de SRE geralmente definem SLOs rígidos para componentes críticos em seus aplicativos e serviços para entender melhor o quão rigoroso é o SLA com o qual podem concordar com os clientes. A partir daqui, a equipe pode aplicar orçamentos de erros como forma de entender a rapidez com que devem resolver os problemas para permanecerem em conformidade com seus SLOs. Os níveis de serviço permitem que as equipes agreguem métricas e criem uma visão transparente do tempo de operação, desempenho e confiabilidade em toda a organização. Num relance, os líderes empresariais podem usar níveis de serviço para monitorar a conformidade em diversas equipes, aplicações, serviços, etc., para obter uma compreensão abrangente da integridade de seus sistemas.

O que é gerenciamento de nível de serviço?

Gerenciamento de nível de serviço significa garantir que todos os seus processos e acordos operacionais para o nível de seus serviços prestados aos clientes sejam apropriados. Inclui monitoramento e relatórios sobre níveis de serviço, definição e ajuste de SLOs, determinação de SLIs, garantia de que você está cumprindo os SLAs, e manter avaliações de clientes. 

O foco central é realmente o significado compartilhado de “disponibilidade” entre as equipes, em seus SLOs, também capturado nos SLAs com seus clientes. Para garantir que sua empresa cumpra ou exceda esses acordos de nível de serviço, é importante que as equipes multifuncionais gerenciem SLOs internos.

O próximo vídeo mostra como as equipes podem usar o gerenciamento de nível de serviço com a New Relic.

Benefícios do gerenciamento de nível de serviço

Implementar as melhores práticas de SLO entre as equipes não é fácil. Você precisa dos dados certos para definir uma linguagem compartilhada entre as equipes.

Os engenheiros de confiabilidade precisam definir rapidamente uma linha de base para disponibilidade e tempo de operação para toda a pilha e equipe. Você precisa de SLOs e SLIs para determinar os limites do serviço e de uma visão unificada e transparente da confiabilidade do serviço para melhor cumprir os SLAs voltados ao cliente. Você precisa ser capaz de gerar relatórios sobre métricas de confiabilidade e conformidade de SLO e orçamentos de erros para poder fazer melhorias em seu ambiente.

Ao ter boas práticas para SLIs, SLOs e SLAs e uma plataforma para gerenciamento de nível de serviço, você verá estes benefícios:

  • Configuração fácil: Estabeleça automaticamente uma linha de base de desempenho e confiabilidade para qualquer serviço com uma configuração com um clique e recomendações e personalizações fornecidas em um fluxo simples e guiado.
  • Defina a confiabilidade entre as equipes: evite processos árduos de alinhamento com recomendações de SLO e SLI que ajudam a determinar os limites do serviço. o recentes em qualquer entidade. Defina benchmarks de confiabilidade automaticamente com base em métricas de desempenho
  • Iterar e melhorar: com contexto de pilha completa e automação por meio de ferramentas de infraestrutura como código de código aberto, como o Terraform, as equipes têm insights sobre como nós ou serviços específicos impactam a confiabilidade do sistema e podem assumir rapidamente o controle sobre seu desempenho. Visualizações personalizadas para proprietários de serviços e líderes de negócios impulsionam a eficiência operacional e levam a melhores processos de relatórios, alertas e gerenciamento de incidentes.
  • Padronize a confiabilidade: as equipes interorganizacionais têm uma visão unificada e transparente da confiabilidade do serviço e podem cumprir melhor os SLAs voltados para o cliente, evitando violações de SLA. As métricas de conformidade de SLO e os orçamentos de erros oferecem às organizações uma maneira de relatar a confiabilidade e implementar mudanças em aplicativos, infraestrutura e equipes de maneira coesa.

Para obter mais dicas, leia nossas postagens no blog, Práticas recomendadas para definir SLOs e SLIs para sistemas modernos e complexos e Apresentando o gerenciamento de nível de serviço.