A engenharia de confiabilidade local (SRE) é uma prática de engenharia de software que combina DevOps e operações de TI tradicionais para resolver problemas dos clientes, automatizar tarefas de operações de TI, acelerar a entrega de software e minimizar riscos de TI.
A SRE dá suporte à resiliência, à redundância e à confiabilidade no ciclo de DevOps e cuida da implementação cotidiana de programas de software. Os engenheiros de confiabilidade local geralmente seguem a regra do meio a meio: dedicam metade do tempo à resolução de problemas dos clientes, como o gerenciamento de escalonamentos e a resposta a incidentes, e a outra metade à automação das operações de TI. Essas operações incluem o gerenciamento de sistemas de produção, a gestão de mudanças, a resposta a incidentes e a resposta a emergências.
As equipes de SRE reduzem a distância entre o funcionamento ideal dos programas, segundo os desenvolvedores, e o comportamento real dos sistemas em situações do dia a dia. Os engenheiros de confiabilidade atuam diretamente com os clientes para resolver problemas e coletar dados sobre a experiência do usuário. As equipes de SRE repassam esses dados para os times de desenvolvimento, oferecendo insights valiosos sobre o desempenho do software e as atualizações necessárias.
Os SREs entendem que as falhas são inevitáveis. Seu trabalho é tanto identificar (por meio de processos como a análise de causa raiz) a causa dos problemas imediatos quanto usar dados de monitoramento e de registro para prever possíveis falhas futuras. Em seguida, eles configuram automações para resolver esses problemas, incorporando resiliência e redundância ao sistema.
Essa supervisão automatizada de sistemas de software de grande escala reduz a necessidade de os administradores de sistemas realizarem manualmente as tarefas de operações de TI. A eliminação de funções manuais ajuda as equipes de TI a economizar tempo, executar as tarefas de operações com mais precisão e concentrar-se na manutenção do desempenho das aplicações.
Um engenheiro de confiabilidade de site é uma posição técnica que requer experiência em desenvolvimento de software e operações de TI. Compreender essas funções permite que as equipes de SRE cumpram seu papel no suporte ao ciclo de vida do desenvolvimento de software. O SRE é baseado em uma estratégia de resiliência por meio da automação consistente de processos.
Tradicionalmente, as práticas de engenharia de confiabilidade local se concentravam na execução de operações e tarefas de administração do sistema. Essas tarefas incluem análise de registros, ajuste de desempenho, aplicação de patches, teste de ambientes de produção, gerenciamento de incidentes e realização de postmortems. Inicialmente, essas tarefas eram feitas manualmente, o que consumia muito tempo e estava sujeito a erros humanos. A modernização da engenharia de confiabilidade local envolve a automação dessas tarefas manuais.
O monitoramento e o registro em log desempenham um papel fundamental no SRE. As equipes de SRE usam ferramentas de monitoramento para rastrear o que está acontecendo nos sistemas de software em tempo real. O monitoramento possibilita a correção de problemas técnicos imediatos e ajuda as equipes a antecipar problemas futuros e resolvê-los antes que ocorram.
Os logs servem como arquivos que podem ser analisados para obter insights sobre o funcionamento dos sistemas e melhorar a observabilidade dos sistemas. O registro cria um histórico que ajuda as equipes de SRE a entenderem a sequência de eventos que causou um erro inesperado.
Os engenheiros podem automatizar a correção do erro e evitar que ele ocorra novamente. Monitoramento e registro ajudam os engenheiros a identificar pontos de falha e resolver problemas de forma programática por meio da automação, eliminando a necessidade de correções manuais.
As equipes de SRE também buscam deficiências nos sistemas por meio de um processo chamado engenharia do caos. Engenharia do caos é uma estratégia que engenheiros de confiabilidade de site implementam para causar falhas intencionais em ambientes de produção e pré-produção. O objetivo é entender o impacto das falhas em produção nos sistemas de software e desenvolver planos mais sólidos para mitigar falhas futuras.
O SRE também se concentra no planejamento de capacidade, um processo que determina os Recursos necessários para executar funções comerciais essenciais, escalar essas funções comerciais e desenvolver novos aplicativos e funcionalidade. Além disso, as equipes de SRE definem métricas que servem para avaliar a entrega de atualizações e a implementação de novas funcionalidades.
Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.
Os engenheiros de confiabilidade do site usam várias métricas para ajudar a rastrear a consistência da entrega de serviços e a confiabilidade dos sistemas de software, incluindo:
Os SLAs estabelecem os termos e condições entre um provedor de serviços e um cliente. Esses acordos definem o nível de desempenho, os indicadores acordados para medição de desempenho e as consequências em caso de falha na entrega dos serviços. Um serviço comum definido em um SLA é o tempo de atividade, ou seja, o tempo em que o serviço permanece disponível.
O orçamento de erro é uma ferramenta que as equipes de SRE usam para conciliar automaticamente a confiabilidade de serviço de uma empresa com seu ritmo de desenvolvimento de software e inovação.Os orçamentos de erro estabelecem um nível de risco de erro alinhado aos acordos de nível de serviço.
Uma meta de tempo de atividade de 99,999%, conhecida como "disponibilidade de cinco noves", é um limite comum de SLA. Isso significa que o orçamento mensal de erros - a quantidade total de downtime permitido sem consequências contratuais para um mês específico é de cerca de 4 minutos e 23 segundos. Se uma equipe de desenvolvimento quiser implementar novas funcionalidades ou melhorias em um sistema, o sistema não deve exceder o orçamento de erros.
Os orçamentos de erro ajudam as equipes de desenvolvimento e operações a melhorar a estabilidade e o desempenho dos serviços. Eles também orientam decisões baseadas em dados sobre a implementação de novas funcionalidades ou aplicações e impulsionam a inovação dentro de limites de risco aceitáveis.
As equipes de SRE também ajudam a definir objetivos de nível de serviço (SLOs), que são metas de desempenho acordadas para um serviço específico em um período determinado. Os SLOs definem o status esperado dos serviços, ajudam os stakeholders a gerenciarem a saúde dos serviços e a cumprirem os SLAs.
Os SLOs são medidos por indicadores de nível de serviço (SLIs). Os SLIs são medições quantitativas apresentadas em percentuais, médias ou taxas. Eles incluem a medição de serviços como tempo de atividade, latência, taxa de transferência e taxas de erro.
DevOps é uma metodologia de desenvolvimento de software que acelera a entrega de aplicações e serviços de alta qualidade ao unir e automatizar o trabalho das equipes de desenvolvimento e operações de TI. O DevOps automatiza o ciclo de vida do desenvolvimento de software (SDLC), promove responsabilidade compartilhada entre desenvolvimento e operações e envolve todos os stakeholders relevantes no processo.
O SRE e o DevOps são estratégias complementares de engenharia de software que eliminam silos e resultam em uma entrega de software mais eficiente e confiável.
Enquanto as equipes de DevOps se concentram em responder à pergunta “O que este software deve fazer?”, as equipes de SRE trabalham para responder “Como este software pode ser implementado e mantido para funcionar como esperado?”. As equipes de SRE fornecem às equipes de DevOps dados reais sobre o desempenho do software, equilibrando a prática com a teoria no desenvolvimento de software.
Assim como a SRE, o DevOps torna as empresas mais ágeis ao equilibrar a necessidade de acelerar entregas com a de preservar a estabilidade do ambiente de produção. Tanto o SRE quanto o DevOps visam alcançar esse equilíbrio estabelecendo um risco aceitável de erros. As equipes de DevOps focam em implementar atualizações e novas funcionalidades, enquanto a SRE atua para garantir a confiabilidade dos sistemas à medida que eles escalam.
As equipes de DevOps e SRE otimizam os métodos de comunicação e estabelecem um ciclo de feedback constante. Esse ciclo funciona assim: quando a equipe de SRE identifica a causa raiz de um erro, ela envia suas conclusões à equipe de DevOps, que desenvolve uma atualização para a próxima versão do software.
Enquanto isso, as equipes de SRE criam automações para resolver o problema e acompanham os dados de monitoramento e registro para garantir que ele tenha sido resolvido.
Além de contribuir para o sucesso do DevOps, a engenharia de confiabilidade local pode ajudar as organizações a:
Quando as organizações migram de TI tradicional e data centers locais para a nuvem híbrida, geralmente geram volumes maiores de dados operacionais. O SRE desempenha um papel crítico ao usar esses dados para automatizar a administração de sistemas, operações e resposta a incidentes, além de melhorar a confiabilidade empresarial à medida que o ambiente de TI se torna mais complexo.
Uma abordagem de desenvolvimento nativa em nuvem — especificamente, construir aplicações como microsserviços e implementá-las em contêineres — pode simplificar o desenvolvimento, a implementação e a escalabilidade de aplicações. Mas o desenvolvimento nativo em nuvem também cria um ambiente cada vez mais distribuído, o que complica a administração, as operações de TI e o gerenciamento.
A equipe de SRE pode acompanhar o ritmo acelerado da inovação promovido por uma abordagem cloud-native e aumentar a confiabilidade do sistema, sem sobrecarregar o time de DevOps.
Aproveite o poder da IA e da automação para resolver problemas de forma proativa em todo o stack de aplicações.
Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicações nativas da nuvem em diversos dispositivos e ambientes.
Acelere a agilidade e o crescimento dos negócios, modernize suas aplicações de forma contínua em qualquer plataforma utilizando nossos serviços de consultoria de nuvem.