Por que o DevOps é necessário e quem são os especialistas em DevOps?

Quando um aplicativo não funciona, a última coisa que você quer ouvir de seus colegas é a frase “o problema está do seu lado”. Como resultado, os usuários sofrem – e não se importam com qual parte da equipe é responsável pela falha. A cultura DevOps surgiu justamente para unir desenvolvimento e suporte em torno de uma responsabilidade compartilhada pelo produto final.

Quais práticas estão incluídas no conceito de DevOps e por que são necessárias? O que os engenheiros de DevOps fazem e o que deveriam ser capazes de fazer? Especialistas da EPAM respondem a essas e outras perguntas: Kirill Sergeev, engenheiro de sistemas e evangelista de DevOps, e Igor Boyko, engenheiro líder de sistemas e coordenador de uma das equipes de DevOps da empresa.

Por que o DevOps é necessário e quem são os especialistas em DevOps?

Por que o DevOps é necessário?

Anteriormente, havia uma barreira entre os desenvolvedores e o suporte (as chamadas operações). Parece paradoxal, mas eles tinham objetivos e KPIs diferentes, embora estivessem fazendo a mesma coisa. O objetivo do desenvolvimento era implementar os requisitos de negócios o mais rápido possível e adicioná-los a um produto funcional. O suporte foi responsável por garantir que o aplicativo funcionasse de forma estável – e qualquer alteração colocaria a estabilidade em risco. Há um conflito de interesses - o DevOps apareceu para resolvê-lo.

O que é DevOps?

É uma boa pergunta – e controversa: o mundo ainda não chegou finalmente a acordo sobre isto. A EPAM acredita que DevOps combina tecnologias, processos e uma cultura de interação dentro de uma equipe. Esta associação tem como objetivo entregar continuamente valor aos utilizadores finais.

Kirill Sergeyev: “Os desenvolvedores escrevem o código, os testadores o revisam e os administradores implantam o produto final na produção. Durante muito tempo essas partes da equipe ficaram um tanto dispersas, e então surgiu a ideia de uni-las por meio de um processo comum. Foi assim que surgiram as práticas de DevOps.”

Chegou o dia em que desenvolvedores e engenheiros de sistemas se interessaram pelo trabalho uns dos outros. A barreira entre produção e apoio começou a desaparecer. Foi assim que surgiu o DevOps, que inclui práticas, cultura e interação em equipe.

Por que o DevOps é necessário e quem são os especialistas em DevOps?

Qual é a essência da cultura DevOps?

O fato é que a responsabilidade pelo resultado final é de cada membro da equipe. O mais interessante e difícil na filosofia DevOps é entender que uma pessoa específica não é apenas responsável por sua própria etapa de trabalho, mas é responsável por como todo o produto funcionará. O problema não está do lado de ninguém – ele é compartilhado e cada membro da equipe ajuda a resolvê-lo.

O mais importante em uma cultura DevOps é resolver o problema, e não apenas aplicar práticas DevOps. Além disso, estas práticas não são implementadas “do lado de alguém”, mas em todo o produto. Um projeto não precisa de um engenheiro DevOps em si – ele precisa de uma solução para um problema, e a função de um engenheiro DevOps pode ser distribuída entre vários membros da equipe com diferentes especializações.

Quais são os tipos de práticas DevOps?

As práticas DevOps cobrem todos os estágios do ciclo de vida do software.

Igor Boyko: “O caso ideal é quando começamos a usar práticas DevOps logo no início do projeto. Juntamente com os arquitetos, planejamos que tipo de paisagem arquitetônica a aplicação terá, onde ficará localizada e como dimensioná-la, e escolheremos uma plataforma. Hoje em dia a arquitetura de microsserviços está na moda - para isso escolhemos um sistema de orquestração: é preciso ser capaz de gerenciar cada elemento da aplicação separadamente e atualizá-la independentemente dos demais. Outra prática é “infraestrutura como código”. Este é o nome de uma abordagem na qual a infraestrutura do projeto é criada e gerenciada por meio de código, e não por meio de interação direta com servidores.

Em seguida, passamos para a fase de desenvolvimento. Uma das maiores práticas aqui é construir CI/CD: você precisa ajudar os desenvolvedores a integrar as mudanças no produto rapidamente, em pequenas porções, com mais frequência e sem problemas. CI/CD cobre revisão de código, upload do mestre para a base de código e implantação do aplicativo em ambientes de teste e produção.

Nos estágios CI/CD, o código passa por portões de qualidade. Com a ajuda deles, eles verificam se o código que sai da estação de trabalho do desenvolvedor atende aos critérios de qualidade especificados. Os testes de unidade e UI são adicionados aqui. Para uma implantação de produto rápida, simples e focada, você pode escolher o tipo de implantação apropriado.

Os profissionais de DevOps também têm um lugar na fase de suporte ao produto acabado. Eles são usados ​​para monitoramento, feedback, segurança e introdução de mudanças. O DevOps analisa todas essas tarefas de uma perspectiva de melhoria contínua. Minimizamos operações repetitivas e as automatizamos. Isso também inclui migrações, expansão de aplicativos e suporte de desempenho.”

Quais são os benefícios das práticas DevOps?

Se estivéssemos escrevendo um livro sobre práticas modernas de DevOps, haveria três pontos na primeira página: automação, aceleração de lançamentos e feedback rápido dos usuários.

Kirill Sergeyev: “A primeira coisa é a automação. Podemos automatizar todas as interações na equipe: escrevemos o código, implementamos, verificamos, instalamos, coletamos feedback e retornamos ao início. Tudo isso é automático.

A segunda é acelerar o lançamento e até simplificar o desenvolvimento. É sempre importante para o cliente que o produto entre no mercado o mais rápido possível e comece a trazer benefícios antes dos análogos dos concorrentes. O processo de entrega do produto pode ser melhorado infinitamente: reduza o tempo, adicione marcas de controle adicionais, melhore o monitoramento.

Terceiro é a aceleração do feedback do usuário. Se ele tiver comentários, podemos fazer ajustes imediatamente e atualizar o aplicativo imediatamente.”

Por que o DevOps é necessário e quem são os especialistas em DevOps?

Como os conceitos de “engenheiro de sistemas”, “engenheiro de construção” e “engenheiro de DevOps” se relacionam?

Eles se sobrepõem, mas pertencem a áreas ligeiramente diferentes.

Engenheiro de sistemas na EPAM é uma posição. Eles vêm em diferentes níveis: do especialista júnior ao especialista principal.

Um engenheiro de construção é mais uma função que pode ser desempenhada em um projeto. Agora é assim que são chamadas as pessoas responsáveis ​​pelo CI/CD.

Um engenheiro de DevOps é um especialista que implementa práticas de DevOps em um projeto.

Se somarmos tudo, obtemos algo assim: uma pessoa na posição de engenheiro de sistemas desempenha o papel de engenheiro de construção em um projeto e está envolvida na implementação de práticas de DevOps ali.

O que exatamente um engenheiro DevOps faz?

Os engenheiros de DevOps reúnem todas as peças que compõem um projeto. Eles conhecem as especificidades do trabalho de programadores, testadores, administradores de sistemas e ajudam a simplificar seu trabalho. Eles entendem as necessidades e exigências do negócio, seu papel no processo de desenvolvimento - e constroem o processo levando em consideração os interesses do cliente.

Conversamos muito sobre automação - é com isso que os engenheiros de DevOps lidam em primeiro lugar. Esse é um ponto muito amplo, que inclui, entre outras coisas, a preparação do ambiente.

Kirill Sergeyev: “Antes de implementar atualizações no produto, elas precisam ser testadas em um ambiente de terceiros. É preparado por engenheiros DevOps. Eles incutem uma cultura DevOps no projeto como um todo: introduzem práticas DevOps em todas as camadas de seus projetos. Estes três princípios: automação, simplificação, aceleração – eles levam onde podem chegar.”

O que um engenheiro DevOps deve saber?

Em geral, ele deve ter conhecimentos em diversas áreas: programação, trabalho com sistemas operacionais, bancos de dados, sistemas de montagem e configuração. Estes são complementados pela capacidade de trabalhar com infraestrutura em nuvem, orquestração e sistemas de monitoramento.

1. Linguagens de programação

Os engenheiros de DevOps conhecem diversas linguagens básicas para automação e podem, por exemplo, dizer a um programador: “Que tal você instalar o código não manualmente, mas usando nosso script, que automatiza tudo? Prepararemos um arquivo de configuração para ele, será conveniente para você e para nós lermos e poderemos alterá-lo a qualquer momento. Também veremos quem, quando e por que fará alterações.”

Um engenheiro DevOps pode aprender uma ou mais destas linguagens: Python, Groovy, Bash, Powershell, Ruby, Go. Não é necessário conhecê-los profundamente - o básico da sintaxe, os princípios OOP e a capacidade de escrever scripts simples para automação são suficientes.

2. Sistemas operacionais

Um engenheiro de DevOps deve entender em qual servidor o produto será instalado, em qual ambiente ele será executado e com quais serviços irá interagir. Você pode optar por se especializar em Windows ou na família Linux.

3. Sistemas de controle de versão

Sem conhecimento de um sistema de controle de versão, um engenheiro de DevOps não está em lugar nenhum. Git é um dos sistemas mais populares do momento.

4. Provedores de nuvem

AWS, Google, Azure - especialmente quando se trata da direção do Windows.

Kirill Sergeyev: “Os provedores de nuvem nos fornecem servidores virtuais que se adaptam perfeitamente ao CI/CD.

A instalação de dez servidores físicos requer cerca de cem operações manuais. Cada servidor deve ser iniciado manualmente, instalado e configurado o sistema operacional necessário, instalado nosso aplicativo nesses dez servidores e, em seguida, verificado tudo dez vezes. Os serviços em nuvem substituem esse procedimento por dez linhas de código, e um bom engenheiro de DevOps deve ser capaz de operar com elas. Isso economiza tempo, esforço e dinheiro – tanto para o cliente quanto para a empresa.”

5. Sistemas de orquestração: Docker e Kubernetes

Kirill Sergeyev: “Os servidores virtuais são divididos em containers, em cada um dos quais podemos instalar nossa aplicação. Quando há muitos containers, você precisa gerenciá-los: ligar um, desligar outro, fazer backups em algum lugar. Isso se torna bastante complexo e requer um sistema de orquestração.

Anteriormente, cada aplicativo era gerenciado por um servidor separado - quaisquer alterações em sua operação poderiam afetar a capacidade de manutenção do aplicativo. Graças aos contêineres, os aplicativos ficam isolados e são executados separadamente – cada um em sua própria máquina virtual. Se ocorrer uma falha, não há necessidade de perder tempo procurando a causa. É mais fácil destruir o contêiner antigo e adicionar um novo.”

6. Sistemas de configuração: Chef, Ansible, Puppet

Quando você precisa manter uma frota inteira de servidores, é necessário realizar muitos dos mesmos tipos de operações. É longo e difícil, e o trabalho manual também aumenta a chance de erro. É aqui que os sistemas de configuração vêm em socorro. Com a ajuda deles, eles criam um script fácil de ler para programadores, engenheiros de DevOps e administradores de sistema. Este script ajuda a realizar as mesmas operações nos servidores automaticamente. Isso reduz as operações manuais (e, portanto, os erros).

Que tipo de carreira um engenheiro DevOps pode construir?

Você pode desenvolver tanto horizontal quanto verticalmente.

Igor Boyko: “Do ponto de vista do desenvolvimento horizontal, os engenheiros de DevOps agora têm as perspectivas mais amplas. Tudo está em constante mudança e você pode desenvolver habilidades em diversas áreas: de sistemas de controle de versão a monitoramento, de gerenciamento de configuração a bancos de dados.

Você pode se tornar um arquiteto de sistemas se um funcionário estiver interessado em entender como um aplicativo funciona em todos os estágios de seu ciclo de vida – do desenvolvimento ao suporte.”

Como se tornar um engenheiro DevOps?

  1. Leia o Manual do Projeto Phoenix e DevOps. Estes são os verdadeiros pilares da filosofia DevOps, sendo o primeiro uma obra de ficção.
  2. Aprenda as tecnologias da lista acima: por conta própria ou por meio de cursos online.
  3. Ingresse como engenheiro DevOps em um projeto de código aberto.
  4. Pratique e ofereça práticas de DevOps em seus projetos pessoais e de trabalho.

Fonte: habr.com

Adicionar um comentário