fbpx

Disponibilidade, sustentabilidade, confiabilidade: qual é a diferença?

Compartilhar no facebook
Compartilhar no linkedin
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no telegram

Vivemos em uma era de confiabilidade, em que os usuários dependem de um acesso consistente aos serviços.

Ao escolher entre serviços concorrentes, nenhum recurso é mais importante para os usuários do que a confiabilidade.

Mas o que significa confiabilidade?

Para responder a esta pergunta, vamos dividir a confiabilidade em termos de outras métricas dentro da engenharia de confiabilidade: disponibilidade e facilidade de manutenção.

Distinguir esses termos não é uma questão de semântica. Compreender as diferenças pode ajudá-lo a priorizar melhor os esforços de desenvolvimento para a felicidade do cliente.

Disponibilidade

A disponibilidade é o bloco de construção mais simples de confiabilidade.

Esta métrica descreve a porcentagem de tempo em que o serviço está funcionando.

Isso também é conhecido como “tempo de atividade” de um serviço. A disponibilidade pode ser monitorada consultando continuamente o serviço e confirmando o retorno das respostas com a velocidade e precisão esperadas.

A disponibilidade de um serviço é um componente importante na forma como o usuário percebe a confiabilidade.

Com isso em mente, pode ser tentador definir uma meta de 100% de disponibilidade.

Mas SRE nos ensina que o fracasso é inevitável; incidentes que causam tempo de inatividade sempre ocorrerão fora das expectativas da engenharia.

A disponibilidade é geralmente expressa em “noves”, representando quantos casas decimais a porcentagem de tempo de atividade pode atingir.

Algumas grandes empresas de software irão se orgulhar de “cinco noves” ou 99,999% de tempo de atividade – mas nunca 100%

Além disso, os usuários irão tolerar ou mesmo deixar de notar o tempo de inatividade em algumas áreas do seu serviço.

Recursos de desenvolvimento dedicados a melhorar a disponibilidade além das expectativas não aumentam a felicidade do cliente. A capacidade de manutenção do seu serviço pode precisar desses recursos.

Capacidade de Manutenção

Outro elemento importante da confiabilidade é a facilidade de manutenção.

Fatores de sustentabilidade em disponibilidade, descrevendo como o tempo de inatividade se origina e é resolvido.

Quando ocorre um incidente que causa paralisação, os serviços de manutenção podem ser reparados rapidamente. Quanto mais cedo o incidente for resolvido, mais cedo o serviço estará disponível novamente.

Existem dois componentes principais de manutenção: proativo e reativo.

A manutenção proativa envolve a construção de uma base de código que pode ser facilmente compreendida e alterada. Conforme o desenvolvimento avança, surgirão problemas de incompatibilidade com o código existente. Se os engenheiros estiverem escrevendo “código espaguete” em vez de priorizar a capacidade de manutenção, é provável que ocorram problemas e sejam difíceis de encontrar e resolver. A manutenção proativa também inclui procedimentos como garantia de qualidade e testes.

A manutenção reativa descreve a capacidade de um serviço de ser reparado após incidentes. Isso é influenciado pelos procedimentos de resposta a incidentes de um serviço. Como os incidentes são inevitáveis, uma ótima resposta a incidentes e grades de proteção são uma necessidade. Se os procedimentos de resposta a incidentes forem confiáveis, as equipes resolverão os incidentes rapidamente. Respostas adequadas a incidentes também promovem o aprendizado para reduzir a recorrência. Um serviço de alta manutenção permite que os engenheiros implementem essas lições de maneira eficaz

A capacidade de manutenção é refletida nas métricas de disponibilidade.

A redução do tempo de inatividade em duração ou frequência resulta em maior disponibilidade. Mas, a manutenção não é apenas um meio para um fim para a disponibilidade. Essa abordagem pode resultar em recursos de desenvolvimento mal alocados. Investir em capacidade de manutenção pode não resultar imediatamente em melhor tempo de atividade.

Ao refatorar o código antigo para resolver o débito técnico, o serviço funcionará da mesma forma que antes, com a mesma disponibilidade. Somente após a ocorrência de incidentes é que você verá os benefícios dessa maior facilidade de manutenção. A capacidade de manutenção deve ser considerada um investimento em confiabilidade, e não apenas um componente de disponibilidade.

Confiabilidade

A confiabilidade pode ser definida como a probabilidade de um serviço funcionar conforme o esperado quando acessado por um usuário.

Isso pode parecer idêntico a como definimos a disponibilidade, mas existem diferenças importantes.

A disponibilidade verifica se o serviço está funcionando, se um usuário está acessando-o ou não.

Se os usuários acessassem o serviço uniformemente em todos os recursos e em todos os momentos, a disponibilidade determinaria a confiabilidade. Geralmente, esse nunca é o caso. Considere dois serviços:

Serviço A:
A página de logon do usuário tem 97% de disponibilidade
A pesquisa de catálogo tem 97% de disponibilidade
A página de configurações do site tem 97% de disponibilidade

Serviço B:
A página de login do usuário tem 99% de disponibilidade
A pesquisa de catálogo tem 98% de disponibilidade
A página de configurações do site tem 90% de disponibilidade

Apenas olhando para a métrica de disponibilidade, o Serviço A vence.

Mas se a página de logon for usada por 100% dos usuários, a pesquisa no catálogo por 90% dos usuários e a página de configurações do site por apenas 30% dos usuários, o Serviço B será percebido como mais confiável.

A confiabilidade é responsável pelo uso real, convertendo as métricas de disponibilidade em uma medida da felicidade do cliente.

Ao compreender a confiabilidade de um sistema, o desenvolvimento pode evitar a perda de tempo, melhorando a disponibilidade além do que o cliente pode apreciar.

Os indicadores de nível de serviço agrupam métricas como latência e disponibilidade em uma medição mais impactante.

Então, os objetivos de nível de serviço podem ser definidos no limite para que os clientes fiquem insatisfeitos. Essa abordagem analisa a confiabilidade da perspectiva dos clientes. Como eles percebem a confiabilidade do serviço é mais importante do que sua disponibilidade.

A capacidade de manutenção também pode ser avaliada por meio dessa lente.

O tempo gasto respondendo a incidentes drena o orçamento de erro de um serviço para tempo de atividade … SLIs e SLOs podem ajudar a alocar esforços de desenvolvimento para melhorar a capacidade de manutenção e procedimentos de resposta a incidentes que mais impactam a felicidade do cliente.

Confiabilidade não é apenas uma coleção de métricas ou uma qualidade de sua base de código.

É um conceito amplo, incorporando a perspectiva dos usuários, a inevitabilidade da mudança e do crescimento, e os humanos desenvolvendo seu código. Essa abordagem holística é a base do SRE, um conjunto de práticas e lições culturais que aprimoram a confiabilidade do seu serviço.