Embora seja um conceito relativamente novo, os engenheiros de confiabilidade do site (SREs) tornaram-se cruciais para as equipes de DevOps, ajudando a resolver uma série de problemas operacionais, como disponibilidade de rede e experiência do usuário. No entanto, em anos anteriores, algumas pessoas questionaram a longevidade de tal função.
Este artigo discutirá vários motivos pelos quais as funções de engenharia de confiabilidade do site vieram para ficar e por que se tornaram essenciais para o DevOps.
O que são engenheiros de confiabilidade do local (SREs)?
Um engenheiro de confiabilidade local ajuda a conectar as equipes de desenvolvimento e as operações de TI, concluindo tarefas anteriormente atribuídas a funções operacionais. SREs usar uma variedade de ferramentas de automação para fins de solução de problemas, criando sistemas de software escaláveis e confiáveis.
A função gira em torno da automação e padronização, à medida que os sistemas em nuvem se tornam cada vez mais predominantes. Os SREs também desempenham um papel vital em garantir que a experiência do usuário dos sistemas seja do mais alto padrão.
Por que as funções de engenharia de confiabilidade do site vieram para ficar
Vamos dar uma olhada em dois dos principais motivos pelos quais as funções SRE vieram para ficar.
Expectativas do usuário
A principal razão para o aumento da popularidade e a longevidade esperada das funções de engenharia de confiabilidade do site é a experiência do usuário. No clima moderno, as expectativas do usuário são muito altas e funções mais dedicadas são necessárias para ajudar a fornecer um serviço que não seja apenas aceitável, mas que tente superar as expectativas do usuário.
Mesmo na década de 2010, os usuários eram muito mais pacientes em termos de velocidade de carregamento do site e com que rapidez eles poderiam acessar as informações. Mesmo travamentos e falhas de carregamento eram tolerados sem que o usuário saísse de um site.
No entanto, tudo isso mudou devido à competitividade do mercado, bem como ao crescimento do trabalho remoto, que aumentou a dependência de recursos online. Isso significa que, se um serviço estiver indisponível por algum período, os usuários não poderão realizar seu trabalho.
A função de um SRE inclui a otimização de sistemas, garantindo que eles funcionem no nível necessário e que os recursos estejam sempre disponíveis para aqueles que precisam deles. Isso torna os SREs essenciais para as equipes de DevOps que podem não ter a capacidade de se concentrar em atender suficientemente às expectativas do usuário.
A Complexidade das Arquiteturas de Software
Outro fator que agregou muito valor à função de um SRE é sua capacidade de fornecer o suporte necessário para ambientes e arquiteturas de software que continuar a desenvolver em termos de complexidade. O Kubernetes é uma dessas arquiteturas que requer atenção dedicada.
Aplicações distribuídas em sistemas como Kubernetes e outras plataformas nativas em nuvem exigem pessoal especializado com conhecimento e experiência necessários. O aprendizado de máquina também está se tornando mais prevalente e requer foco especial de uma perspectiva de desempenho. Em 2020, apenas mais de 22% das empresas teve modelos de aprendizado de máquina em produção por um a dois anos.
Espera-se que esse nível de complexidade cresça ainda mais nos próximos anos, à medida que os sistemas nativos da nuvem se tornarem a norma. É por isso que devem ser criadas novas funções que vão além de um engenheiro de TI normal.
Desafios para funções de SRE
Como qualquer função de TI, a função de um engenheiro de confiabilidade do site sempre enfrenta desafios que levam as pessoas a questionar se os SREs são uma solução de longo prazo ou se é uma especialização de nicho.
Falta de oportunidade longe das empresas de hiperescala
A função de um SRE foi criada por empresas de hiperescala como o Google, que gerenciam sistemas de TI extremamente grandes. Para empresas que não possuem uma infraestrutura de TI tão ampla e variada em escala global, há dúvidas se tal função é necessária.
No entanto, como mencionado anteriormente, o crescimento da tecnologia nativa da nuvem não mostra sinais de desaceleração e, com esse crescimento, podem surgir oportunidades para SREs em organizações menores.
O papel de um SRE é considerado obscuro
A ambigüidade de uma função de SRE pode ser considerada uma queda em alguns casos, com muitas empresas inseguras sobre o que esses profissionais oferecem quando comparados a um engenheiro de sistemas tradicional. Em muitos casos, os SREs são considerados um híbrido de um engenheiro de software e uma função de operações de TI.
Felizmente, o DevOps percebeu o potencial dos SREs e sua capacidade de fornecer uma ponte importante entre desenvolvedores e engenheiros, ajudando a realizar tarefas dedicadas com alto padrão.
SRE vs. DevOps
Embora ambos os papéis estejam conectados e compartilhem algumas semelhanças, existem algumas diferenças claras.
- Processos – DevOps tem visibilidade total do ambiente de desenvolvimento o que lhes permite fazer alterações desde os estágios iniciais de desenvolvimento até a produção. Os SREs, por outro lado, têm apenas visibilidade do processo de produção, permitindo-lhes fazer sugestões para garantir a manutenção dos níveis de desempenho.
- Implementação – A tarefa de implementar novas funcionalidades em um sistema é da equipe DevOps. Enquanto isso, os SREs têm a tarefa de garantir que os novos recursos não causem falhas no sistema ou afetem o desempenho durante o estágio de produção.
- Foco principal – O foco principal de um engenheiro de confiabilidade local é garantir a confiabilidade, disponibilidade e escalabilidade do sistema. O DevOps se concentra na rapidez com que o desenvolvimento do produto é concluído, bem como em sua continuidade.
- Estrutura – A estrutura de uma equipe SRE e uma equipe DevOps têm diferenças óbvias. As equipes de SRE são formadas por indivíduos com conjuntos de habilidades semelhantes em relação ao desenvolvimento e às operações. Já as equipes de DevOps são formadas por profissionais que possuem papéis específicos relacionados a aspectos individuais do projeto. Essas funções podem incluir o líder da equipe, proprietário do produto, arquiteto de nuvem, desenvolvedor de software, engenheiro de controle de qualidade, administrador do sistema, gerente de lançamento e muito mais.
- Ferramentas – As equipes de DevOps costumam usar ferramentas como ambientes de desenvolvimento integrado (IDEs) ao desenvolver um produto. Estes podem incluir Jenkins (integração contínua e desenvolvimento contínuo), JIRA (gerenciamento de mudanças), Splunk (monitoramento de log) e GitHub (controle de versão distribuído). SREs geralmente usam ferramentas como Prometheus e Grafana (coleta e visualização de métricas, como uso de CPU e espaço disponível em disco), OP5 e PagerDuty (alertas de incidentes), Ansible e Kubernetes (orquestração de contêineres), bem como uma variedade de plataformas de nuvem.
- Relatório de erros – Código de depuração DevOps sempre que um bug é relatado no produto final. Os SREs não estão envolvidos com a depuração de uma perspectiva de desenvolvimento e só são obrigados a executar tais tarefas se houver uma interrupção de produção, se houver problemas de infraestrutura ou talvez se eles estiverem lidando com configurações incorretas comuns da AWS.
- Desempenho de medição – As métricas típicas que o DevOps usa para medir o desempenho são a frequência de implantação e a taxa de falha de implantação. Os SREs medem os objetivos de nível de serviço (SLOs), indicadores de nível de serviço (SLIs), acordos de nível de serviço (SLAs) e orçamentos de erro.
- Tratamento de Incidentes – No caso de tratamento de incidentes, as equipes de DevOps trabalham para mitigar um problema com base no feedback fornecido. Os SREs então analisam os problemas pós-incidente, incluindo a causa raiz do problema. Isso é documentado e fornecido aos desenvolvedores para correção.
Por que as funções de SRE são essenciais para o DevOps – Conclusão
Como você pode ver, as duas funções diferem significativamente, mas os SREs podem desempenhar um papel crítico para garantir que a equipe de DevOps entrega um produto que oferece desempenho máximo.
Os principais benefícios de empregar profissionais na capacidade de um engenheiro de confiabilidade local são os altos níveis de desempenho e confiabilidade do produto para atender às expectativas do usuário e, ao mesmo tempo, ajudar a gerenciar a complexa arquitetura de TI.
No futuro, as organizações que gerenciam uma grande quantidade de ativos de TI baseados em nuvem podem ter dificuldades para fornecer produtos eficientes sem esses profissionais. Como tal, é provável que a demanda por funções de SRE cresça.