Close

Monitoramento de DevOps

Aumente a visibilidade durante cada estágio do pipeline de entrega

Foto de Krishna Sai
Krishna Sai

Chefe de Engenharia, Soluções de TI


Com o DevOps, a expectativa é desenvolver mais rápido, testar com regularidade e lançar com mais frequência, além de melhorar a qualidade e reduzir os custos. Para ajudar a alcançar esse resultado, as ferramentas de monitoramento de DevOps proporcionam automação, medição e visibilidade expandidas durante todo o ciclo de vida do desenvolvimento – de planejamento, desenvolvimento, integração e teste até a implementação e as operações.

O ciclo de vida do desenvolvimento de software moderno está mais rápido do que nunca, com vários estágios de desenvolvimento e testes acontecendo ao mesmo tempo. Isso gerou o DevOps, uma mudança das equipes isoladas que executam funções de desenvolvimento, teste e operações para uma equipe unificada que realiza todas as funções e adota o princípio “you build it, you run it” (YBIYRI).

Com mudanças frequentes de código agora sendo algo comum, as equipes de desenvolvimento precisam do monitoramento de DevOps, que proporciona uma visão abrangente e em tempo real do ambiente de produção.

O que é monitoramento de DevOps?


Diagrama de monitoramento versus observabilidade

O monitoramento de DevOps envolve a supervisão de todo o processo de desenvolvimento, desde planejamento, desenvolvimento, integração e teste até implementação e operações. Ele envolve uma visão completa e em tempo real do status de aplicativos, serviços e infraestrutura no ambiente de produção. Recursos como streaming em tempo real, repetição histórica e visualizações são componentes fundamentais do monitoramento de aplicativos e serviços.

Ícone de anéis conectados
ver solução

Simplifique o gerenciamento e a resposta a incidentes

Ícone de ferramentas
Material relacionado

Saiba mais sobre as ferramentas DevOps

O monitoramento de DevOps permite que as equipes respondam a qualquer degradação na experiência do cliente, de maneira rápida e automática. E, o mais importante, ele permite que as equipes façam o “shift left” para estágios anteriores do desenvolvimento e minimizem mudanças de produção interrompidas. Um exemplo é a melhor instrumentação de software para detectar e responder a erros, manualmente por plantão e automaticamente sempre que possível.

Monitoramento de DevOps versus observabilidade


Quando você considera o lado esquerdo do símbolo do infinito como o lado do produto e o lado direito como o lado da operação, o gerente de produto que insere um novo recurso na produção está interessado em ver como o projeto se divide em tarefas e histórias de usuários. O desenvolvedor do lado esquerdo do projeto precisa ver como mover o recurso para a produção, incluindo tickets de projeto, histórias de usuários e dependências. Se os desenvolvedores seguirem o princípio do DevOps de “you build it, you run it”, eles também estarão interessados na correção de incidentes.

Passando para o lado das operações do ciclo de vida, o engenheiro de confiabilidade do site precisa entender os serviços que podem ser medidos e monitorados, de modo que, se houver um problema, ele possa ser corrigido. Se você não tiver uma cadeia de ferramentas de DevOps que una todos esses processos, vai acabar com um ambiente confuso, não correlacionado e caótico. Se você tiver uma cadeia de ferramentas bem integrada, vai poder ter um contexto melhor do que está acontecendo.

Imagem do ciclo de DevOps

A importância do monitoramento de DevOps


Uma abordagem de DevOps amplia o monitoramento contínuo para os ambientes de staging, testes e até desenvolvimento. Existem diversos motivos para isso.

Mudanças frequentes de código exigem visibilidade

As mudanças de código frequentes impulsionadas pela integração e implementação contínuas aceleraram o ritmo das mudanças e tornaram os ambientes de produção cada vez mais complexos. Com microsserviços e micro front-ends entrando em ambientes nativos de nuvem modernos, há centenas e, às vezes, milhares de cargas de trabalho diferentes operando na produção, cada uma com requisitos operacionais de escala, latência, redundância e segurança diferentes.

Assim, a necessidade de maior visibilidade foi impulsionada. As equipes não só precisam detectar e responder a uma degradação da experiência do cliente, mas fazer isso em tempo hábil.

Colaboração automática

O DevOps exige, de maneira implícita, a liberação de uma maior colaboração entre o desenvolvimento, as operações e as funções empresariais nas equipes. No entanto, a colaboração pode ser bloqueada pela falta de integração entre as ferramentas, o que resulta em desafios de coordenação com equipes diferentes, um dos principais resultados da pesquisa sobre DevOps da Atlassian.

Você pode automatizar a colaboração com práticas como obter uma visão completa do pipeline de desenvolvimento dentro do editor. Além disso, defina regras de automação que detectem commits ou pull requests. Depois, atualize o status dos itens relacionados do Jira e envie mensagens para o canal Slack da equipe. Aproveite, ainda, os insights que originam relatórios de varredura, testes e análises.

Captura de tela de colaboração automática

Experimentação

A necessidade de otimizar produtos para responder às necessidades do cliente, orientada pela personalização e por funis de conversão otimizados, gera uma experimentação constante. Os ambientes de produção podem executar centenas de experimentos e sinalizadores de funcionalidade, o que dificulta a comunicação da causa de degradação de uma experiência por parte dos sistemas de monitoramento.

A exigência cada vez maior de serviços e aplicativos sempre ativos, além dos compromissos rigorosos de SLA, pode adicionar vulnerabilidades aos aplicativos. As equipes de desenvolvimento precisam garantir a definição de objetivos de nível de serviço (SLOs) e indicadores de nível de serviço (SLIs) que sejam monitorados e permitam ações futuras.

Gerenciamento de mudança

Como a maioria das interrupções de produção é causada por mudanças, o gerenciamento de mudanças é essencial, sobretudo para aplicativos críticos, como os dos setores financeiro e de saúde. Os riscos associados às mudanças precisam ser determinados, e os fluxos de aprovação devem ser automatizados com base no risco da alteração.

Lidar com essas complexidades requer uma estratégia abrangente de compreensão e monitoramento. Isso envolve a definição e a adoção de práticas de monitoramento, além de um conjunto de ferramentas de monitoramento ricas, flexíveis e avançadas, essenciais para os processos de desenvolvimento.

Monitoramento dependente do sistema

Os sistemas distribuídos ficaram mais comuns e em geral são compostos por muitos serviços menores em toda a organização. Agora, as equipes não precisam apenas monitorar os sistemas que criam, mas também monitorar e gerenciar o desempenho e a disponibilidade dos sistemas dependentes. A Amazon Web Services (AWS) oferece mais de 175 produtos e serviços, incluindo ferramentas de desenvolvedor, computação, armazenamento, rede, banco de dados, análises, implementação, gerenciamento e dispositivos móveis. Se você criar um aplicativo na AWS, precisará ter a certeza de que escolheu o serviço certo para as necessidades do aplicativo. Também é preciso ter instrumentação e estratégias para rastrear erros de maneira distribuída e lidar com falhas de sistemas dependentes.

Principais recursos do monitoramento de DevOps


De acordo com a tradição do DevOps, o desenvolvimento e a implementação de uma estratégia de monitoramento também exigem atenção às práticas essenciais e um conjunto de ferramentas.

Teste de "shift-left"

O teste de "shift-left", realizado no início do ciclo de vida, ajuda a aumentar a qualidade, encurtar os ciclos de teste e reduzir erros. Para as equipes de DevOps, é importante estender as práticas de teste de "shift-left" para monitorar a integridade dos ambientes de pré-produção. Isso garante que o monitoramento seja implementado de maneira antecipada e com frequência, a fim de manter a continuidade durante a produção e a preservação da qualidade dos alertas de monitoramento. O teste e o monitoramento devem atuar juntos, com o monitoramento antecipado ajudando a avaliar o comportamento do aplicativo por meio de jornadas e transações importantes do usuário. O processo também ajuda a identificar desvios de desempenho e disponibilidade antes da implementação da produção.

Gerenciamento de alertas e incidentes

Em um mundo nativo da nuvem, os incidentes são tão reais quanto bugs no código. Esses incidentes incluem falhas de hardware e rede, configuração incorreta, exaustão de recursos, inconsistências de dados e bugs de software. As equipes de DevOps devem aceitar os incidentes e ter monitores de alta qualidade disponíveis para responder a eles.

Entre as práticas recomendadas para ajudar nesse processo estão:

  • Crie a cultura de colaboração, em que o monitoramento é usado durante o desenvolvimento junto com recursos/funcionalidades e testes automatizados
  • Durante o desenvolvimento, crie alertas adequados e de alta qualidade no código para reduzir o tempo médio de detecção (MTTD) e o tempo médio de isolamento (MTTI)
  • Crie monitores para garantir que os serviços dependentes funcionem conforme o esperado
  • Reserve um tempo para a criação dos painéis necessários e treine os membros da equipe para utilizá-los
  • Planeje “simulações” do serviço para garantir que os monitores funcionem conforme o esperado e identifiquem monitores ausentes
  • Durante os sprints, planeje o encerramento de ações de revisões de incidentes anteriores, sobretudo aquelas relacionadas à construção de monitores ausentes e automação
  • Construa detectores para segurança (upgrades/patches/credenciais rotativas)
  • Cultive a mentalidade de “medir e monitorar tudo” com a automação determinando a resposta aos alertas detectados

Ferramentas de monitoramento de DevOps


Complementando um conjunto de práticas de monitoramento saudáveis estão as ferramentas avançadas que se alinham à cultura do DevOps/YBIYRI. É preciso ter atenção para identificar e implementar ferramentas de monitoramento, além de ferramentas de desenvolvedor bem compreendidas para repositórios de código, IDEs, depuradores, rastreamento de defeitos, ferramentas de integração contínua e ferramentas de implementação.

Um único painel de vidro oferece uma visão abrangente dos vários aplicativos, serviços e dependências de infraestrutura, não só na produção, mas também no staging. Assim, você tem a capacidade de provisionar, ingerir, marcar, visualizar e analisar a integridade de ambientes distribuídos complexos. Por exemplo, a ferramenta de PaaS interna Micros, da Atlassian, inclui uma ferramenta chamada microscópio, que apresenta todas as informações sobre os serviços de maneira concisa e detectável.

Captura de tela do painel único de vidro

O monitoramento do desempenho do aplicativo é essencial para garantir que os indicadores de desempenho específicos do aplicativo, como tempo para carregar uma página, latências de serviços downstream ou transições, sejam monitorados, além das métricas básicas do sistema, como uso de CPU e memória. Ferramentas como SignalFX e NewRelic são ótimas para observar dados de métricas em tempo real.

Implemente diferentes tipos de monitores, inclusive para erros, transações, sintéticos, batimentos cardíacos, alarmes, infraestrutura, capacidade e segurança durante o desenvolvimento. Verifique se todos os membros foram treinados nessas áreas. Esses monitores em geral são específicos do aplicativo e precisam ser implementados com base nos requisitos de cada aplicativo. Por exemplo, a equipe de desenvolvimento do Opsgenie implementa monitores sintéticos que criam um alerta ou incidente e verificam se o fluxo de alerta é executado conforme o esperado (ou seja, se integrações, roteamento e políticas estão funcionando corretamente). Também implementamos monitores sintéticos para dependências de infraestrutura, que verificam a funcionalidade de vários serviços da AWS periodicamente.

Um sistema de gerenciamento de incidentes e alertas que se integre com perfeição às ferramentas da equipe (gerenciamento de registros, relatórios de falhas, entre outras), para se encaixar naturalmente ao ritmo operacional e de desenvolvimento da equipe. A ferramenta deve enviar alertas importantes para os canais de notificação de sua preferência com as latências mais baixas. Ela também deve incluir a capacidade de agrupar alertas para filtrar vários deles, em especial quando diversos alertas são gerados a partir de um único erro ou falha. Na Atlassian, não só oferecemos o Opsgenie como um produto que oferece esses recursos aos clientes, mas também o usamos internamente para garantir que tenhamos um sistema de gerenciamento de alertas e incidentes robusto, flexível e confiável, integrado às práticas de desenvolvimento.

Conclusão...


Ao adotar o DevOps, é importante garantir o "shift-left" do monitoramento, além dos testes. As práticas e ferramentas também devem ser implementadas para cumprir a promessa de entregar mudanças rápidas e com alta qualidade na produção.

Para obter mais informações, confira esses recursos adicionais da Atlassian sobre DevOps, gerenciamento de incidentes e gerenciamento de alterações.

Krishna Sai
Krishna Sai

Krishna Sai é chefe de engenharia e soluções de TI da Atlassian. Ele tem mais de duas décadas de liderança em engenharia/tecnologia em várias startups e empresas, incluindo Atlassian, Groupon e Polycom. Mora em Bengaluru, na Índia e é apaixonado pelo desenvolvimento de produtos que impactam a maneira como as equipes colaboram.


Compartilhe este artigo

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Ilustração do DevOps

Comunidade de DevOps

Ilustração do DevOps

Caminho de aprendizagem de DevOps

Ilustração do mapa

Comece gratuitamente

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up