SRE - Site Reliability Engineering
- #Terraform
- #AWS
- #GCP
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
A equipe da SRE aceita que há uma chance realista de falha do software. Portanto, a equipe planeja 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.
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 da aplicação 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.
Erro
O erro é uma condição em que a aplicação 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.
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 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 a equipe de software crie, escale e implante aplicações distribuídas sem comprometer a confiabilidade do sistema. A equipe de Site Reliability Engineering (SRE – Engenharia de confiabilidade do site) usa 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 com a engenharia de confiabilidade do site na AWS criando uma conta da AWS hoje mesmo.
Obrigado pela leitura! Este foi um artigo que fez muito sentido para mim, e clareou muito minha visão sobre SRE/DevOps.
Fonte: https://aws.amazon.com/pt/what-is/sre/