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.

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/

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