O que é observabilidade e por que isso é importante?

Gorodenkoff / Shutterstock. com
Observabilidade é uma característica dos sistemas de software que fornecem visibilidade profunda de suas operações internas. Ter uma boa capacidade de observação facilita a resolução mais rápida de problemas, ajudando as equipes de operações a identificar a causa dos problemas.
A definição mais simples de “ observável ” software é um sistema que permite deduzir seu estado interno observando as saídas que ele produz. Se o seu sistema não puder fornecer esses resultados, ele não será totalmente observável.
Considere uma plataforma de software que parece estar funcionando mais lentamente do que o normal. À primeira vista, você não tem informações suficientes para descobrir o que está causando a lentidão. Mas se o sistema emitisse métricas de desempenho para cada estágio de sua execução, você poderia localizar imediatamente o componente com problema. A capacidade de observação do sistema agora foi aprimorada.
Observabilidade não é igual ao monitoramento?
Observabilidade não é o mesmo que monitoramento, embora os dois conceitos sejam relações próximas. Boas práticas de monitoramento contribuem para um sistema observável. Eles não fornecem uma garantia de observabilidade. Por outro lado, um sistema pode ser razoavelmente observável sem uma pilha de monitoramento totalmente desenvolvida.
O monitoramento em termos de DevOps normalmente se refere ao uso de várias métricas predefinidas para identificar quando um sistema está tendo um desempenho dentro das expectativas. As métricas abordadas geralmente ficam vinculadas à utilização de recursos (uso da CPU, taxa de transferência da rede), mas também podem revelar dados básicos sobre as operações do seu sistema (número de solicitações causando um código de erro 500).
Publicidade
A observabilidade é um pouco mais profunda e requer instrumentação com mais nuances. Ao contrário do monitoramento, ele é acoplado ao seu sistema e às suas características, e não ao ambiente ao redor.
Um sistema monitorado informa que a contagem de 500 erros está elevada e os usuários estão tendo problemas. Um sistema observado relata que seu microsserviço de autenticação está expirando, então as sessões de usuário não estão sendo restauradas e seu gateway está emitindo um 500 como último recurso.
RELACIONADO: uma introdução aos princípios DevOps para iniciantes
Como os sistemas se tornam observáveis?
Vamos analisar as diferenças entre os dois exemplos mostrados acima. Em uma abordagem tradicional, você implantaria em seu servidor e configuraria o monitoramento, talvez usando os alertas de métricas do seu provedor de nuvem. Se um problema for detectado, você pode inspecionar os logs do servidor para ver se há problemas.
Este modelo já é observável até certo ponto. O uso moderno de “ observabilidade ” transmite um pouco mais embora. Os logs de erro do servidor normalmente fornecem o resultado final, mas não os estados que causaram sua ocorrência. Para que um sistema seja verdadeiramente observável, você deve ser capaz de determinar a sequência de estados internos que levaram a uma saída específica, sem ter que gastar muito tempo coletando as informações manualmente.
Existem três “ pilares ” principais; de observabilidade, do qual um bom monitoramento é um. Prestar atenção a todos os três pilares deve resultar em um sistema observável que seja uma ajuda eficaz no diagnóstico de problemas.
RELACIONADO: O que é desenvolvimento com baixo código e sem código?
Métricas e monitoramento
Um sistema observável deve fornecer medidas constantes para métricas predefinidas. As melhores métricas são aquelas que apresentam informações acionáveis relevantes para seu aplicativo e seu desempenho, não necessariamente gráficos genéricos de CPU e memória.
Logging
O segundo pilar da observabilidade é o registro. Isso descreve uma abordagem mais estruturada para registro do que uma gravação básica quando ocorre um erro. Os registros devem ser altamente integrados ao seu sistema para que cada evento seja registrado em um serviço de registro centralizado. Os próprios registros devem ser estruturados de maneira padronizada, para que as ferramentas de visualização de registros possam indexá-los automaticamente e formatá-los.
Rastreamento
O pilar final é o rastreamento. Os rastros capturam tudo o que acontece durante uma determinada execução do programa. Isso fornece as informações de que você precisa para reproduzir a seqüência exata de eventos que levaram ao problema. O rastreamento é especialmente importante para sistemas distribuídos em que uma única solicitação pode atingir uma dúzia ou mais de microsserviços. Depender apenas dos registros de serviço não é realista, pois você não conseguirá ver o que aconteceu com a solicitação depois que ela terminou com cada serviço. Um rastreamento de nível de solicitação é mais eficaz para localizar problemas.
Você pode começar a tornar um sistema mais observável garantindo que você tenha uma cobertura de todos os três pilares. Lembre-se de que “ observabilidade ” não é uma coisa específica – é uma característica de um sistema, não um único atributo. Provavelmente, seu sistema já está “ observável ” por meio de métricas básicas e registros de erros, mas ainda pode ter baixa “ observabilidade ” se você não conseguir determinar prontamente a causa raiz dos erros.
RELACIONADO: Como o Event Sourcing ajuda você a rastrear o estado do seu aplicativo
A observabilidade interrompe os erros?
É importante notar que a capacidade de observação não tem como objetivo eliminar bugs e erros. Em vez disso, é na verdade uma aceitação de que problemas podem e irão ocorrer. Em vez de presumir que seu sistema é infalível, a capacidade de observação o incentiva a planejar o impensável. Se você enfrentasse uma interrupção, teria as ferramentas de que precisava para encontrar a causa?
Para usar uma analogia de motorização, é a diferença entre uma luz de verificação do motor e o software de diagnóstico do fabricante. Por mais indesejável e improvável que seja, defeitos na estrada acontecem. A maioria das pessoas sem nenhum equipamento especializado vê uma luz de advertência genérica. Um motorista ou técnico dedicado terá as ferramentas para ler a causa daquela luz.
Agora, vamos voltar para a nuvem. Uma tela de métricas vermelhas não ajudará muito durante uma interrupção. Semelhante a como um mecânico de veículo pode ler diagnósticos, seu sistema precisa ser mais profundamente observável para que você possa estabelecer rapidamente o que está errado sem olhar as porcas e parafusos. É importante planejar desastres para não ser pego.
A observabilidade é contínua
Manter uma boa capacidade de observação requer manutenção contínua. Você precisará avaliar sua instrumentação conforme adiciona novos serviços. Caso contrário, você pode involuntariamente criar vazios em seus registros e rastreamentos nos quais as solicitações desaparecem.
Publicidade
Você pode identificar lacunas em sua implementação de observabilidade questionando o sistema e verificando se pode obter as respostas de que precisa. Você deve pensar nas informações de que precisa para começar a resolver um problema. Você conseguiria acessá-lo durante uma interrupção, sem uma intervenção manual prolongada?
Um sistema verdadeiramente observável deve ser capaz de usar um dos três pilares para responder às questões apresentadas pelos outros dois. Por que o uso de memória está na zona de perigo? Por que um erro foi registrado nos registros do serviço de autenticação? Em ambos os casos, os outros dois pilares devem ser sua primeira parada para encontrar a resposta.
Resumo
Observabilidade é uma palavra inventada que às vezes pode parecer vaga e opaca. Na prática, o uso moderno do termo se refere a algo bastante simples: o uníssono de monitoramento, registro e rastreamento para ajudá-lo a inferir o estado interno de um sistema a partir de suas saídas.
Boa observabilidade é vital para arquiteturas distribuídas onde a funcionalidade é espalhada por microsserviços. Um sistema inobservável se torna um buraco negro que suga as solicitações, mas não fornece nada de volta. Isso comprometerá sua capacidade de responder aos problemas e pode fazer com que os usuários relatem problemas antes que você os reconheça.
Por outro lado, um sistema observável ajuda você a ficar à frente dos relatórios de erros. O tempo de resolução é minimizado, pois o sistema já estará esperando com as informações de que você precisa.
Nenhum comentário