O que é engenharia de confiabilidade do site?
A engenharia de confiabilidade do site (SRE) é a prática de usar ferramentas de software para automatizar tarefas de infraestrutura de TI, como gerenciamento de sistemas e monitoramento de aplicativos. As organizações usam o SRE para garantir que seus aplicativos de software permaneçam confiáveis em meio a atualizações frequentes das equipes de desenvolvimento. O SRE melhora especialmente a confiabilidade de sistemas de software escaláveis porque gerenciar um sistema grande usando software é mais sustentável do que gerenciar manualmente centenas de máquinas.
Por que a engenharia de confiabilidade do site é importante?
A confiabilidade do site descreve a estabilidade e a qualidade do serviço que uma aplicação oferece após ser disponibilizada aos usuários finais. A manutenção de software às vezes afeta a confiabilidade do software se problemas técnicos não forem detectados. Por exemplo, quando os desenvolvedores fazem novas alterações, elas podem afetar inadvertidamente a aplicação existente e fazer com que ela falhe em determinados casos de uso.
A seguir estão alguns benefícios das práticas de Site Reliability Engineering (SRE – Engenharia de confiabilidade do site).
Colaboração melhorada
A SRE melhora a colaboração entre as equipes de desenvolvimento e operações. Muitas vezes, os desenvolvedores precisam fazer alterações rápidas em uma aplicação para lançar novos recursos ou corrigir bugs críticos. Por outro lado, a equipe de operações precisa garantir a prestação de serviços perfeita. Portanto, a equipe de operações usa práticas de SRE para monitorar de perto cada atualização e responder prontamente a quaisquer problemas que surjam devido a mudanças.
Experiência do cliente aprimorada
As organizações usam um modelo de SRE para garantir que os erros de software não afetem a experiência do cliente. Por exemplo, as equipes de software usam ferramentas de SRE para automatizar o ciclo de vida de desenvolvimento de software. Isso reduz os erros, o que significa que a equipe pode priorizar o desenvolvimento de novos recursos em vez de correções de bugs.
Planejamento de operações aprimorado
As equipes da SRE aceitam que há uma chance realista de falha do software. Portanto, as equipes planejam a resposta apropriada a incidentes para minimizar o impacto do tempo de inatividade nos negócios e nos usuários finais. Eles também podem estimar melhor o custo do tempo de inatividade e entender o impacto desses incidentes nas operações de negócios.
Quais são os princípios-chave na engenharia de confiabilidade do site?
A seguir estão alguns princípios-chave da Site Reliability Engineering (SRE – Engenharia de confiabilidade do site).
Monitoramento de aplicações
As equipes de SRE aceitam que os erros fazem parte do processo de implantação do software. Em vez de buscar uma solução perfeita, eles monitoram a performance do software em termos de acordos de serviço (SLAs), indicadores de nível de serviço (SLIs) e objetivos de nível de serviço (SLOs). Eles observam e monitoram as métricas de performance após a implantação da aplicação em ambientes de produção.
Implementação de mudanças
As práticas de SRE incentivam a liberação de mudanças frequentes, porém pequenas, para manter a confiabilidade do sistema. As ferramentas de automação de SRE usam processos consistentes, mas repetíveis, para fazer o seguinte:
- Reduza os riscos devido a mudanças
- Forneça ciclos de feedback para medir o desempenho do sistema
- Aumente a velocidade e a eficiência da implementação de mudanças
Automação para melhoria da confiabilidade
A SRE usa políticas e processos que incorporam princípios de confiabilidade em cada etapa do pipeline de entrega. Algumas estratégias que resolvem problemas automaticamente incluem o seguinte:
- Desenvolvimento de portões de qualidade com base em objetivos de nível de serviço para detectar problemas mais cedo
- Automatizando o teste de compilação usando indicadores de nível de serviço
- Tomar decisões arquitetônicas que garantam a resiliência do sistema no início do desenvolvimento de software
O que é observabilidade na engenharia de confiabilidade do site?
A observabilidade é um processo que prepara a equipe de software para incertezas quando o software entra em operação para os usuários finais. As equipes de Site Reliability Engineering (SRE – Engenharia de confiabilidade do site) usam ferramentas para detectar comportamentos anormais no software e, mais importante, coletar informações que ajudam os desenvolvedores a entender o que causa o problema. A observabilidade envolve a coleta das seguintes informações com as ferramentas SRE.
métricas
As métricas são valores quantificáveis que refletem a performance de uma aplicação ou a integridade do sistema. As equipes de SRE usam métricas para determinar se o software consome recursos excessivos ou se comporta de forma anormal.
Logs
O software de SRE gera informações detalhadas e marcadas com data e hora, chamadas logs, em resposta a eventos específicos. Os engenheiros de software usam registros para entender a cadeia de eventos que levam a um problema específico.
Traços
Traços são observações do caminho do código de uma função específica em um sistema distribuído. Por exemplo, fazer check-out de um carrinho de pedidos pode envolver o seguinte:
- Contabilizando o preço com o banco de dados
- Autenticando com o gateway de pagamento
- Enviando os pedidos aos fornecedores
Os rastreamentos consistem em um ID, nome e hora. Eles ajudam os desenvolvedores de software a detectar problemas de latência e melhorar a performance do software.
O que é monitoramento na engenharia de confiabilidade do site?
O monitoramento é um processo de observação de métricas predefinidas em uma aplicação. Os desenvolvedores decidem quais parâmetros são críticos para determinar a integridade do aplicativo e os definem nas ferramentas de monitoramento. As equipes de site reliability engineering (SRE – engenharia de confiabilidade do site) coletam informações críticas que refletem a performance do sistema e as visualizam em gráficos.
Na SRE, as equipes de software monitoram essas métricas para obter informações sobre a confiabilidade do sistema.
Latência
A latência descreve o atraso quando a aplicação responde a uma solicitação. Por exemplo, o envio de um formulário em um site leva 3 segundos antes de direcionar os usuários para uma página Web de confirmação.
Tráfego
O tráfego mede o número de usuários que acessam seu serviço simultaneamente. Ele ajuda as equipes de software a orçamentar adequadamente os recursos de computação para manter um nível de serviço satisfatório para todos os usuários.
Erros
Um erro é uma condição em que o aplicativo falha ao executar ou entregar de acordo com as expectativas. Por exemplo, quando uma página Web falha ao carregar ou uma transação não é processada, as equipes de SRE usam ferramentas de software para rastrear e responder automaticamente a erros na aplicação.
Saturação
A saturação indica a capacidade em tempo real da aplicação. Um alto nível de saturação geralmente resulta em performance degradante. Os engenheiros de confiabilidade do site monitoram o nível de saturação e garantem que ele esteja abaixo de um limite específico.
Quais são as principais métricas para a engenharia de confiabilidade do site?
As equipes de Site Reliability Engineering (SRE – Engenharia de confiabilidade do site) medem a qualidade da prestação de serviços e a confiabilidade usando as seguintes métricas.
Objetivos de nível de serviço
Os objetivos de nível de serviço (SLOs) são metas específicas e quantificáveis que você tem certeza de que o software pode atingir a um custo razoável para outras métricas, como as seguintes:
- Tempo de atividade ou o tempo em que um sistema está em operação
- Throughput do sistema
- Saída do sistema
- Taxa de download ou a velocidade na qual a aplicação é carregada
Um SLO promete entrega por meio do software ao cliente. Por exemplo, você define um tempo de atividade de 99,95% no SLO para o aplicativo de entrega de comida da sua empresa.
Indicadores de nível de serviço
Indicadores de nível de serviço (SLIs) são as medidas reais da métrica que um SLO define. Em situações da vida real, você pode obter valores que correspondem ou diferem do SLO. Por exemplo, sua aplicação está ativa e funcionando 99,92% do tempo, o que é menor do que o SLO prometido.
Acordos de nível de serviço
Os acordos de serviço (SLAs) são documentos legais que indicam o que aconteceria quando um ou mais SLOs não fossem atendidos. Por exemplo, o SLA afirma que a equipe técnica resolverá o problema do seu cliente dentro de 24 horas após o recebimento de um relatório. Se sua equipe não conseguiu resolver o problema dentro do prazo especificado, você pode ser obrigado a reembolsar o cliente.
Orçamentos de erro
Orçamentos de erro são a tolerância de não conformidade para o SLO. Por exemplo, um tempo de atividade de 99,95% no SLO significa que o tempo de inatividade permitido é de 0,05%. Se o tempo de inatividade do software exceder o orçamento de erro, a equipe de software dedicará todos os recursos e atenção para estabilizar a aplicação.
Como funciona a engenharia de confiabilidade do site?
A Site Reliability Engineering (SRE – Engenharia de confiabilidade do site) envolve a participação de engenheiros de confiabilidade do site em uma equipe de software. A equipe de SRE define as principais métricas para SRE e cria um orçamento de erro determinado pelo nível de tolerância ao risco do sistema. Se o número de erros for baixo, a equipe de desenvolvimento poderá lançar novos recursos. No entanto, se os erros excederem o orçamento de erro permitido, a equipe colocará novas alterações em espera e resolverá os problemas existentes.
Por exemplo, um engenheiro de confiabilidade de site usa um serviço para monitorar métricas de performance e detectar comportamentos anômalos de aplicações. Se houver problemas com a aplicação, a equipe de SRE envia um relatório para a equipe de engenharia de software. Os desenvolvedores corrigem os casos relatados e publicam a aplicação atualizada.
DevOps
DevOps é uma cultura de software que quebra os limites tradicionais das equipes de desenvolvimento e operação. Com o DevOps, desenvolvedores e engenheiros operacionais não trabalham mais em silos. Em vez disso, eles usam ferramentas de software para melhorar a colaboração e acompanhar o ritmo acelerado das versões de atualização de software.
Comparação entre a SRE e o DevOps
A SRE é a implementação prática do DevOps. O DevOps fornece a base filosófica do que deve ser feito para manter a qualidade do software em meio ao cronograma de desenvolvimento cada vez mais curto. A engenharia de confiabilidade do site oferece as respostas sobre como alcançar o sucesso do DevOps. A SRE garante que a equipe de DevOps atinja o equilíbrio certo entre velocidade e estabilidade.
Quais são as responsabilidades de um engenheiro de confiabilidade do site?
Um engenheiro de confiabilidade do site é um especialista em TI que usa ferramentas de automação para monitorar e observar a confiabilidade do software no ambiente de produção. Eles também têm experiência em encontrar problemas em software e escrever códigos para corrigi-los. Eles normalmente são ex-administradores de sistema ou engenheiros de operação com boas habilidades de codificação. A seguir estão algumas responsabilidades de confiabilidade do site.
Operações
Os engenheiros de confiabilidade do local gastam até metade do tempo no trabalho operacional. Isso inclui várias tarefas, como as seguintes:
- Resposta a incidente de emergência
- Gerenciamento de alterações
- Gerenciamento de infraestrutura de TI
Os engenheiros usam ferramentas de SRE para automatizar várias tarefas operacionais e aumentar a eficiência da equipe.
Suporte do sistema
Os engenheiros de confiabilidade do local trabalham em estreita colaboração com a equipe de desenvolvimento para criar novos recursos e estabilizar os sistemas de produção. Eles criam um processo de SRE para toda a equipe de software e estão à disposição para dar suporte a problemas de escalonamento. Mais importante ainda, as equipes de confiabilidade do site fornecem procedimentos documentados ao suporte ao cliente para ajudá-los a lidar efetivamente com as reclamações.
Aprimoramento
Os engenheiros de confiabilidade do site melhoram o ciclo de vida do desenvolvimento de software realizando análises pós-incidente. A equipe de SRE documenta todos os problemas de software e as respectivas soluções em uma base de conhecimento compartilhada. Isso ajuda a equipe de software a responder com eficiência a problemas semelhantes no futuro.
Quais são as ferramentas comuns de engenharia de confiabilidade do site?
As equipes de Site Reliability Engineering (SRE – Engenharia de confiabilidade do site) usam diferentes tipos de ferramentas para facilitar o monitoramento, a observação e a resposta a incidentes.
Orquestrador de contêineres
Os desenvolvedores de software usam um orquestrador de contêiner para executar aplicações em contêiner em várias plataformas. As aplicações em contêiner armazenam seus arquivos de código e recursos relacionados em um único pacote chamado contêiner. Por exemplo, os engenheiros de software usam o Amazon Elastic Kubernetes Service (Amazon EKS) para executar e escalar aplicações em nuvem.
Ferramentas de gerenciamento de plantão
As ferramentas de gerenciamento de plantão são softwares que permitem que as equipes de SRE planejem, organizem e gerenciem a equipe de suporte que lida com problemas de software relatados. As equipes de SRE usam o software para garantir que sempre haja uma equipe de suporte em espera para receber alertas oportunos sobre problemas de software.
Ferramentas de resposta a incidentes
As ferramentas de resposta a incidentes garantem um caminho de escalonamento claro para problemas de software detectados. As equipes de SRE usam ferramentas de resposta a incidentes para categorizar a gravidade dos casos relatados e lidar com eles imediatamente. As ferramentas também podem fornecer relatórios de análise pós-incidente para evitar que problemas semelhantes aconteçam novamente.
Ferramentas de gerenciamento de configuração
As ferramentas de gerenciamento de configuração são softwares que automatizam o fluxo de trabalho do software. As equipes de SRE usam essas ferramentas para remover tarefas repetitivas e se tornarem mais produtivas. Por exemplo, os engenheiros de confiabilidade do site usam o AWS OpsWorks para configurar e gerenciar automaticamente servidores em ambientes da AWS.
Como a AWS ajuda na engenharia de confiabilidade do site?
Os serviços de gerenciamento e governança da AWS fornecem as ferramentas necessárias para que equipes de software criem, escalem e implantem aplicações distribuídas sem comprometer a confiabilidade do sistema. Equipes de engenharia de confiabilidade de sites (SRE) usam vários serviços de gerenciamento e governança da AWS para monitorar e governar os recursos de computação da AWS e on-premises:
- O AWS Service Catalog permite que as equipes de SRE cataloguem, gerenciem e implantem rapidamente serviços de TI
- O AWS Systems Manager fornece um hub de gerenciamento centralizado para que os engenheiros de confiabilidade do site obtenham insights operacionais sobre os recursos de computação de software
- O AWS Proton é uma ferramenta de gerenciamento automatizada para a implantação de aplicações em contêineres e utilizando a tecnologia sem servidor
Comece a usar a engenharia de confiabilidade de sites na AWS criando uma conta da AWS hoje mesmo.
Próximas etapas na AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.
Comece a construir com a engenharia de confiabilidade de sites no Console de Gerenciamento da AWS.