
Foi com o intuito de preencher a lacuna existente entre as equipes de Desenvolvimento (Dev) e Operação (Ops) que acabaram surgindo vários novos cargos de engenheiro de software ao longo dos últimos anos. Mas, afinal: do que tratam especificamente um engenheiro de software, um engenheiro DevOps, um engenheiro SRE e um engenheiro de cloud? Os termos são bem semelhantes, mas muita atenção porque possuem escopos um pouco distintos.
Vem comigo que neste artigo explico um pouco mais do que faz cada um deles.
Engenheiro de software
Uma pessoa que faz o trabalho de engenheiro de software em geral estuda Ciências da Computação para aplicar o princípio da engenharia na arquitetura de aplicações, códigos e processos. É um profissional com experiência em sistemas e linguagens de computador, tais como Python, C, JavaScript etc. Entre suas tarefas diárias estão:
- Analisar o requisitos de usuário
- Escrever o código com base nesses requisitos
- Executar tarefas de manutenção e integração
- Testar novas tecnologias antes de implementá-las
- Executar e desenvolver o plano de projeto
Engenheiro DevOps
DevOps é uma abordagem de desenvolvimento onde uma única equipe gerencia todo o ciclo de vida da aplicação, desde o desenvolvimento, passando também pelo teste, deploy, monitoramento e operações. Isso é possível graças a alterações frequentes no código com base em integração contínua e deploy contínuo (CI/CD).
O DevOps engloba cinco características principais:
- Colaboração entre as equipes para entregas mais ágeis: ao reduzir silos e quebrar barreiras entre equipes, podemos aumentar a colaboração e o rendimento.
- Apoio à responsabilidade de ponta a ponta: as falhas são tidas como oportunidades de aprendizado e crescimento entre as equipes.
- Otimiza o ciclo de desenvolvimento ao implementar alterações graduais: além de serem mais fáceis de revisar, se uma alteração porventura introduzir um bug em produção, será possível reduzir o tempo médio de recuperação e simplificar o roll back.
- Estabelece boas práticas usando ferramentas de automação para reduzir ao máximo o trabalho manual automatizar tudo o que for possível.
- Aquilo que não se mede não se gerencia, logo, o monitoramento é a melhor forma de medir se os benefícios anteriores seriam bem atendidos, buscando a melhoria contínua.
Engenheiro SRE
No que se refere à automação e ferramentas, o engenheiro SRE compartilha da mesma premissa do DevOps, qual seja, a de eliminar ao máximo o trabalho manual. Já para o monitoramento, o SRE se vale de indicadores de observabilidade para medir a integridade e a confiabilidade do sistema. É importante ressaltar que SRE e DevOps não são abordagens concorrentes, mas complementares, a fim de desenvolver software melhor e em menos tempo.
Como um engenheiro SRE, tenha em mente que é necessário possuir uma sólida experiência não apenas com programação, como também conhecimentos sobre Linux, kernel, redes e Ciência da Computação.
Algumas das habilidades técnicas buscadas ao se contratar engenheiros DevOps ou SRE incluem:
Fundamentos do sistema operacional: a maior parte do mercado de servidores é dominada pelo Linux, portanto foco nele (em quantidade bem menor estão as organizações que usam o Windows como servidor no ambiente de produção)
Saber programar: essa é uma habilidade obrigatória, já que a única forma de automatizar o máximo possível é usando uma linguagem de programação. A maioria dos engenheiros usa Python ou Shell para automação, mas você também pode aprender a linguagem GO.
Conhecimento de redes: como a maior parte do trabalho pesado é feito pelo provedor de nuvem, você deve ter conhecimento pelo menos básico de redes.
Conhecimento da nuvem: esteja bem familiarizado com pelo menos um provedor de nuvem: seja AWS, Google ou Azure.
Ferramentas padrão: também é bom se manter familiarizado com todas as ferramentas modernas de DevOps, como GIT, Jenkins, Docker, Kubernetes e Terraform. Vale lembrar que o uso de cada ferramenta depende do requisito e do escopo do projeto atual.
Resumindo, tanto o engenheiro SRE como o DevOps tem como foco a área de infraestrutura e operações. Eles automatizam tarefas operacionais que, até bem pouco tempo atrás eram feitas de forma manual pela equipe de operações.
Engenheiro cloud
O papel do engenheiro cloud é a entrega e otimização do workload em execução na nuvem. As funções do engenheiro de nuvem podem ser específicas para arquitetar soluções de nuvem, administrar o sistema e garantir que esteja em pleno funcionamento e automatização de recursos na nuvem. Entre suas responsabilidades estão:
- Migrar a aplicação local para a nuvem
- Configuração de recursos e componentes como segurança, bancos de dados, servidores etc
- Fazer o deploy da aplicação na nuvem
- Monitorar a aplicação na nuvem
Um engenheiro de nuvem precisa combinar práticas SRE/DevOps e de engenharia de software em uma situação ideal, mas deve se especializar em serviços de nuvem.
Conclusão
Independente da abordagem que você esteja seguindo em sua organização, a ideia principal será sempre encontrar uma maneira inovadora de desenvolver um software melhor e mais confiável. Entre em contato para esclarecer dúvidas e conhecer o jeito O2B de planejar e desenvolver software usando abordagens modernas como DevOps e SRE.

