Um engenheiro de confiabilidade do local (SRE, Site Reliability Engineer) pode ajudar a permitir o sucesso do DevOps, oferecer maior visibilidade da integridade dos serviços essenciais, melhorar os tempos de resposta a incidentes e garantir alta disponibilidade de todos os aplicativos. Neste artigo, exploraremos o que é um SRE e como ele pode ajudar sua organização a melhorar a qualidade e a confiabilidade gerais do ciclo de vida de desenvolvimento de software (SDLC, Software Development Lifecycle).
O que é um engenheiro de confiabilidade do local?
Um engenheiro de confiabilidade do local é responsável pelo monitoramento, automação e confiabilidade das operações de TI. Eles usam ferramentas de desenvolvimento de software para automatizar tarefas de operações de TI, como gerenciamento de mudanças, resposta a incidentes e gerenciamento de sistemas de produção. Eles também são responsáveis por monitorar a integridade das implantações de software e retransmitir logs e dados aos desenvolvedores.
Por que SRE?
As iniciais SRE podem se referir a um engenheiro de confiabilidade do local ou à prática de engenharia de confiabilidade do local. O objetivo da prática de SRE é garantir que os serviços e aplicativos de uma organização estejam sempre ativos e disponíveis, mesmo por meio de atualizações frequentes realizadas pela equipe de desenvolvimento.
A função de SRE depende muito de ferramentas de software e automação que podem simplificar as tarefas diárias, como monitoramento de aplicativos ou gerenciamento de sistemas. Quando os desenvolvedores atualizam um aplicativo, suas alterações às vezes podem afetar negativamente o aplicativo e diminuir seu desempenho ou até mesmo fazer com que ele falhe. Os SREs estão lá para observar esses possíveis problemas e garantir que os erros no código de software ou na implementação não afetem a capacidade da organização de atender satisfatoriamente seus clientes.
Uma grande parte das responsabilidades de um SRE é atuar como um buffer e facilitador entre o desenvolvimento e as operações de TI. Os desenvolvedores querem atualizar seu software com rapidez e frequência, mas as equipes de operações querem se mover um pouco mais devagar para garantir que as atualizações não causem problemas.
Devido a essa necessidade de manter o melhor equilíbrio entre desenvolvimento e operações, os SREs devem combinar vários trabalhos, incluindo engenharia de software, operações e gerenciamento de infraestrutura, em um só. Normalmente, eles também são muito adeptos de criar e gerenciar redes e sistemas em geral, e sabem como prever e evitar tempo de inatividade caro e interrupções do sistema.
O que os engenheiros de confiabilidade do local fazem?
Os SREs trabalham para manter a disponibilidade, o desempenho e a confiabilidade da infraestrutura de TI de uma organização. Isso inclui o projeto, a implementação e o monitoramento geral dos sistemas para mantê-los funcionando com eficiência máxima e sempre capazes de oferecer o tipo de experiência intuitiva e responsiva que os usuários finais desejam.
Aproveitando as ferramentas de software, os SREs podem automatizar e simplificar muitas tarefas operacionais essenciais, como análise de log, correção e atualização de aplicativos e sistemas, testes de ambientes de produção e assim por diante. Eles também gerenciam de perto todos os sistemas, detectam e resolvem quaisquer problemas que surjam e conduzem post-mortem após um incidente para analisar o que aconteceu e como ele pode ser evitado no futuro.
Outras responsabilidades incluem:
- Consultoria com desenvolvedores para garantir que a confiabilidade seja desenvolvida e integrada a cada aplicativo
- Trabalhar com operações para ver se aplicativos novos e atualizados têm suporte suficiente da infraestrutura de TI existente
- Previsão e planejamento para necessidades de capacidade, bem como desempenho e resiliência do sistema
- Definir as principais métricas como indicadores de nível de serviço (SLIs, Service Level Indicators) e objetivos de nível de serviço (SLOs, Service Level Objectives) para medir o progresso e o sucesso ao longo do tempo
- Melhorar o ciclo de vida do desenvolvimento de software, especialmente após incidentes
- Auxiliar as equipes de desenvolvimento ao expandir o sistema, implementar a automação e criar novos recursos
- Responder e resolver problemas de escalonamento de suporte
O SRE é o mesmo que DevOps?
O SRE não é o mesmo que DevOps, mas há algumas semelhanças nos objetivos de cada equipe. Tanto SREs quanto DevOps querem que o desenvolvimento e as operações trabalhem de maneira mais próxima e eficaz. Tanto SREs quanto DevOps favorecem muito a automação e a otimização do sistema.
Embora as práticas tradicionais de DevOps tenham levado a uma melhor colaboração geral e ciclos de desenvolvimento de software mais rápidos, DevOps normalmente não tinha ninguém em sua equipe que fosse especificamente responsável por impulsionar o desenvolvimento que melhorasse ou DevOps aumentasse o desempenho e a confiabilidade do local. É aqui que o SRE brilha. O único objetivo de uma SRE é oferecer (ou manter) confiabilidade e escalabilidade em todo o sistema.
Quando DevOps se concentram em velocidade e agilidade, os SREs se concentram em gerenciar a infraestrutura e mantê-la disponível e de alto desempenho. DevOps é mais uma abordagem cultural em uma organização, mas um SRE emprega habilidades altamente especializadas para dar suporte a DevOps enquanto também garante operações de pico.
Mesmo na cultura de DevOps, os SREs servem como uma ponte entre as operações e o desenvolvimento de TI. Eles geralmente agem como garantia de qualidade, mas é uma garantia de qualidade proativa. Os SREs são frequentemente um fator crítico que permite que o DevOps tenha sucesso ao ajudar a definir o equilíbrio ideal entre a estabilidade do sistema e a velocidade de desenvolvimento.
Quais habilidades um SRE precisa?
Como os SREs formam a ponte entre as operações de TI e os desenvolvedores, eles precisam de uma grande variedade de habilidades. Muitos dos SREs atuais são ex-sysadmins que sabem como codificar ou ex-desenvolvedores de software com experiência no lado das operações.
Os SREs precisam saber como projetar e criar sistemas de TI resilientes escaláveis. Eles precisam entender uma variedade de plataformas de computação em nuvem. Eles também precisam saber como configurar protocolos de rede e gerenciar bancos de dados. E, talvez o mais importante, eles precisam de excelentes habilidades de resolução de problemas e comunicação.
Outras habilidades valiosas podem incluir:
- Compreensão profunda da infraestrutura de TI, tanto na nuvem quanto no local
- Experiência em tecnologia e orquestração de contêineres
- Capacidade de formar relacionamentos estratégicos com parceiros, fornecedores e colegas de todas as unidades de negócios
- Experiência com linguagens de codificação, ferramentas de monitoramento e controle de versão, bancos de dados e sistemas operacionais
- Gerenciamento e manutenção da infraestrutura do site
- Familiaridade com integração contínua/desenvolvimento contínuo (CI/CD )
- Experiência com sistemas de computação distribuídos
Os SREs estão sob demanda?
A resposta a essa pergunta é um sim ressonante! Os SREs estão mais em demanda do que nunca, e esse impulso não mostra sinais de desaceleração. Os analistas do setor no Gartner estimaram que, até 2027, 75% das empresas usarão práticas de SRE em toda a organização para otimizar as operações. Essa porcentagem é um grande salto de apenas 10% das empresas que estavam usando práticas de SRE em 2022.
À medida que as organizações movem cada vez mais seus aplicativos e serviços online, os clientes continuam esperando acesso contínuo aos serviços sem qualquer tempo de inatividade ou atraso. Os SREs são uma parte essencial para atender a essas expectativas, especialmente em setores em que o tempo de inatividade pode causar repercussões graves, como tecnologia, saúde e finanças.
Grandes organizações globais precisam de engenheiros com habilidades SRE para garantir a confiabilidade de seus serviços e aplicativos. Embora a função tenha muitos requisitos técnicos, o plano de carreira SRE é totalmente aberto e pode levar a funções adicionais de gerenciamento e liderança.