Menu
Contato Comercial
Por: Pedro César Tebaldi em 04.07.2019

O que é Observabilidade?

Você já ouviu falar do termo observabilidade? Este é um tema novo em debate, principalmente no contexto de aplicações com arquiteturas de microsserviços e distribuídas em múltiplas nuvens. Além disso, quem utiliza o termo argumenta que a observabilidade é diferente do monitoramento.

Este artigo irá lançar alguma luz sobre este assunto e esperamos trazer alguma clareza e entendimento para você.

 

O que é observalidade?

Segundo a teoria de controle, a observalidade é uma medida que descreve quão bem podem os estados de um sistema ser inferidos a partir do conhecimento de suas saídas externas. A observabilidade e a controlabilidade são conceitos oriundos da matemática e da engenharia e tratam de sistemas.

A utilização do conceito de observabilidade se dá, principalmente, a partir da adoção em escala da nuvem. Embora seja esperado que as aplicações sejam altamente disponíveis e resilientes a falhas em ambos os ambientes (local e na nuvem), os métodos usados para alcançar tais objetivos são distintos.

Aplicativos nativos da nuvem são compostos por microsserviços independentes, tendo suas instâncias de serviços iniciadas ou interrompidas de forma dinâmica. Com isso, a disponibilidade da aplicação se mantém apesar das falhas, embora a performance possa cair e deva ser gerenciada. A consequência disso é que o propósito do monitoramento deixa de ser monitorar para evitar falhas e passa a ser monitorar para gerenciar essas falhas.

Cada entidade de um aplicativo deve ser planejada para produzir dados apropriados para suportar a detecção de problemas e geração de alertas de forma automatizada. Isso inclui também a análise do funcionamento do sistema (análises e tendências históricas).

Atualmente, as arquiteturas de software mais complexas consistem em centenas/milhares de microsserviços que permitem que as equipes façam uma iteração rápida e suportem um crescimento escalável. As equipes responsáveis pela observabilidade criam métricas e alertas para detectar, mitigar e notificar engenheiros sobre problemas no momento em que ocorrem. Leia o case de observabilidade do Uber.

 

Por que a observação de aplicações é importante?

Para executar o processo de CI/CD (continuous integration e continuous delivery) efetivamente, deve haver algum tipo de feedback. Não faz sentido realizar continuamente as mudanças sem saber se elas melhoram ou pioram as coisas.

No ciclo CI/CD de DevOps, a excelência é obtida ao automatizar o máximo possível de atividades deste processo. A parte de monitoramento do ciclo deve fornecer todo o feedback importante que impulsione futuras iterações.

Entretanto, no contexto das aplicações em nuvem, essa tarefa pode se tornar bastante complexa, ou até desnecessária, dependendo da arquitetura utilizada. Aí que a observabilidade pode contribuir com o processo.

 

A relação entre monitoramento e observabilidade

O monitoramento e a observabilidade estão em uma relação simbiótica. Simplificando, a observabilidade é alcançada quando os dados são disponibilizados a partir do sistema que você deseja monitorar. Já monitoramento é a tarefa real de coletar e exibir esses dados.

Depois de ter tornado o sistema observável e de ter coletado os dados usando uma ferramenta de monitoração, é preciso realizar a análise manualmente ou automaticamente. Sem uma análise significativa, não faz sentido a observabilidade e o monitoramento. Quanto melhores forem as suas capacidades de análise, mais valiosos serão os seus investimentos em observabilidade e monitoramento.

Apesar de sua atual popularidade, a observabilidade não é novidade. A criação de logs existe desde o início da programação, tornando a execução de uma aplicação observável ao apresentar mensagens úteis de sua utilização.

É claro que é possível monitorar um ponto de extremidade de serviço, por exemplo, mesmo que ele não se torne observável. Para isso é necessário simplesmente chamá-lo a cada minuto e registrar o sucesso ou a falha. Isso é chamado de “Monitoramento Sintético”.

Alternativamente esse processo também pode ser realizado pela monitoração da experiência do usuário, ao monitorar a disponibilidade e o tempo de resposta de todos os passos de uma aplicação que um usuário precisa executar.

 

Observabilidade de Aplicações Contemporâneas

Nos últimos 20 anos, muitas ferramentas de monitoramento criaram a observabilidade dos servidores de aplicativos. Todo o mercado de APM foi construído em torno do conceito de criação de observabilidade. Inicialmente, todos os dados de observabilidade foram criados usando metodologias manuais, como adicionar chamadas de API ao código ou adicionando nomes de métodos aos arquivos de configuração.

Eventualmente, as ferramentas ficaram muito boas em usar metodologias automatizadas para criar observabilidade em nível de código em aplicativos monolíticos e SOA (arquitetura orientada a serviços).

A entrega moderna de aplicativos mudou para ambientes de CI/CD, conteinerização e microsserviços, criando um novo problema para os fornecedores de APM e para a observabilidade em geral.

O novo software é implantado tão rapidamente, em muitos pequenos componentes, que os criadores de perfis de produção da geração SOA têm dificuldade em manter o ritmo. Eles têm problemas para identificar e conectar dependências entre microsserviços, especialmente no nível de solicitação individual.

 

Observabilidade Automática

No contexto do processo de integração e entrega contínua e no desenvolvimento de aplicações de microsserviços, o foco atual da observabilidade diz respeito à melhoria da qualidade dos dados de monitoramento, tornando esses serviços observáveis e fornecendo dados internos para aumentar as medições externas. Os dados de monitoramento de alta fidelidade resultantes melhoram a qualidade do feedback no loop de CI/CD.

Os aspectos práticos da implementação de observabilidade de código aberto ou manual podem ser significativos, colocando uma carga adicional considerável tanto para os desenvolvedores quanto para os operadores. O ônus do monitoramento como código resulta em recursos de programação valiosos sendo consumidos por meio de instrumentação, em vez de código funcional (de negócios).

Enfim, a conclusão que chegamos é de que as arquiteturas de software se transformaram muito rapidamente nos últimos anos. Hoje, existe um abismo tecnológico e metodológico entre as empresas que passaram pelo processo de transformação digital e as que ainda não conseguiram chegar ao fim deste processo. E isso pegou muita gente de surpresa!

Curtiu o artigo? Então deixa um comentário abaixo ou compartilha nas redes sociais. Caso tenha interesse no assunto e deseje conhecer as tecnologias desenvolvidas por nós, fale com nossos especialistas.

Compartilhe:

ESCRITO POR

Pedro César Tebaldi

Atuei por 10 anos no mercado B2B de tecnologia da informação como gerente de marketing, tendo escrito mais de 500 artigos sobre tecnologia durante esse período. Hoje sou líder do time de dados, dentro da área de Business Intelligence da OpServices, prestando consultoria para grandes empresas em todo o Brasil.

ASSINE NOSSA NEWSLETTER E RECEBA
NOSSOS MELHORES CONTEÚDOS!

ASSINE NOSSA NEWSLETTER!

Entre para nossa lista e receba conteúdos exclusivos