Article image
Thiago Carvalho
Thiago Carvalho31/05/2023 10:12
Compartilhe

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.

AWS Service Catalog permite que as equipes de SRE cataloguem, gerenciem e implantem rapidamente serviços de TI.

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.

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/

Compartilhe
Comentários (2)
João Coelho
João Coelho - 31/05/2023 10:48

Muito bom o conteúdo, bastante edificante !

Vinícius Cavalheiro
Vinícius Cavalheiro - 31/05/2023 11:07

Muito bom