Skip to main content

SREs trazem ORDEM(R) ao CAOS

Escrito por
Headshot of Keith McDuffee

Keith McDuffee

19 de outubro de 2022

0 minutos de leitura

Uma análise dos desafios e das responsabilidades do seu grande aliado: o engenheiro de confiabilidade de sites (SRE).

Por Keith McDuffee, embaixador da Snyk, especialista em DevSecOps e fundador da StackRef.com.

“Qual é a diferença entre um engenheiro de DevOps e um engenheiro de confiabilidade de sites?”

É uma pergunta que ouço o tempo todo — inclusive em entrevistas de emprego, nas quais já me fizeram essa pergunta e às vezes eu mesmo a fiz. Mas existe uma resposta certa? Tudo depende de quem você pergunta. Acredito que existe uma linha divisória, mas ela é tão tênue que você precisa apertar os olhos para enxergá-la.

Por enquanto, vamos falar sobre SREs. Quais são suas responsabilidades? O que eles fazem? Que desafios enfrentam no dia a dia?

Vou tentar ser esperto aqui e agrupar as responsabilidades no que chamo de ORDERR e os desafios em CHAOS.

CHAOS

O que deixa os SREs sempre alertas e sem dormir à noite? Podemos categorizar esses fatores da seguinte forma:

Falha de componentes críticos

Os componentes que formam um sistema de computador são muitos, mas não estamos falando apenas de hardware. O hardware — mesmo com redundâncias — pode falhar, mas também é preciso considerar serviços e aplicações. Aplicações travam, serviços ficam sobrecarregados e o hardware simplesmente para de funcionar.

Intervenção humana

A falta de automação eficaz é como acordar um SRE às 2h da manhã todas as noites para digitar 4, 8, 15, 16, 23 e 42 no teclado. Depender de uma pessoa de carne e osso para executar tarefas que poderiam ser facilmente deixadas para um programa é pedir para que ela fique frustrada, exausta e digite o código errado. Além disso, quando esses sistemas automatizados falham — e eles podem mesmo falhar —, não ter como reproduzir o processo de forma rápida e fácil acaba se tornando mais um problema.

Bugs no código da aplicação

Há um limite para o que um SRE pode fazer. Alguns sabem programar e conhecem uma aplicação de ponta a ponta, mas geralmente não é por isso que foram contratados. Ainda assim, um SRE pode ajudar a identificar os responsáveis e envolver os engenheiros certos. Com suas ferramentas de observabilidade, os SREs também devem ter um pouco de presciência, pois, sem elas, há uma bomba-relógio prestes a acordá-los. De novo.

Problemas em software de código aberto

Às vezes, seus desenvolvedores não são totalmente culpados por um código que trava ou não é seguro (embora, idealmente, devessem saber disso). Muitas aplicações são construídas com dependências de código aberto — algumas tão complexas e misteriosas que nenhuma equipe interna de desenvolvimento de software conseguiria entendê-las por completo. Um módulo importado para um projeto a fim de habilitar um único recurso pode introduzir milhares de outros componentes desnecessários, trazendo vulnerabilidades ainda não descobertas e problemas de desempenho.

As dependências de código aberto não são as únicas possíveis culpadas. Componentes pagos de terceiros também podem ser responsáveis — e, às vezes, a situação pode ser pior: você fica à mercê das prioridades da empresa, não da comunidade em geral (log4j, alguém?).

Incidentes de segurança

O verdadeiro pesadelo de um SRE. Quando isso acontece, ou o problema não pode ser resolvido de imediato e com facilidade, ou ele passa despercebido por mais tempo do que você gostaria de admitir. Ataques de negação de serviço (DoS) estão incluídos aqui e são um tipo de ameaça a mitigar. Mas uma presença hostil e ativa nos seus sistemas é outra história. Só dá para dizer que a situação foi “resolvida” quando a ameaça ativa está sob controle e foi contida, e tudo o que pode ter sido comprometido está sendo tratado como resíduo nuclear.

ORDERR

Eu tentei — tentei mesmo — reduzir tudo a apenas ORDER, mas simplesmente não dá para ignorar ou separar os dois últimos Rs da lista.

Observabilidade

De que adianta tentar lidar com o CAOS se você não consegue enxergá-lo? Observabilidade é justamente como você acompanha tudo: disponibilidade, desempenho e atividade.

Mas não basta ter visibilidade dessas informações. É preciso contar com alertas confiáveis e que indiquem ações concretas para os eventos que exigem atenção. Aqui, “acionáveis” e “confiáveis” caminham juntos. Se um SRE é acordado à noite por um alarme falso — e esses alarmes continuam —, ele pode ficar exausto e acabar diante de uma situação de “Pedro e o lobo”: um alerta que parecia falso é, na verdade, motivo de preocupação.

Embora alertas relevantes e oportunos sejam importantes, um SRE não pode depender apenas deles. Ter visibilidade por meio do monitoramento, para que os SREs acompanhem continuamente o que está em execução, é o primeiro passo para configurar esses alertas! Algumas equipes de SRE usam ferramentas de terceiros; outras criam as próprias. Tudo depende do orçamento e da existência de uma solução que atenda às suas necessidades específicas.

Há ferramentas demais para listar nesta categoria, mas aqui vão algumas: Datadog, New Relic, ELK Stack (com opções gratuitas de suporte e hospedagem), SolarWinds e Splunk.

Confiabilidade

Este é um tema abrangente. Muitas coisas podem afetar a confiabilidade de sistemas e aplicações. Tudo está em jogo, desde a base até as camadas superiores (e além!): geolocalização, instalações de hospedagem, servidores e hardware, redes, sistema operacional, serviços, código da aplicação e a forma como os serviços oferecidos são entregues. Cansou? Os SREs também.

Eu incluiria um “A” aqui, de disponibilidade, mas acredito que os conceitos são tão próximos que podem significar a mesma coisa. Garantir que você tenha tudo o que precisa para manter seus sistemas disponíveis — redundância, métodos automatizados e/ou manuais de failover, segurança e resposta a incidentes de negação de serviço — faz parte da confiabilidade.

Com exceção do código da aplicação, os SREs são os únicos responsáveis por cuidar de tudo o que mantém confiáveis os sistemas de uma organização. No caso do código da aplicação, muitas vezes os SREs são apenas o meio pelo qual os desenvolvedores responsáveis pelo software ganham visibilidade, e não quem corrige o que está quebrado. Isso é feito, em parte, com ferramentas de análise estática de código, que apontam problemas à medida que são encontrados, ou por meio do monitoramento e dos registros já implementados. Depois que os problemas são identificados, cabe aos SREs encaminhá-los à equipe ou às equipes certas e garantir que sejam resolvidos rapidamente.

A Snyk oferece ferramentas para ajudar nessa categoria.

Resposta a desastres

“Desastre” é um termo amplo para SREs. Pode significar desde uma falha em infraestrutura crítica até — Deus nos livre — um avião cair com seu principal engenheiro de software a bordo. Claro que também inclui qualquer situação relacionada à segurança.

Ter meios eficazes para responder a esses desastres é fundamental para as responsabilidades de um SRE. Por isso, é essencial manter runbooks atualizados e disponíveis (falaremos deles no E abaixo), já que nem sempre dá para confiar só na memória. Pode ser difícil encontrar tempo para exercícios de simulação e testes regulares de recuperação de desastres, mas eles são fundamentais para garantir respostas mais rápidas e organizadas a situações críticas.

Algumas ferramentas pagas (e com opções gratuitas limitadas) para essa categoria são Mattermost e PagerDuty.

Uma resposta eficaz também exige...

Comunicação eficaz

Há muitos meios de comunicação, especialmente quando as equipes trabalham remotamente e estão distribuídas por diferentes fusos horários. É essencial estabelecer uma forma clara de comunicação para qualquer situação problemática — não apenas definir onde, mas também como e quando.

Meios de comunicação adequados não só ajudam os SREs a manter a observabilidade das situações, como também garantem que elas sejam tratadas corretamente e em tempo hábil, sem duplicar esforços.

Também é preciso se comunicar com as partes interessadas, tanto internas quanto externas. Se algo parecer fora do normal, a comunicação começa com as equipes internas, antes de informar os clientes externos sobre problemas que afetam o uso dos serviços. Os SREs são o ponto de partida para decidir se, quando e como será feita a comunicação externa.

Aqui estão algumas ferramentas de comunicação bastante conhecidas: Slack, Microsoft Teams e Atlassian StatusPage.

Recuperação

Tudo isso leva ao objetivo final (além de evitar que algo dê errado): recuperar tudo para um estado estável e seguro. Todos os fatores mencionados acima determinam a rapidez com que isso pode ser alcançado.

  • Observe o que está acontecendo.

  • Tenha meios confiáveis de failover e redundância.

  • Garanta que o plano de ação de resposta a desastres seja seguido.

  • Coloque em prática a comunicação eficaz.

Os SREs são responsáveis por cumprir uma meta de MTR (tempo médio de recuperação), e não dá para alcançá-la contando com a sorte. Depois da recuperação, é hora de retomar a comunicação eficaz para tranquilizar as partes interessadas. Mas, para o SRE, o trabalho ainda não acabou. É hora de...

Retrospectiva

Quando a poeira baixar, os SREs podem respirar aliviados, mas não por muito tempo. Algo ruim aconteceu. E, se nada for feito, é provável que aconteça de novo.

Isso nos leva de volta à comunicação eficaz. Precisamos entender quando, o quê, onde, por quê e como, além de definir o que vamos fazer para evitar que isso aconteça novamente.

As lições aprendidas devem ser documentadas junto com o incidente, acompanhadas de um plano de ação que não simplesmente desapareça no ar. Talvez seja necessário ajustar algum dos pontos anteriores: melhorar a observabilidade, reforçar os sistemas e a segurança, acrescentar camadas de confiabilidade ou até aprimorar a comunicação. Depois, é preciso estabelecer prazos razoáveis para garantir que tudo seja feito, e os SREs devem acompanhar os responsáveis para assegurar que as ações sejam concluídas.

DevOps vs. SRE

Então, o que fazem os profissionais de DevOps quando não são também SREs? Não vou entrar em todos os detalhes, mas, em relação aos SREs, o DevOps ajuda a fazer com que tudo isso aconteça entre os SREs e os desenvolvedores — capacitando os dois lados a fazer o que precisam sem precisar ficar passando problemas de um lado para o outro. O DevOps dá suporte e fornece toda a ORDERR de que os SREs dependem para lidar com o CHAOS, ao mesmo tempo que permite que quem não é SRE participe tanto quanto necessário.

Boa sorte por aí…

- K

Comece a resolver desafios de capture the flag

Aprenda a resolver desafios de capture the flag assistindo sob demanda ao nosso workshop virtual introdutório.

Leia mais

blog feature ai lilac
Blog

Transforme seu backlog de vulnerabilidades em pull requests com remediação agentiva

O Evo Remediation Agent está em Open Preview e traz a resolução automatizada de dependências para o Evo Agentic AppSec. Agora, as equipes de AppSec podem executar campanhas contínuas de remediação

AI Background min crop
Blog

A IA está acionando todos os riscos que você aceitou: sete insights do painel de segurança de IA sem filtros

A IA está tornando os ataques mais baratos e rápidos, expondo riscos que as organizações já carregam. Quatro líderes de segurança explicam por que a defesa na velocidade das máquinas e a correção mais rápida são essenciais.

blog feature ai violet
Blog

VulnBump: agentes de IA conseguem corrigir dependências vulneráveis sem quebrar o build?

O VulnBump testa agentes de IA em 307 atualizações reais de dependências. Uma correção só é considerada válida se eliminar a vulnerabilidade e mantiver o build e os testes passando.