O que é um engenheiro de confiabilidade do site?
Os engenheiros de confiabilidade do site (SREs) têm um amplo conhecimento da tecnologia por trás do site ou aplicativo da sua organização. Eles também entendem as necessidades e requisitos comerciais dos clientes.
Um engenheiro de confiabilidade do site (SRE) é alguém que aplica os princípios fundamentais da ciência da computação e da engenharia de software para projetar e desenvolver sistemas de computação com ajuste de escala, distribuídos e confiáveis. O termo, cunhado pelo Google, refere-se ao tratamento das operações como um problema de software, pois visa desenvolver sistemas de software em grande escala para fornecer soluções automatizadas para problemas operacionais complexos.
Em sua essência, um engenheiro de confiabilidade do site depende de um conjunto de práticas de desenvolvimento que incorporam aspectos da ciência da computação e da engenharia de software às operações para melhorar o fluxo de trabalho diário, bem como a eficiência e a confiabilidade do sistema. Essencialmente, os SREs são responsáveis por fornecer, proteger e progredir os sistemas e serviços de software de uma empresa.
Aqui, vamos explorar as atividades diárias dos engenheiros de confiabilidade do site, o valor que eles trazem para as equipes e empresas de DevOps e suas principais responsabilidades. Também nos aprofundaremos em como medir a confiabilidade do site e explicaremos a diferença entre os SREs e os engenheiros de DevOps. Por fim, este artigo explorará a engenharia de confiabilidade do site como uma escolha de carreira.
Os SREs são responsáveis por muitas atividades diferentes e dividem seu tempo entre tarefas de administração do sistema e desenvolvimento de software. Em geral, isso significa gerenciar vários projetos, configurar a infraestrutura e participar de reuniões de engenharia.
As tarefas de administração do sistema geralmente incluem manter a confiabilidade e o desempenho, corrigir problemas e erros, automatizar tarefas, responder a incidentes e gerenciar responsabilidades de plantão.
Quando se trata de tarefas de desenvolvimento, os SREs passam uma parte significativa do seu tempo construindo processos ou metodologias baseados em infraestrutura para serem usados por engenheiros de software na equipe de confiabilidade do site ou em ambientes multifuncionais. Por exemplo, eles podem desenvolver um processo para monitoramento 24 horas do desempenho e da latência do serviço.
No desenvolvimento, os SREs do ciclo colaboram de perto com os gerentes de produto e suas equipes, garantindo que a visão declarada de um produto seja compatível com requisitos de sistema não funcionais – ou seja, desempenho, latência, disponibilidade e segurança. Eles também trabalham com as equipes de engenharia na fase de preparação do processo de compilação para garantir a maior eficiência da entrega.
Ao aplicar uma mentalidade rigorosa de engenharia de software à administração do sistema, os SREs atuam como uma ponte entre o desenvolvimento de software e as operações. Os SREs geram e documentam conhecimentos específicos cruciais de campo e do projeto e garantem que sejam acessíveis. Eles fornecem um manual sólido de diretrizes operacionais, eliminando o trabalho prático e a redundância. Os melhores SREs encontram um equilíbrio entre impulsionar o crescimento do produto de forma constante e manter a confiabilidade para os clientes.
Por meio da aplicação rigorosa dos princípios de engenharia de software às operações, os SREs aumentam significativamente a confiabilidade do software nos produtos da organização.
O SRE é responsável por manter a confiabilidade. Isso significa facilitar respostas a erros automatizadas, simplificadas e eficientes e reduzir o erro humano em escala. Os SREs passam muito tempo eliminando problemas encontrados, configurando ferramentas internas e definindo e testando benchmarks do sistema. Eles também desenvolvem e monitoram pipelines de engenharia robustos para melhorar a operacionalidade diária do produto. Os SREs trabalham de mãos dadas com as equipes de desenvolvimento, aplicando uma mentalidade de engenharia de software para enfrentar os desafios operacionais e aumentar a confiabilidade do sistema.
Em geral, os SREs são responsáveis pelo desempenho, disponibilidade, confiabilidade, eficiência, gerenciamento de mudanças, monitoramento e resposta a emergências de um sistema. Outras tarefas principais dos SREs incluem:-
-
Monitorar os Indicadores de Nível de Serviço (SLIs) e definir os Objetivos de Nível de Serviço (SLOs) – os SREs facilitam os SLIs ideais para um desempenho eficiente por meio da utilização adequada dos recursos, com erros mínimos. Eles também definem SLOs para revisar metas internas, como alta disponibilidade.
-
Avaliações de risco e orçamento de erros – os SREs são responsáveis por estabelecer a meta de confiabilidade dos sistemas, até mesmo assumindo os riscos calculados com os lançamentos subsequentes de produtos.
-
Monitorar os resultados — criação de tíquetes, registros e alertas (indicando diferentes níveis de ações humanas necessárias) são tarefas críticas para um SRE.
-
Previsão de demanda e planejamento de capacidade – os projetos exigem avaliações cuidadosas para planejar a demanda futura, interrupções e emergências. Um SRE trabalha em conjunto com os chefes de produto para executar essas tarefas.
-
Colaboração – os SREs devem colaborar com muitas equipes diversas, disseminando as melhores práticas e revisando as melhores decisões de confiabilidade para melhorar o desenvolvimento de produtos entre departamentos.
-
Escrever retrospectivas – relatórios retrospectivos ajudam a equipe a aprender com incidentes para evitar sua recorrência.
A confiabilidade do site é tipicamente medida em três dimensões.
Primeiro, existem os SLIs, que são usados para medir o uso no nível do sistema, lentidão, interrupções, erros, tráfego e vários outros fatores. Os SLIs estão diretamente ligados à experiência do usuário, se os números não forem desejáveis, a satisfação do cliente será afetada.
Em segundo lugar, há os SLOs, que definem a meta de confiabilidade de um produto ou serviço. Por exemplo, se tivermos um SLI que exija que a latência da solicitação seja inferior a 500 ms nos últimos 15 minutos com um percentual de 95%, um SLO de 99% precisaria de um SLI de 99%. Esses são os objetivos internos sobre os quais a equipe de confiabilidade do site e as partes interessadas internas (incluindo desenvolvedores e gerentes de produto) devem concordar.
Por fim, há o Service-Level Agreement (SLA). Isso pode ser um contrato implícito ou explícito no nível comercial entre uma empresa e seus clientes, definindo as consequências se a organização não cumprir o SLA. Ele também podem incluir orçamentos para erros, que medem o risco que um SRE pode assumir para fornecer serviços, como manutenção e melhorias, sem comprometer os SLAs.
A diferença entre as duas posições é principalmente que os engenheiros de confiabilidade do site concentram seus esforços no aprimoramento da disponibilidade e confiabilidade do sistema, enquanto os engenheiros de DevOps tem como foco a velocidade e a automação do desenvolvimento e implantação.
Espera-se que os SREs escrevam e implantem software com eficiência, ao mesmo tempo em que investigam a confiabilidade do código e criam soluções inovadoras para corrigir erros. Os engenheiros de DevOps buscam automatizar processos e monitorar todo o ciclo de vida do produto, já os SREs minimizam os riscos avaliando as redundâncias e acelerando o crescimento.
Para se tornar um SRE, um profissional de tecnologia precisa de alguns anos de experiência e conhecimento de uma ou mais linguagens de programação, como Python, Ruby ou Java. Eles também devem ter experiência em scripts de shell, usando sistemas de controle de versão como o Git com o GitLab e automatizando pipelines contínuos de teste e entrega (CI/CD).
Além disso, os SREs devem estar familiarizados com os bancos de dados SQL e NoSQL. Experiência em conteinerização, como Docker e Kubernetes, também é muito desejável.
A engenharia de confiabilidade de site trata do projeto e do desenvolvimento de sistemas de computação com ajuste de escala, distribuídos e confiáveis. O trabalho tem como foco a execução de tarefas de administração do sistema e a criação de software. Esse profissional traz a mentalidade da engenharia de software para a administração do sistema, atuando como uma ponte entre o desenvolvimento de software e as operações.
A engenharia de confiabilidade de site é uma carreira diversa, gratificante e lucrativa.
Experimente o GitLab
Descubra o que sua equipe pode fazer com uma única plataforma de distribuição de software.
Faça uma avaliação gratuitaDúvidas? Estamos aqui para ajudar você.
Fale com um especialista