Now Reading
O que é um Engenheiro DevOps?

O que é um Engenheiro DevOps?

Dev Ops Tech

Para responder a esta pergunta e entender por que é que é uma das posições de TI com mais procura, precisamos primeiro de compreender os problemas que pretende solucionar.

Método old-school: Waterfall

Tradicionalmente, para desenvolver um novo produto ou funcionalidade, estas eram as etapas a ser seguidas:

  1. O cliente identifica o que pretende e quando precisa dele;
  2. Analistas recolhem os requisitos, desenham a arquitetura e detalham a implementação;
  3. Programadores desenvolvem a sua interpretação das especificações, ocasionalmente efetuando testes unitários;
  4. Os testes são feitos de forma apressada e alguns bugs são corrigidos;
  5. São feitos os User Acceptance Tests mesmo antes do lançamento, com pouco espaço para correções;
  6. A equipa de operações instala o resultado nos ambientes de produção e é deixada com a tarefa de lidar com quaisquer problemas remanescentes após o mês inicial de passagem.

A imagem que se segue descreve os efeitos deste método compartimentalizado e unidirecional: as deficiências inerentes à pouca comunicação entre as equipes envolvidas, afastam cada fase do projeto do que o cliente realmente precisa.

A solução promissora: Agile

Agile é uma forma de trabalhar maximizando o valor entregue e expondo os problemas o mais cedo possível, fazendo soberanos a transparência e a comunicação. O Manifesto Agile sumariza perfeitamente os seus objetivos:

  • Indivíduos e interações acima de processos e ferramentas
  • Software em funcionamento é superior a documentação exaustiva
  • Colaboração com o cliente por cima de negociações contratuais
  • Responder à mudança mais que seguir um plano

Várias metodologias facilitam a adoção do Agile, mas, segundo a minha experiência, apenas nas fases de análise e desenvolvimento e essencialmente através do Scrum:

Para além do Agile a meio gás: DevOps

DevOps traz os benefícios do Agile para todo o pipeline de entrega, reunindo as diferentes equipas de forma colaborativa e eficiente com o objetivo de minimizar o tempo de resposta entre ideia e software utilizável. Na sua essência, DevOps transforma o processo de entrega de apenas alguns grandes e demorados lançamentos anuais, para fazê-lo sem esforço e com muito mais frequência em âmbitos menores. As vantagens desta abordagem são múltiplas:

  • Erros surgem e são corrigidos muito mais rapidamente e em ambientes menos críticos, melhorando a qualidade e a estabilidade do produto;
  • A instalação e reversão são muito mais simples, reduzindo o risco de mudança;
  • Qualquer modificação introduzida pelo desenvolvimento atinge as operações mais rapidamente;
  • Novas funcionalidades chegam ao cliente mais rapidamente e em sintonia com suas necessidades efetivas;
  • A comunicação e o feedback entre todas as equipas são imensamente melhorados, abatendo os silos.

Para o conseguir, DevOps pega na maioria das tarefas repetitivas, manuais e pesadas tornando-as contínuas, reduzindo incrementalmente a complexidade e o tempo de execução:

Planeamento Contínuo
Emprega computação em-memória, tecnologias analíticas avançadas e planeamento interativo para tornar os processos de planeamento e orçamentação mais ágeis e fáceis.

Integração Contínua
Implica fazer merge das alterações de código de volta ao branch principal o mais frequentemente possível; é feita então uma nova build que é testada automaticamente. Este processo evita o inferno de integração que geralmente acontece quando as pessoas esperam o dia do lançamento para fundir as suas alterações no branch de release. A integração contínua enfatiza a automação de testes para certificar que nenhuma funcionalidade é perdida sempre que novo código é integrado.

Testes Contínuos
É o processo de execução de testes automatizados como parte do pipeline de entrega de software, no sentido de obter feedback acerca dos riscos para o negócio associados a uma release candidate, o mais rápido possível. Testes contínuos evoluem e estendem os testes automáticos de forma a fazer face à maior complexidade e ritmo do desenvolvimento e entrega das aplicações modernas.

Entrega/Instalação Contínua
Uma extensão à integração continua, ela assegura que cada nova alteração é entregue ao cliente de forma rápida e sustentável. Ou seja, além de testes automatizados temos também um processo de entrega em produção automatizado, acionado premindo apenas um botão.
A instalação contínua leva o processo um passo mais além, fazendo com que todas as atualizações que passam por todas as fases do pipeline, sejam entregues ao cliente final sem intervenção humana. Apenas testes automáticos em erro impedem a sua instalação em produção.

Monitorização Contínua
É o processo e as tecnologias que as organizações podem implementar para permitir uma rápida identificação de problemas e riscos de segurança na infraestrutura de TI. É uma das ferramentas mais importantes disponíveis para as organizações, fornecendo às equipas de segurança informações de todos os ambientes em tempo real e suportando processos críticos de segurança, como a análise da origem de erros, resposta a incidentes, informação forenses acerca de possíveis ameaças.

Como lá chegar: Engenheiro DevOps

Algumas pessoas argumentam contra a designação de Engenheiro DevOps, pois esta não é uma função de TI, mas antes, uma certa maneira de trabalhar. Em última instância, as empresas definem quais as posições que querem contratar e a designação ganhou força, dando já origem a várias subcategorias:

Evangelista DevOps
Pessoa que promove os benefícios de DevOps, identificando e quantificando os benefícios para o negócio, resultantes da maior agilidade que DevOps oferece, ao mesmo tempo que minimiza o medo de falhas na organização. Como agente de mudança, o evangelista garante a adesão das equipes operacionais e de desenvolvimento, identifica as principais funções para dar suporte aos métodos de entrega de DevOps e garante que os profissionais de TI sejam formados e habilitados a fazer essas mudanças.

Gestor de Releases
Quer seja chamado de release manager, release engineer, ou product stability manager, o foco é o mesmo: tratar da gestão e coordenação do produto, desde o desenvolvimento até produção. Normalmente, trabalham nos detalhes técnicos e obstáculos nos quais um gestor de projeto tradicional não estaria envolvido. Supervisionam a integração e fluxo de desenvolvimento, testes e instalação, dando suporte à entrega contínua. O foco não é apenas criar, mas também manter a cadeia de entrega de aplicações de ponta a ponta.

Arquiteto de Automação
Também chamados especialistas de integração, esta função analisa, projeta e implementa estratégias para entregas contínuas, garantindo a alta disponibilidade nos sistemas de produção e pré-produção. Estes têm uma função abrangente de automação nas ferramentas de DevOps e Cloud, abarcando o mínimo desperdício nos principais processos do DevOps.

See Also
joao figueiredo cybersecurity

Programador/Tester
Estas funções orientadas a DevOps de programador/testador aumentam drasticamente as suas responsabilidades típicas. São responsáveis não apenas por transformar novos requisitos em código/testes, mas também por efetuar testes unitários, instalações e monitorização contínua. Esta mudança geralmente exige uma alteração para testes automatizados para que a qualidade não seja descurada. Um equívoco comum é pensar que se podem fazer testes manuais e ainda assim ser ágil. Quando isto acontece, a qualidade do produto geralmente diminui até a organização e os processos mudarem de acordo.

Professional de Experience Assurance (XA)
Embora esta função faça frequentemente parte do desenvolvimento de software, surge a necessidade de um novo tipo de controle quando as organizações adotam o DevOps. A necessidade de testadores de Quality Assurance é substituída por especialistas em XA, encarregados de garantir que todos os novos recursos e funções sejam lançados tendo sempre a experiência do utilizador em mente.

Engenheiro de Segurança
Num desenvolvimento tradicional em waterfall, a segurança do sistema é tradicionalmente uma reflexão póstuma. É um “requisito não-funcional” que, como a garantia de qualidade, é frequentemente abordado no final do desenvolvimento do sistema. Empresas com mentalidade DevOps fazem com que os engenheiros de segurança trabalhem lado a lado com os programadores, integrando as suas recomendações muito mais cedo no processo, incorporando a segurança no produto, e não apenas no final.

Utility Technology Player
As operações tradicionais de TI concentram-se em manter os servidores em execução e, como a causa mais comum de interrupção são os aplicativos lá executados, controles muito rigorosos são introduzidos para minimizar alterações. Estes variam desde validações de qualidade extensivas num ambiente de preparação, volumosa documentação de passagem de conhecimento e de operações obrigatórias até lançamentos em produção muito pouco frequentes. Os programadores tradicionais têm sido praticamente inativos ou pouco envolvimento em sistemas de pós-produção.
Os especialistas em operações começam a envolver-se em todo o processo de desenvolvimento, cada vez mais incluídos no planeamento dos sprints para garantir que a qualidade do serviço, a gestão de recursos e a segurança sejam também priorizados. DevOps requer que utility technology players possam operar eficazmente nas plataformas de desenvolvimento, ferramentas, redes, servidores e bases de dados, e até mesmo no desenvolvimento e suporte.

A história sem fim: Dev*Ops

A maturidade do processo de entrega de uma empresa determinará quanto valor pode ser extraído daquilo que DevOps tem para oferecer, mas a garantia de melhoria da comunicação e transparência, vale sempre o investimento. Devido à dificuldade de trazer mudanças efetivas para as organizações como um todo, muitas preferem adotar DevOps para funções independentes, em vez de funções de ponta a ponta na organização (à imagem do que acontece com o Agile).

Figure 4 – DevOps maturity levels

O DevOps não é um ponto final em que tudo é automatizado e uma única pessoa pode cuidar de todo o processo de entrega; é um movimento de constante melhoria com vista a uma melhor satisfação e produtividade no trabalho.

Fontes: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

What's Your Reaction?
Like
6
View Comments (0)

Leave a Reply

Your email address will not be published.