O que é observability?
A capacidade de observação fornece visibilidade profunda em aplicativos modernos distribuídos para identificação e resolução de problemas mais rápidas e automatizadas.
O que é observability?
Em geral, observabilidade é a extensão em que você pode compreender o estado ou condição interna de um sistema complexo com base apenas no conhecimento das suas saídas externas. Quanto mais observável um sistema, mais rápido e precisamente você pode navegar de um problema de desempenho identificado até a sua causa raiz, sem testes ou codificação adicionais.
Na computação em nuvem, observabilidade também se refere a ferramentas de software e práticas para agregar, correlacionar e analisar um fluxo constante de dados de desempenho de um aplicativo distribuído e do hardware em que é executado, a fim de monitorar, solucionar problemas e depurar o aplicativo de forma mais eficaz para atender as expectativas de experiência do cliente, acordos de nível de serviço (SLAs) e outros requisitos dos negócios.
Um tópico de TI relativamente novo, a observabilidade costuma ser caracterizada erroneamente como uma palavra da moda ou uma ‘reformulação’ do monitoramento do sistema no geral e do monitoramento do desempenho do aplicativo (APM – application performance monitoring) em particular. Na verdade, a capacidade de observação é uma evolução natural dos métodos de coleta de dados APM que abordam melhor a natureza cada vez mais rápida, distribuída e dinâmica das implantações de aplicativos nativos da nuvem. A capacidade de observação não substitui o monitoramento – ela permite um melhor monitoramento e melhor APM.
O termo ‘observabilidade’ vem da teoria de controle, uma área da engenharia preocupada em automatizar o controle de um sistema dinâmico – por exemplo, o fluxo de água através de um tubo ou a velocidade de um automóvel em declives e inclinações – com base no feedback do sistema.
Por que precisamos da observabilidade?
Nos últimos 20 anos ou mais, as equipes de TI confiaram principalmente no APM para monitorar e solucionar problemas de aplicativos. O APM coleta amostras e agrega dados do aplicativo e do sistema periodicamente, chamados de telemetria, que são conhecidos por estarem relacionados a problemas de desempenho do aplicativo. Ele analisa a telemetria relativa aos principais indicadores de desempenho (KPIs – key performance indicators) e reúne os resultados em um painel para alertar as operações e equipes de suporte sobre condições anormais que devem ser tratadas para resolver ou prevenir problemas.
O APM é eficaz o suficiente para monitorar e solucionar problemas de aplicativos monolíticos ou aplicativos tradicionais distribuídos, onde novos códigos são lançados periodicamente e fluxos de trabalho e dependências entre componentes de aplicativos, servidores e recursos relacionados são bem conhecidos ou fáceis de rastrear.
Mas hoje as organizações estão adotando rapidamente práticas de desenvolvimento modernas – desenvolvimento ágil, integração contínua e implantação contínua (CI / CD – Continuous Integration / Continuous Deployment), DevOps, várias linguagens de programação – e tecnologias nativas da nuvem, como micro serviços, contêineres Docker, Kubernetes e funções sem servidor. Como resultado, eles estão trazendo mais serviços ao mercado, mais rápido do que nunca. Mas, no processo, eles estão implantando novos componentes de aplicativo com tanta frequência, em tantos lugares, em tantas linguagens diferentes e por períodos de tempo tão variados (por segundos ou frações de segundo, no caso de funções sem servidor) que os APMs de amostragem de dados uma vez por minuto não conseguem acompanhar o ritmo.
O que é necessário é uma telemetria de alta qualidade – e muito mais – que pode ser usada para criar um registro de alta fidelidade, rico em contexto e totalmente correlacionado de cada solicitação ou transação do usuário do aplicativo. Insira a observabilidade.
Como funciona a observabilidade?
As plataformas de observabilidade descobrem e coletam telemetria de desempenho continuamente integrando-se à instrumentação existente embutida nos componentes de aplicativos e infraestrutura e fornecendo ferramentas para adicionar instrumentação a esses componentes. A observabilidade se concentra em quatro tipos principais de telemetria:
- Logs. Logs são registros granulares, com carimbo de data / hora, completos e imutáveis de eventos de aplicativos. Entre outras coisas, os logs podem ser usados para criar um registro de alta fidelidade, milissegundo por milissegundo, de cada evento, completo com o contexto circundante, que os desenvolvedores podem ‘reproduzir’ para fins de solução de problemas e depuração.
- Métricas. As métricas (às vezes chamadas de métricas de série temporal) são medidas fundamentais da integridade do aplicativo e do sistema durante um determinado período de tempo, como quanta memória ou capacidade de CPU um aplicativo usa em um intervalo de cinco minutos ou quanta latência um aplicativo experimenta durante um pico no uso.
- Rastreamento. Os rastreamentos registram a ‘jornada’ ponta a ponta de cada solicitação do usuário, desde a interface do usuário ou aplicativo móvel por meio de toda a arquitetura distribuída e de volta ao usuário.
- Dependências (também chamadas de mapas de dependência) revelam como cada componente do aplicativo depende de outros componentes, aplicativos e recursos de TI.
Depois de coletar essa telemetria, a plataforma a correlaciona em tempo real para fornecer às equipes de DevOps, equipes de engenharia de confiabilidade do local (SREs) e equipe de TI informações contextuais completas – o quê, onde e por que de qualquer evento que poderia indicar, causar ou ser usado para resolver um problema de desempenho do aplicativo.
Muitas plataformas de observabilidade descobrem automaticamente novas fontes de telemetria à medida que podem surgir no sistema (como uma nova chamada de API para outro aplicativo de software). E porque lidam com muito mais dados do que uma solução APM padrão, muitas plataformas incluem recursos AIOps (inteligência artificial para operações – artificial intelligence for operations) que filtram os sinais – indicações de problemas reais – de ruído (dados não relacionados a problemas).
Benefícios da Observabilidade
O benefício abrangente da observabilidade é que, com todas as outras coisas sendo iguais, um sistema mais observável é mais fácil de entender (em geral e em grandes detalhes), mais fácil de monitorar, mais fácil e seguro de atualizar com o novo código e mais fácil de reparar do que um sistema menos observável. Mais especificamente, a capacidade de observação oferece suporte direto às metas Agile / DevOps / SRE de fornecer software de alta qualidade mais rápido, permitindo que uma organização:
- Descubra e resolva ‘desconhecidos desconhecidos’– questões que você não sabe que existem. A principal limitação das ferramentas de monitoramento é que elas observam apenas ‘desconhecidos conhecidos’ – condições excepcionais que você já conhece para observar. A capacidade de observação descobre condições que você talvez nunca saiba ou pense em procurar e, em seguida, rastreia a sua relação com problemas de desempenho específicos e fornece o contexto para identificar as causas básicas para acelerar a resolução.
- Identifique e resolva problemas no início do desenvolvimento. A capacidade de observação leva o monitoramento às fases iniciais do processo de desenvolvimento de software. As equipes de DevOps podem identificar e corrigir problemas no novo código antes que afetem a experiência do cliente ou os SLAs.
- Dimensione a observabilidade automaticamente. Por exemplo, você pode especificar a instrumentação e a agregação de dados como parte de uma configuração de cluster do Kubernetes e começar a reunir telemetria a partir do momento em que ela aumenta até diminuir.
- Ative a correção automatizada e a infraestrutura de aplicativos de autocorreção. Combine observabilidade com recursos de automação e aprendizado de máquina AIOps para prever problemas com base nas saídas do sistema e resolvê-los sem intervenção do gerenciamento.
Referencia: https://www.ibm.com/cloud/learn/observability