Observabilidade é coletar, visualizar e aplicar proativamente inteligência a todas as suas métricas, eventos, logs e traces, para que você possa entender o comportamento de seu sistema digital complexo.
Um modo simples de descrever a observabilidade é quão bem você consegue entender o sistema pelo trabalho que ele faz. Em teoria de controle, a observabilidade é definida como o modo pelo qual os engenheiros conseguem inferir os estados internos de um sistema usando o conhecimento das saídas externas dele. Em TI, software e computação em nuvem, a observabilidade é o modo como os engenheiros conseguem entendem o estado atual de um sistema a partir dos dados gerados por ele. Para entender isso completamente, você precisa coletar proativamente os dados certos e, em seguida, visualizá-los e aplicar inteligência.
Uma abreviação comum para observabilidade é o11y, que substitui as 11 letras entre o "o" e o "y" pelo número 11 (do inglês, observability). Uma curiosidade: é por isso que usamos k8s para Kubernetes.
A observabilidade proporciona aos engenheiros uma abordagem proativa para otimizar os sistemas. Ela fornece uma vista conectada e em tempo real de todos os dados operacionais em seu sistema de software, bem como a flexibilidade para fazer perguntas na hora sobre seus aplicativos e infraestrutura para obter as respostas de que precisa.
Por que a observabilidade é importante?
Os sistemas modernos atuais estão se transformando em microsserviços complexos, nativos na nuvem e de código aberto que são executados em clusters do Kubernetes. Eles estão sendo desenvolvidos e implantados mais rapidamente do que nunca e por equipes distribuídas. Com DevOps, entrega contínua e desenvolvimento ágil, todo o processo de entrega de software está mais rápido, o que pode tornar mais difícil a detecção de problemas assim que surgirem.
Quando algo dava errado na época dos mainframes e das operações estáticas, era fácil entender o motivo, e os dashboards estáticos pré-configurados alertavam os operadores sobre os problemas. Esses sistemas falhavam de maneiras similares repetidas vezes.
À medida que os sistemas se tornaram mais complexos, as ferramentas de monitoramento tentaram elucidar o que estava acontecendo com o desempenho dos softwares. Era possível acompanhar o desempenho do aplicativo com dados de monitoramento e análise de série temporal. Era um processo gerenciável.
Atualmente, as causas possíveis de falha são numerosas e podem parecer infinitas quando você está olhando para uma tela, frustrado. Algum sistema parou de funcionar? Algum servidor de nuvem está passando por uma interrupção? Alguém inseriu um código novo que está afetando o comportamento do usuário final?
Ao trabalhar nesses sistemas distribuídos complexos, identificar um link corrompido na cadeia pode ser quase impossível sem uma solução de observabilidade. Agora que as arquiteturas de microsserviços são algo comum, as responsabilidades são distribuídas entre equipes. Não há um único proprietário de aplicativo, e muitas equipes precisam ser envolvidas. As equipes precisam entender, analisar e resolver problemas em áreas de aplicativos dos quais elas não são necessariamente proprietárias. Você precisa de trace distribuído, que permite acompanhar solicitações e gargalos por todas as partes de um sistema distribuído.
Observabilidade versus monitoramento
O monitoramento convencional não ajudará você a ter êxito no mundo complexo dos microsserviços e dos sistemas distribuídos. Ele só consegue acompanhar o que é desconhecido, mas conhecido. São as perguntas que você sabe fazer com antecedência, por exemplo: "Qual a taxa de transferência do meu aplicativo?", "Como é a capacidade de computação?", "Alerte-me quando eu exceder um determinado orçamento de erro". A observabilidade proporciona a você a capacidade de não apenas saber que algo está errado, mas também entender o porquê. Ela possibilita a flexibilidade de entender padrões que você nem mesmo tinha pensado antes, os desconhecidos conhecidos.
Pense deste modo: observabilidade (substantivo) é a abordagem do quanto você entende seu sistema complexo. Monitorar (verbo) é uma ação que você realiza para ajudar nessa abordagem. A observabilidade não elimina a necessidade de monitoramento. O monitoramento apenas se torna uma das técnicas usadas para alcançar a observabilidade.
O monitoramento do desempenho de aplicativos (APM) é uma das etapas em uma prática de observabilidade equilibrada que usa dashboards e alertas para falhas conhecidas e esperadas. Para saber por que é importante ter o APM como parte de sua prática de observabilidade, confira APM versus observabilidade.
Quais são os componentes da observabilidade?
A observabilidade em sistemas digitais conta com quatro partes fundamentais:
- Instrumentação aberta. Instrumentação é usar código (agentes) para acompanhar e mensurar dados que passam pelo seu aplicativo de software. Instrumentação aberta significa reunir dados de telemetria de entidades de código aberto ou específicas do fornecedor que produzem esses dados. Exemplos de dados de telemetria incluem métricas, eventos, logs e traces, que normalmente são chamados de MELT. Exemplos de entidades incluem serviços, hosts, aplicativos e contêiners.
- Correlação e contexto. Ter uma visão global é fundamental, especialmente para grandes aplicativos corporativos com muitos dados brutos de telemetria. Os dados de telemetria coletados devem ser analisados quanto a correlações e contexto, para que possamos entender padrões e anomalias que surgirem.
- Programabilidade. As organizações precisam de flexibilidade para criar seu próprio contexto e curadoria com aplicativos personalizados com base em seus objetivos de negócios únicos.
- Ferramentas de AIOps. Para garantir que sua infraestrutura moderna esteja sempre disponível, é necessário acelerar a resposta a incidentes. As soluções de AIOps usam modelos de machine learning para automatizar processos de operações de TI, como correlação, agregação e priorização de dados de incidentes. Essas ferramentas ajudam você a eliminar alarmes falsos, detectar problemas proativamente, bem como acelerar o tempo médio de resolução (MTTR).
Quais são os benefícios da observabilidade?
As ferramentas de observabilidade capacitam engenheiros e desenvolvedores a criar melhores experiências dos clientes, apesar da crescente complexidade das operações digitais. Com a observabilidade, é possível coletar, explorar, alertar e correlacionar todos os tipos de dados de telemetria.
A observabilidade facilita a obtenção de eficiências operacionais e também ajuda a fomentar a inovação e o crescimento. Por exemplo, uma equipe pode usar uma plataforma de observabilidade para entender incidentes críticos ocorridos e proativamente evitar que aconteçam novamente. Isso diminui o período de inatividade e melhora o MTTR.
Quando um build é produzido, a equipe pode olhar para o desempenho do aplicativo e analisar os motivos pelos quais uma taxa de erros aumenta ou a latência do aplicativo se eleva. É possível ver qual nó específico apresenta o problema. Para mais exemplos, organizados em 10 princípios de observabilidade, confira Observabilidade: um manifesto do século XXI.
Outros benefícios da observabilidade incluem:
- Uma fonte única da verdade para dados operacionais.
- Desempenho e tempo de operação verificados.
- Entendimento sobre as flutuações em tempo real do desempenho de seus negócios digitais.
- Melhor colaboração entre equipes para resolver problemas mais rapidamente.
- Uma cultura de inovação.
- Melhor eficiência operacional para produzir software de alta qualidade em larga escala, acelerando o tempo de comercialização.
- Detalhes específicos para tomar melhores decisões de negócios direcionadas por dados, bem como otimizar investimentos.
De acordo com a previsão de observabilidade de 2022 , quase metade dos mais de 1.600 entrevistados citaram maior foco na segurança, governança, risco e conformidade como a principal tendência que direciona as necessidades de observabilidade de suas organizações. Outros determinantes incluem desenvolvimento de arquiteturas de aplicativo nativo na nuvem (front-end), maior foco no gerenciamento de experiência do cliente e migração para um ambiente de nuvens múltiplas (back-end).
Além disso, ainda de acordo com o relatório, somente 2% dos entrevistados indicaram que suas organizações usaram todas as 15 características da prática de observabilidade madura, que incluem instrumentação automatizada, partes automatizadas da resposta a incidentes, infraestrutura que é provisionada e orquestrada usando ferramentas de automação, telemetria capturada em todo o stack, bem como telemetria (métricas, eventos, logs e traces) unificada em um único painel de consumo entre equipes.
A observabilidade é essencial, mas ainda há muito para a maioria das empresas melhorar.
Quem usa observabilidade?
As equipes de SRE e operações de TI são responsáveis por manter os sistemas complexos, ou seja, os aplicativos dos quais as pessoas dependem todos os dias, em funcionamento. Entretanto, a observabilidade é uma preocupação de todos durante todo o ciclo de vida de desenvolvimento de software.
As equipes de engenharia de software usam observabilidade para entender a saúde, o desempenho e o status dos sistemas de software, incluindo quando e por que o erro ocorreu. Ao ver as saídas de um sistema, como eventos, métricas, logs e traces, os engenheiros podem determinar quão boa está a execução do sistema.
Observabilidade e DevOps
A frequência da implantação aumentou muito com os microsserviços. Muita coisa está mudando, por isso, não é realista esperar que as equipes predefinam todos os modos de falha possíveis em seus ambientes. Não é apenas o código do aplicativo, mas a infraestrutura que dá suporte a ele, bem como a demanda e o comportamento do consumidor.
A observabilidade proporciona às equipes de DevOps a flexibilidade de que precisam para testar seus sistemas em produção, fazer perguntas e investigar problemas que poderiam ter originalmente previsto.
A observabilidade ajuda as equipes de DevOps a:
- Estabelecer objetivos de nível de serviço (SLOs) claros e colocar a instrumentação em funcionamento para preparar e reunir forças em direção ao sucesso mensurável.
- Dar suporte aos dashboards de equipe, gerenciar respostas e mensurar os efeitos de todas as mudanças para aprimorar as práticas de DevOps.
- Revisar o progresso, analisar as dependências de aplicativo e os recursos de infraestrutura, bem como encontrar modos de aprimorar continuamente a experiência para os usuários de seus softwares.
Para conhecer as práticas recomendadas de DevOps, confira o e-book DevOps do jeito certo.
Comece a usar a observabilidade. Experimente já o New Relic.
A observabilidade moderna capacita engenheiros de software e desenvolvedores com uma abordagem orientada por dados em todo o ciclo de vida do software. Ela reúne toda a telemetria — eventos, métricas, logs e traces — em uma plataforma de dados unificada, com ferramentas robustas de análise full-stack que melhoram o planejamento, o desenvolvimento, a implantação e a execução de softwares para criar experiências digitais superiores que impulsionam a inovação e o crescimento.
Leia a previsão de observabilidade de 2022 para conhecer os insights e as práticas recomendadas descobertos na pesquisa.
O melhor modo de saber mais sobre observabilidade é ter experiência prática com uma plataforma de observabilidade unificada e moderna. Comece a usar o New Relic.
As opiniões expressas neste blog são de responsabilidade do autor e não refletem necessariamente as opiniões da New Relic. Todas as soluções oferecidas pelo autor são específicas do ambiente e não fazem parte das soluções comerciais ou do suporte oferecido pela New Relic. Junte-se a nós exclusivamente no Explorers Hub ( discuss.newrelic.com ) para perguntas e suporte relacionados a esta postagem do blog. Este blog pode conter links para conteúdo de sites de terceiros. Ao fornecer esses links, a New Relic não adota, garante, aprova ou endossa as informações, visualizações ou produtos disponíveis em tais sites.