minutos de leitura
10 de abril de 2023
Escrito por
Rodrigo Feijolo
Os clientes de produtos digitais estão cada vez mais exigentes, as expectativas não param de crescer. Há algum tempo já não basta mais funcionar apenas em horário comercial. Se está acessível pela internet é esperado que funcione 24h por dia.
Por causa disso, o monitoramento é um componente crítico para qualquer organização digital. Seja no Google ou em scale-ups de alto crescimento como a Gupy, o monitoramento ajuda a identificar e prevenir problemas antes deles se tornarem críticos.
As técnicas de monitoramento nos ajudam a entender a experiência que estamos fornecendo e como os usuários estão interagindo com os nossos produtos, sendo também um motor de inovação e crescimento. Em um assunto tão amplo, é difícil saber por onde começar. Nesse artigo vamos dividir algumas das melhores práticas para uma estratégia efetiva de monitoramento.
Sem que seja possível observar se um sistema está funcionando, garantir a sua operação pode ser estressante. Nesse contexto, a pergunta que aparece, em qualquer momento do dia ou da noite, é a seguinte: “Será que está tudo bem?”. Não é nada agradável descobrir que não quando o telefone toca no meio da madrugada porque algum fluxo importante para os clientes simplesmente parou de funcionar. Os problemas enfrentados pelos clientes podem se manifestar de várias formas. As mais comuns são a “tela branca”, o “clico no botão e nada acontece” ou até mesmo uma genérica “lentidão”.
Uma das piores coisas que podem acontecer é ficarmos sabendo de problemas através de tickets abertos por clientes. Quando isso acontece, significa que o problema já está grande ao ponto de ser percebido pelas usuárias do sistema. Uma estratégia efetiva de monitoramento nos ajuda a perceber sinais de que algum componente do sistema está sobrecarregado ou sofrendo com falta de recursos, assim podemos agir para recuperar a experiência antes que os clientes percebam.
Em meio a esse cenário de crescentes expectativas por parte das usuárias, é essencial que a empresa esteja sempre buscando melhorias em sua infraestrutura e processos, e a prática de monitoramento contínuo do DevOps pode ser uma grande aliada nesse sentido.
DevOps é uma metodologia que busca unir as equipes de desenvolvimento e operações, promovendo uma maior colaboração e integração entre elas. Ao utilizar essa abordagem, a empresa consegue acelerar a entrega de suas soluções, aumentar a qualidade dos seus produtos e reduzir o tempo de resposta a incidentes.
Uma das práticas de DevOps é a de monitoramento contínuo. O monitoramento contínuo busca prover métricas e informações sobre a saúde geral dos sistemas e infraestrutura envolvidas em servir as usuárias, tudo isso quase em tempo real, com o delay de microssegundos em alguns casos.
Para ter acesso a essas informações, é necessário integrar as aplicações e a infraestrutura com ferramentas especializadas em ingerir e exibir métricas e logs. Algumas dessas ferramentas são pagas, como o Datadog, Honeycomb ou New Relic. Além desses produtos completos, também é possível se apoiar em ferramentas de código aberto, como Grafana, Prometheus e Kibana. Caso essa seja a sua escolha, se prepare, porque manter essas ferramentas funcionando com um bom nível de desempenho e confiabilidade é um desafio que não deve ser subestimado.
Quando os sistemas são conectados às ferramentas de monitoramento, recebemos uma enxurrada de métricas. Nesse ponto, é muito comum se sentir perdido e não saber o que é importante. Algumas das métricas mais relevantes para uma scale-up incluem:
Além dessas, existem muitas outras métricas para explorar e conhecer. A medida que vamos a relação delas com a performance do sistema e a experiência dos usuários, vamos, aos poucos, conseguindo correlacionar uma quantidade maior de métricas e, assim, ampliar o nosso conhecimento sobre os gargalos e oportunidades de otimização dos sistemas e da infraestrutura. O importante é começar pequeno e ir evoluindo aos poucos!
É comum que muitos sistemas interajam entre si para servir uma única requisição de uma usuária. Alguns desses sistemas podem ser bem complexos, com muitos componentes interconectados e camadas. Para que uma experiência de excelência seja oferecida para os usuários, cada uma dessas partes precisa estar saudável. Uma estratégia de monitoramento efetiva garante de forma contínua e proativa que os componentes críticos estão saudáveis durante todo o tempo.
Muitas ferramentas de monitoramento possibilitam a criação de monitores, que acompanham continuamente um conjunto de métricas, e podem emitir alarmes, avisando os operadores que as métricas estão fora dos parâmetros esperados. Uma armadilha comum é monitorar métricas de mais e terminar em um cenário onde alarmes são emitidos a cada pequena alteração de comportamento do sistema, chegando no que chamamos de fadiga de alarmes. Uma boa maneira de sair dessa situação é revisar os alarmes e manter apenas os que geram alguma ação correção pelas pessoas que operam o sistema.
Quando os incidentes acontecem, precisamos mitigar os efeitos negativos para os clientes o mais rápido possível. Durante esse momento, as pessoas costumam se juntar nas famosas salas de guerra. Se você foi convocado, não entre em pânico. Uma postura calma e uma cultura de focar no problema ao invés de descobrir culpados ajuda as pessoas que estão passando por esse momento de estresse a chegar mais rápido em uma solução. Tente separar o que são fatos de hipóteses. Trabalhe no sentido de provar uma hipótese de cada vez, executando as ações com calma e anotando o horário de cada evento observado e cada modificação executada nos sistemas ou na infraestrutura. Aos poucos o quebra-cabeças vai se montando e vai ficando mais fácil encontrar a peça que está faltando.
É bem comum que os incidentes sejam dados como resolvidos depois de soluções paliativas, só para reaparecerem no momento mais inoportuno possível. Por isso, devemos resistir a tentação de parar nos paliativos. Depois de um incidente muitos times realizam uma cerimônia chamada de postmortem, nesse momento é feita e documentada uma análise detalhada das causas e a linha do tempo de eventos, com o objetivo de mapear ações para evitar incidentes iguais, responsáveis e prazos, além de construir uma base de conhecimento que pode ser utilizada como referência no futuro.
As aplicações geralmente estão inseridas em contextos bastante dinâmicos nas empresas modernas. Várias versões dos sistemas são disponibilizadas dentro do mesmo dia, e a infraestrutura que executa as aplicações também está em constante mudança. Além disso, os próprios clientes podem alterar o seu padrão de uso ao longo do tempo, o que torna imperativo que a operação dos sistemas também se mantenham e constante evolução. Por isso, uma outra prática importante dos times de alto desempenho é o compartilhamento de aprendizados para que incidentes iguais não se repitam.
Estratégias de monitoramento ainda mais avançadas são capazes de tomar medidas de remediação de incidentes alterando os sistemas a infraestrutura sem intervenção humana. Para chegar nesse nível de sofisticação é preciso ter uma mentalidade de melhoria contínua, atenção para os detalhes, aprender a interpretar as métricas no contexto de cada aplicação e funcionalidade e ter paixão por automação.
Essas técnicas podem ser grandes aliadas para as scale-ups que buscam expandir seus negócios de forma eficiente e escalável. Ao medir e monitorar o desempenho das aplicações, é possível ganhar mais eficiência no uso de recursos de infraestrutura, economia, velocidade na resolução de incidentes, felicidade das pessoas operando os sistemas e, principalmente, dos clientes.
No próximo artigo da série de monitoramento vamos trazer um estudo de caso da Gupy onde aplicamos essas técnicas para melhorar a performance de uma das nossas aplicações.
E você? Como os seus sistemas tem sido monitorados? Você já aplica algumas dessas técnicas? Conta pra gente nos comentários!