Como ajudar os engenheiros do DevOps a se sentirem menos como um lobo solitário?

66

Acabei de falar com um cara do DevOps que levantou alguns pontos realmente bons sobre as lutas de ser um engenheiro do DevOps e se sentir como um exército de um homem às vezes, mesmo que ele esteja em uma equipe de 16 engenheiros.

Ele usa muitos chapéus diferentes, mas faz parte da equipe de Desenvolvimento fazendo o trabalho de infraestrutura. Ele ama a tecnologia cool que ele começa a trabalhar cargas com- de automação, nuvem, conteinerização etc. Mas ele luta que ele é a única pessoa que faz ops, em uma devequipe. Ele se reporta ao gerente de desenvolvimento, mas trabalha mais de perto com o gerente de infraestrutura.

Esse parece ser o caso de muitos profissionais de DevOps com quem falo. O que poderia ser feito para ajudar os engenheiros do DevOps a se sentirem menos como um lobo solitário?

Anna Flynn
fonte
3
Eu sempre considero o DevOps um modelo de organização de negócios, não um papel que alguém possa assumir.
T. Sar - Reinstala Monica

Respostas:

34

Meu primeiro pensamento é "por que ele é a única pessoa fazendo operações, em uma equipe de desenvolvimento, especialmente quando ele começa a trabalhar com muita automação?". Eu acho que existe uma oportunidade lá para abordar a síndrome do lobo solitário; particularmente em um ambiente de desenvolvimento, a infraestrutura como código fornece uma excelente estrutura para compartilhar a carga. As pessoas de operações devem ser especialistas na determinação e definição das necessidades de infraestrutura para aplicativos, mas também devem poder criar uma plataforma para permitir que as funções de desenvolvedor façam o máximo que puderem independentemente.

Parece um silo dentro de uma equipe; velhos hábitos morrem com força. Um codificador pode não se sentir confortável em rodar e endurecer um servidor, mas em um modelo de devops puro, ele deve ter as ferramentas para fazer isso. Uma pessoa de operações em uma equipe de devops não deve ser responsável por fornecer infraestrutura para o aplicativo em si, mas deve fornecer algumas dicas sobre o que é necessário e algumas orientações sobre como os desenvolvedores de aplicativos podem fazer isso sozinhos. É quase um modelo de meta-infraestrutura; Os engenheiros de operações criam infraestrutura que pode construir infraestrutura sob demanda quando solicitado pela equipe de desenvolvimento.

Consulta, comunicação e combinação de responsabilidades são cruciais para o sucesso de uma equipe de devops.

Stuart Ainsworth
fonte
11
Parte disso é focada em software muito suave. Trabalho com software incorporado (ou firmware ou software executando / com hardware especializado) e muitos dos modelos e ferramentas de IaC não se encaixam bem. Às vezes, o cara do DevOps é o único que sabe onde está esse hardware. Eu era um dos 4 entre ~ 60 engenheiros que poderiam encontrar coisas no laboratório. Nesses casos, essa resposta é difícil de implementar. Nós criamos maneiras de permitir que as pessoas usem unidades de ciclo remotamente, mas isso foi tudo o que conseguimos. Mais sugestões serão bem-vindas.
Taft
Você está certo; Tentei enquadrar minha resposta com base nas dicas da pergunta (a saber, a postagem mencionada automação); isso se aplica menos na sua situação. Dito isto, toda situação é diferente, então todo caminho é diferente. Os princípios de automação predial, enfatizando o autoatendimento e observando todo o valor do vapor ainda se aplicam, mesmo que a implementação seja diferente.
Stuart Ainsworth
25

Eu acho que a primeira falha está nesta frase:

Ele se reporta ao gerente de desenvolvimento, mas trabalha mais de perto com o gerente de infraestrutura.

O DevOps é uma mudança cultural que visa remover silos. Se os silos permanecerem, então esse engenheiro é o que você quiser nomear; um engenheiro que desenvolve desenvolvimento operacional, um especialista em automação, um desenvolvedor que automatiza a infraestrutura - mas esse engenheiro não é um engenheiro de DevOps.
De fato, o "DevOps Engineer" não é um papel real , é mais um 'chapeau', pois pode abranger desenvolvedores, administradores de sistemas, testadores de controle de qualidade e arquitetos trabalhando em uma equipe comum.

Um problema que muitas vezes vejo é que as pessoas caem no uso de palavras-chave do DevOps, vendo-o como um cargo, mas não entendem o que é o DevOps. Ao visualizar o DevOps dessa maneira, eles geralmente acabam isolados e se sentem sozinhos, culpando falhas e deficiências por serem um "lobo solitário", sem comprometimento gerencial e organizacional.

Conforme você descreve, esse engenheiro é o único a executar operações em uma equipe de desenvolvimento. Isso não faz dele um "engenheiro de DevOps". (O que quer que isso signifique em sua organização) Ele está trabalhando isolado porque o trabalho é apresentado como "Engenheiro de DevOps", mas parece que outras pessoas em sua equipe não desejam trabalhar em operações.

Sejamos honestos, sempre haverá ops e dev, a principal idéia por trás dos devops é compartilhar as responsabilidades, de modo que não haja transferência de um produto de dev para ops ou apenas fornecer plataformas de ops para dev. O objetivo principal é trazer mais colaboração para uma equipe. Chamar essa função de "Engenheiro de DevOps" está quebrando essa idéia, sugerindo no nome que você pode fazer as duas coisas no mesmo nível de conhecimento - o que raramente é verdade.

A primeira coisa a fazer na minha opinião seria apresentar as ferramentas operacionais à equipe e fornecer a todos um conhecimento básico sobre as ferramentas, depois transferir a responsabilidade de configurar / codificar as ferramentas operacionais para toda a equipe. A principal idéia por trás disso é passar de "aquele que faz todas as operações" para "aquele que apóia e fornece implementações de referências à equipe".

Isso complementa as outras respostas, fornecendo algo acionável de uma maneira mais simples como primeiro passo do que uma reorganização gerencial.

Tensibai
fonte
11
Uma das coisas difíceis de reconciliar sobre uma implementação de devops são os organogramas. Normalmente, os silos se formam em torno do gerenciamento e, se você tem um gerente de desenvolvimento e um gerente de infraestrutura, é muito bom fazer com que essas equipes se comuniquem, mas há relutância em consolidar. É difícil mudar a cultura, e os organogramas demonstram a cultura vividamente.
Stuart Ainsworth #
@StuartAinsworth, de fato, é por isso que não falei sobre modificar a organização, mas mais para integrar o restante da equipe.
Tensibai
16

O mais importante para os engenheiros do DevOps nesse tipo de situação é obter (a) compromisso de gerenciamento e (b) orçamento necessário . Continue lendo para obter mais detalhes sobre os dois ...

Obter compromisso de gerenciamento

Quando isso ocorre, as coisas ficam fáceis para esses engenheiros de DevOps. Especialmente quando a resistência (de todos os tipos de partes) entra em jogo. Confie em mim, haverá essa resistência, que desafia como:

  • Por que nós temos que mudar? Eu quero continuar fazendo o que fiz por X anos já!
  • Não quero perder o poder (técnico) que tenho e concluir todos os tipos de procedimentos de fluxo de trabalho, para obter uma correção boba na produção que deve demorar 5 minutos em vez de 5 horas (ou dias ...).
  • ... (eu poderia adicionar mais uma dúzia de balas aqui ...).

Sempre que surgem esses desafios, tudo o que um engenheiro de DevOps deve dizer é:

Sinto muito, estou apenas fazendo meu trabalho ... com base em instruções da alta gerência.

Obter orçamentos necessários

Uma maneira eficaz de obter Orçamentos Necessários é criar / enviar um caso de negócios apropriado que explique os benefícios tangíveis e intangíveis de várias práticas de DevOps, aplicando-os a alguns casos do mundo real que se aplicam à própria empresa.

Abaixo estão alguns casos do mundo real que experimentei, como consultor de SCM contratado por algumas empresas onde essas coisas haviam acontecido. Eu sei, o SCM é apenas parte do DevOps, mas é a área em que tenho alguma experiência ...

1. Benefícios da automação

Devido a uma greve de apenas 2 (!!!) operadores de computador (que não digitaram mais os comandos do console que eles deveriam digitar), os trens tiveram que ser interrompidos em algum lugar a meio caminho entre duas fábricas (desde que o sistema na fábrica onde o trem estava indo para baixo, dados cruciais sobre o manuseio do trem não estavam disponíveis).

Ao implementar um sistema SCM, muitos comandos do operador foram automatizados.

2. Reduza os custos de licença de software

Alguns fornecedores de software decidiram aumentar algumas taxas anuais pelo software SCM (desatualizado), com o qual a gerência não concordou. Para isso, eles criaram um projeto especial para substituí-lo por algum software SCM alternativo.

O orçamento do projeto era igual à taxa anual que eles não queriam continuar pagando. Isso incluiu voar em engenheiros de outros continentes (como eu) para fazer o projeto ter sucesso.

3. Reduza os custos operacionais

Alguma grande companhia de seguros estava usando algum software FTP para transferir correções de software para cerca de 13.000 computadores de médio porte (AS / 400s) em todo o país, e isso sempre que "uma" correção ficava disponível. O custo de uma transferência desse tipo foi de cerca de 4 USD (13.000 x 4 = 52.000 USD para uma única transferência ...). O software consistia em 120.000 componentes, desenvolvidos / mantidos por cerca de 150 desenvolvedores. Faça as contas sobre a probabilidade de 1 desenvolvedor cometer 1 (minúsculo) erro em qualquer um desses 120.000 componentes, que chegaram à produção e exigiu uma correção urgente, que custaria outros 52.000 USD (apenas pela transferência!).

Ao implementar um sistema SCM adequado (com ambientes de teste gerenciados, aprovações etc.), essa empresa conseguiu uma grande redução de custos. Pense nisso: se o sistema SCM pudesse impedir a necessidade de apenas 20 transferências de correções urgentes, resultaria em uma redução de custo de 52.000 x 20 = 1.040.000 USD (bastante orçamento para implementar um sistema SCM, eles precisavam apenas de uma fração dessa quantia para fazer o trabalho).

4. Reduza os custos de indisponibilidade

Se os casos acima não forem convincentes o suficiente, pense no (s) sistema (s) de uma grande empresa de cartão de crédito indisponível em todo o mundo. Foi-me dito que 1 segundo de indisponibilidade custa 1.000.000 USD.

Essa provavelmente também é a razão pela qual, por um longo tempo, essas empresas têm sofisticadas ferramentas de DevOps, já há muitas décadas. Porque a cada segundo eles não estão no negócio lhes custa uma fortuna.

Pierre.Vriens
fonte
Eu acho que você está perdendo alguns passos. Se a equipe de desenvolvimento ainda não estiver implantando várias cópias do aplicativo (pelo menos um ambiente de teste antes da produção), esse será o mandato. Então, talvez eles possam lutar por conta própria por um tempo se realmente quiserem passar o tempo. Isso torna um especialista em operações de desenvolvimento útil para essas pessoas; eles podem transformar um processo doloroso em um processo mais suave, em vez de recorrer ao "gerenciamento diz isso". É daí que surge toda a idéia do Dev Ops: eliminar a dor de implantar e gerenciar vários ambientes.
precisa
4

TL; DR: Como a gerência superior geralmente é inconstante e propensa à raiva, sugiro que tente se curvar um pouco para ter uma perspectiva diferente, enquanto muda as coisas para melhor, gradualmente.

(Estou assumindo que seu problema é principalmente com os relutantes devs , nem seus outros ops colegas que parecem fazer operações clássicas principalmente.)

A IMO, mesmo se você tiver DevOps, isso não significa necessariamente que todo desenvolvedor precisa ser um guru de DevOps completo. Acho bastante normal que haja um ou dois especialistas reais em um determinado grupo de pessoas, e o restante mais ou menos tag along. Contanto que a carga de trabalho não seja muito grande para esse cara, e enquanto ele conseguir encapsular seu conhecimento em scripts etc., em vez de construir seu próprio silo, tudo bem para mim.

A única coisa que não deveria estar acontecendo é que o cara do DevOps faz sua automação, e todo mundo tenta ao máximo evitar essa automação (por exemplo, passe pelo pipeline do CI / CD e faça as coisas manualmente em um dos ambientes). A IMO é a principal coisa que precisa parar. Uma solução para isso seria pressionar muito a abordagem do gado, não o animal de estimação, ou seja, derrubar incansavelmente VMs ou contêineres para a esquerda e para a direita o mais rápido possível e criar novos continuamente.

Segundo, é claro que todo mundo precisa estar ciente do que a automação está fazendo, e pelo menos em teoria, com algumas investigações, talvez, seja capaz de iniciar o mecanismo de automação (ou seja, se tudo for executado a partir de um commit / push, os desenvolvedores precisam estar cientes e muito atualizados com o fato de que haverá coisas acontecendo em segundo plano quando eles confirmarem). O pipeline de IC (/ CD) precisa ser bastante visível e deve ser algo que todos estão constantemente cientes (ou seja, quando um desenvolvedor o quebra).

Terceiro, é claro que o "cara único" deve observar que ele não realiza tarefas diárias diárias para seus colegas (por exemplo, criando Dockerfile após Dockerfile para seus artefatos ...).

Em quarto lugar, é claro que as soluções criadas pelo cara do DevOps devem ser realmente superiores às abordagens manuais do passado de alguma maneira mensurável. Nesse caso, deve ser possível demonstrar suas melhorias; ou seja, demonstre como as coisas ficam mais fáceis para todos, ou como parece impossível introduzir bugs nos estágios posteriores do pipe etc. Se isso não parecer possível, o cara do DevOps precisa dar uma boa olhada no que ele está fazendo. Se for possível, isso exige sessões de sacola e muita evangelização em sua equipe.

Obviamente, em um ambiente tão relutante, você provavelmente não chegará a uma solução de CD totalmente automatizada ou ao desenvolvimento baseado em tronco tão cedo. Mas eu não me preocuparia muito em ser escolhido. Ele é o especialista e, se estiver fazendo bem o trabalho, toda a equipe irá melhorar gradualmente.

E, finalmente, se depois de anos e anos de labuta simplesmente não há melhorias visíveis com seus colegas, é sempre possível procurar outros caminhos (seja dentro ou fora da empresa). Ter toda a experiência em DevOps em seu currículo é uma excelente base para procurar emprego, hoje em dia ...

AnoE
fonte
4

Vejo muitas ótimas respostas aqui falando sobre o DevOps como uma cultura, sugestões sobre como trabalhar com o gerenciamento e ajudo a definir o que fazer e o que não fazer de uma equipe ou engenheiro do DevOps. Eu acho que cada um deles é ótimo, e realmente ilustrativo de muitas respostas pode estar 100% certo e ainda assim ser muito diferente ou mesmo completamente ambíguo um do outro ... Isso é DevOps!

Esta resposta é apenas a minha perspectiva única da experiência e pode não ser indicativa de normas ou melhores práticas ...

Mas o que seu colega do DevOps estava reclamando é a própria natureza do que torna o DevOps desafiador e difícil , especialmente quando designado o papel de engenheiro do DevOps, e não apenas sendo uma mentalidade cultural.

Pessoalmente, eu gosto de ser um lobo solitário, porque ainda faço contribuições valiosas, mas também consigo definir meus próprios limites, persuadindo os outros a ajudarem a si mesmos, ajudando-me a quebrar os silos de TI.

Alguns silos permanecem intactos , e tudo bem, é missão do DevOps contornar isso e tentar torná-los o mais insignificante ou invisível possível.

É possível que seu colega de trabalho esteja percebendo, ou ainda não tenha percebido, que ele ou ela não gosta de ser um engenheiro de DevOps .

NonCreature0714
fonte
3

Relativamente falando, o conceito de devops é novo e ainda se define na minha opinião. Atualmente, cumpro uma função de engenheiro de devops. Para mim, isso significa que eu facilito e desenvolvo as ferramentas e processos usados ​​por nossas equipes de desenvolvimento e operações, liberando-os para focar no produto que gera receita para a empresa. As equipes de operações e desenvolvedores criam seus próprios servidores e conforme necessário. Eu apenas conecto o IC de nossos produtos, asseguro que nossos processos façam sentido e busco qual processo pode ser aprimorado / automatizado. Encontro-me com todos os nossos departamentos, de vendas, armazém, desenvolvedores e operações (gerentes de controle de qualidade e liberação) para ver o que eles estão fazendo e como posso melhorar seu processo.

xtreampb
fonte
2

Para mim, o DevOps significa que o desenvolvimento e a operação de um sistema de software se tornam responsabilidade de uma equipe, em vez de equipes de desenvolvimento e operações separadas. Esta é uma via de mão dupla. As melhores equipes são formadas por pessoas em " T ", especialistas em um campo e familiarizadas com vários campos relacionados.

  • Espera-se que os membros da equipe com experiência em operações façam o que fazem de melhor (ou seja, operações), ensinem os fundamentos do que fazem de melhor (ou seja, operações) para os outros e aprendam e façam trabalhos em áreas relacionadas (tarefas de desenvolvimento).
  • Espera-se que os membros da equipe com experiência em desenvolvimento façam o que fazem de melhor (isto é, Dev), ensinem os fundamentos do que fazem de melhor (ou seja, Dev) para os outros e aprendam e façam trabalhos em áreas relacionadas (tarefas de Operações).

Portanto, para fazer com que o engenheiro do DevOps pareça menos um lobo solitário, convide-o a ensinar aos desenvolvedores como executar os sistemas, embora reconheça que ele é o especialista em como projetar a infraestrutura.

Faça com que ele se envolva na arquitetura de alto nível desde o início, para que ele possa apresentar as preocupações de sua especialidade. (Antes de termos o DevOps, nossos desenhos de arquitetura sempre mostravam "pequenas coisas", como balanceadores de carga e servidores redundantes. Agora, essas coisas fazem parte dos primeiros esboços.)

Espere que os desenvolvedores realizem algumas das tarefas diárias de rotina das operações, tanto para criar redundância na equipe quanto para espalhar os trabalhos "trabalhosos" de maneira justa.

Espere que ele contribua com o esforço do desenvolvedor se não houver tarefas semelhantes a Ops. Alguns DevOps que eu conheço parecem achar o trabalho de banco de dados uma extensão natural de sua área de especialização, sem saber se isso pode ser generalizado.

om
fonte
1

O que poderia ser feito para ajudar os engenheiros do DevOps a se sentirem menos como um lobo solitário?

Parafraseando - o que pode um engenheiro DevOps fazer a si mesmo / ela mesma para se sentir menos como um lobo solitário?

A falta de cultura e apoio gerencial é apenas uma parte da equação. A outra parte é, na minha opinião, que os detalhes do conhecimento do DevOps geralmente se referem a contextos complexos e é importante ter conselhos e referências a exemplos de trabalho.

Portanto - não se sinta como um lobo solitário; participe de comunidades DevOps como essa aqui ou de grupos específicos de ferramentas e do GitHub - a sensação é de que pelo menos você não é o único lobo solitário ;-)

Peter
fonte
11
DevOps, por sua natureza, é um exercício de equipe. A única coisa que um engenheiro do DevOps pode fazer por ele ou ela mesma para se sentir menos como um lobo solitário é sair e ingressar em uma organização mais funcional.
James Shewey