Por que os administradores de sistema devem se tornar engenheiros DevOps

Por que os administradores de sistema devem se tornar engenheiros DevOps

Não há melhor momento para aprender na vida do que hoje.


Estamos em 2019 e o DevOps é mais relevante do que nunca. Dizem que os dias dos administradores de sistemas acabaram, assim como a era do mainframe. Mas isso é realmente assim?
Como costuma acontecer em TI, a situação mudou. A metodologia DevOps surgiu, mas não pode existir sem uma pessoa com competências de administrador de sistemas, ou seja, sem Ops.

Antes de a abordagem DevOps assumir sua forma moderna, eu me classificava como Ops. E sei muito bem o que um administrador de sistema experimenta quando percebe o quanto ainda não pode fazer e como tem pouco tempo para aprender.

Por que os administradores de sistema devem se tornar engenheiros DevOps

Mas é realmente tão assustador? Eu diria que a falta de conhecimento não deve ser vista como um grande problema. É mais um desafio profissional.

Os produtos em escala web são baseados em Linux ou outro software de código aberto, e há cada vez menos pessoas no mercado capazes de mantê-los. A demanda já ultrapassou o número de profissionais da área. Um administrador de sistema não poderá mais simplesmente continuar trabalhando sem melhorar seu nível de habilidade. Ele deve ter habilidades de automação para gerenciar vários servidores/nós e ter um bom entendimento de como eles funcionam para resolver os problemas que surgirem.

Antes de se tornar membro da equipe DevOps, você terá que passar por uma jornada bastante longa, mas interessante, aprendendo novas tecnologias e diversas ferramentas necessárias para manter o sistema de acordo com os padrões DevOps.

Então, como um administrador de sistema pode passar da abordagem usual de trabalho para o novo conceito de DevOps? Tudo está normal: primeiro você precisa mudar seu pensamento. Não é fácil abandonar a abordagem que você tem seguido nos últimos dez ou vinte anos e começar a fazer as coisas de forma diferente, mas é necessário.

Antes de tudo, é importante entender que DevOps não é um cargo específico em uma empresa, mas sim um conjunto de práticas específicas. Essas práticas implicam na distribuição de sistemas isolados, reduzindo os danos causados ​​por bugs e erros, atualizações de software frequentes e oportunas, interação bem estabelecida entre desenvolvedores (Dev) e administradores (Ops), bem como testes constantes não apenas do código, mas também toda a estrutura dentro do processo integração e entrega contínuas (CI/CD).

Além de mudar a forma de pensar, você precisa aprender como manter a infraestrutura e garantir sua operação estável, confiabilidade e disponibilidade para integração e entrega contínua de aplicativos, serviços e software.

O que pode estar faltando como profissional de operações são habilidades de programação. Agora, escrever scripts (scripts), que os administradores de sistema usam para instalar patches automaticamente em um servidor, gerenciar arquivos e contas, solucionar problemas e compilar documentação, já é considerado obsoleto. Os scripts ainda se aplicam em casos relativamente simples, mas o DevOps trata da solução de problemas de grande escala, seja implementação, teste, construção ou implantação.

Assim, se você quer aprender automação, você precisa dominar pelo menos um pouco de programação, mesmo que não seja desenvolvedor, pois nesta fase do seu desenvolvimento automação de infraestrutura em DevOps requer essa habilidade.

O que fazer? Para permanecer requisitado como especialista, você precisa adquirir habilidades relevantes - dominar pelo menos uma linguagem de programação, por exemplo Python. Isso pode parecer difícil para quem está profissionalmente envolvido com administração, pois está acostumado a pensar que só desenvolvedores programam. Não é necessário se tornar um especialista, mas sim conhecimento de uma das linguagens de programação (pode ser Python, Bash ou mesmo Powershell), certamente será uma vantagem.

Aprender a programar leva algum tempo. Estar atento e paciente ajudará você a ficar por dentro de tudo ao se comunicar com os membros da equipe e clientes de DevOps. Meia hora por dia, uma hora ou mais, aprender uma linguagem de programação deve ser seu objetivo principal.

Administradores de sistema e especialistas em DevOps resolvem problemas semelhantes, porém, existem diferenças significativas. Acredita-se que um administrador de sistema não pode fazer tudo o que um engenheiro de DevOps faz. Dizem que o administrador do sistema está mais focado em configurar, manter e garantir o desempenho dos sistemas servidores, mas o engenheiro DevOps puxa todo esse carrinho e outro carrinho pequeno.

Mas quão verdadeira é esta afirmação?

Administrador do sistema: um guerreiro em campo

Apesar das diferenças e semelhanças apontadas neste artigo, ainda acredito que não há diferença significativa entre administração de sistemas e DevOps. Os administradores de sistema sempre executaram as mesmas funções que os especialistas em DevOps, só que ninguém o chamava de DevOps antes. Acredito que não adianta procurar diferenças especificamente, principalmente se não estiver relacionado a nenhuma tarefa. Não se esqueça que, diferentemente de um administrador de sistemas, DevOps não é um cargo, mas sim um conceito.

Mais uma coisa importante deve ser observada, sem a qual uma conversa sobre administração e DevOps ficará incompleta. A administração de sistemas no sentido usual pressupõe que um especialista possua um conjunto específico de competências e esteja focado na manutenção de diversos tipos de infraestruturas. Não no sentido de que se trata de um funcionário universal, mas no sentido de que há uma série de tarefas desempenhadas por todos os administradores.

Por exemplo, de vez em quando eles têm que atuar como uma espécie de faz-tudo técnico, ou seja, fazer literalmente tudo. E se houver apenas um administrador para toda a organização, ele geralmente realizará todo o trabalho técnico. Isso pode incluir qualquer coisa, desde a manutenção de impressoras e copiadoras até a execução de tarefas relacionadas à rede, como configuração e gerenciamento de roteadores e switches ou configuração de um firewall.

Ele também será responsável por atualizações de hardware, inspeção e análise de logs, auditorias de segurança, aplicação de patches de servidores, solução de problemas, análise de causa raiz e automação – normalmente por meio de scripts PowerShell, Python ou Bash. Um exemplo de uso cenários é o gerenciamento de contas de usuários e grupos. Criar contas de usuário e atribuir permissões é uma tarefa extremamente tediosa, pois os usuários aparecem e desaparecem quase todos os dias. A automação por meio de scripts libera tempo para tarefas de infraestrutura mais importantes, como atualização de switches e servidores e outros projetos que afetam a lucratividade da empresa onde o administrador trabalha (mesmo que seja geralmente aceito que o departamento de TI não gera receita diretamente).

A tarefa do administrador do sistema é não perder tempo e economizar dinheiro para a empresa de todas as formas possíveis. Às vezes, os administradores de sistema trabalham como membros de uma grande equipe, unindo, por exemplo, administradores de Linux, Windows, bancos de dados, armazenamento e assim por diante. Os horários de trabalho também variam. Por exemplo, uma mudança em um fuso horário no final do dia transfere os casos para o próximo turno em outro fuso horário para que os processos não parem (follow-the-sun); ou os colaboradores têm jornada normal de trabalho das 9h às 5h; ou está funcionando em um data center XNUMX horas por dia, XNUMX dias por semana.

Com o tempo, os administradores de sistemas aprenderam a pensar estrategicamente e a combinar assuntos importantes com tarefas rotineiras. As equipes e departamentos em que trabalham costumam ter poucos recursos, mas ao mesmo tempo todos tentam cumprir ao máximo as tarefas diárias.

DevOps: desenvolvimento e manutenção como um só

DevOps é uma espécie de filosofia para os processos de desenvolvimento e manutenção. Esta abordagem no mundo da TI tornou-se verdadeiramente inovadora.

Sob a égide do DevOps, há uma equipe de desenvolvimento de software de um lado e uma equipe de manutenção do outro. Freqüentemente, eles são acompanhados por especialistas em gerenciamento de produtos, testadores e designers de interface de usuário. Juntos, esses especialistas simplificam as operações para implementar rapidamente novos aplicativos e atualizações de código para dar suporte e melhorar a eficiência de toda a empresa.

O DevOps baseia-se no controle sobre o desenvolvimento e operação do software durante todo o seu ciclo de vida. O pessoal de manutenção deve apoiar os desenvolvedores, e os desenvolvedores têm a tarefa de compreender mais do que apenas as APIs usadas nos sistemas. Eles precisam entender o que está por trás (ou seja, como funcionam o hardware e os sistemas operacionais) para que possam lidar melhor com bugs, resolver problemas e interagir com os técnicos de serviço.

Os administradores de sistema podem ingressar em uma equipe DevOps se quiserem aprender as tecnologias mais recentes e estiverem abertos a ideias e soluções inovadoras. Como eu disse antes, eles não precisam se tornar programadores completos, mas dominar uma linguagem de programação como Ruby, Python ou Go os ajudará a se tornarem membros muito úteis da equipe. Embora os administradores de sistemas tradicionalmente façam todo o trabalho sozinhos e muitas vezes sejam vistos como solitários, no DevOps eles têm uma experiência completamente oposta, onde todos os envolvidos no processo interagem entre si.

O tema da automação está se tornando cada vez mais relevante. Tanto os administradores de sistema quanto os especialistas em DevOps estão interessados ​​em escalar rapidamente, reduzir erros e encontrar e corrigir rapidamente os erros existentes. Assim, a automação é um conceito onde convergem duas áreas. Os administradores de sistema são responsáveis ​​por serviços em nuvem, como AWS, Azure e Google Cloud Platform. Eles devem compreender os princípios de integração e entrega contínuas e como usar ferramentas como Jenkins.

Além disso, os administradores de sistema devem usar ferramentas de configuração e gerenciamento, como Ansible, necessário para implantação paralela de dez ou vinte servidores.

O conceito principal é infraestrutura como código. Software é tudo. Na verdade, para que a profissão de administrador de sistemas não perca relevância, basta mudar um pouco a ênfase. Os administradores de sistema estão no ramo de serviços e devem ser capazes de se comunicar de forma eficaz com os desenvolvedores e vice-versa. Como se costuma dizer, uma cabeça é boa, mas duas são melhores.

E o último detalhe deste mecanismo é Git. Trabalhar com Git é uma das responsabilidades diárias tradicionais de um administrador de sistema. Este sistema de controle de versão é amplamente utilizado por desenvolvedores, especialistas em DevOps, equipes Agile e muitos outros. Se o seu trabalho está relacionado ao ciclo de vida do software, você definitivamente trabalhará com Git.

Git tem muitos recursos. Você provavelmente nunca aprenderá todos os comandos do Git, mas entenderá exatamente por que ele é essencial na comunicação e colaboração de software. Um conhecimento profundo de Git é muito importante se você estiver trabalhando em uma equipe DevOps.

Se você é administrador de sistema, então precisa estudar melhor o Git, entender como o controle de versão é construído e lembrar dos comandos comuns: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff e outros. Existem muitos cursos e livros online que podem ajudá-lo a aprender esse assunto do zero e se tornar um profissional com habilidades específicas. Também há maravilhosos folhas de dicas com comandos Git, então você não precisa abarrotar todos eles, mas quanto mais você usar o Git, mais fácil será.

Conclusão

Em última análise, você decide se precisa se tornar um especialista em DevOps ou se é melhor permanecer como administrador de sistema. Como você pode ver, há uma curva de aprendizado para fazer a transição, mas quanto antes você começar, melhor. Escolha uma linguagem de programação e aprenda simultaneamente ferramentas como Git (controle de versão), Jenkins (CI/CD, integração contínua) e Ansible (configuração e automação). Seja qual for a opção que você escolher, não se esqueça de que você precisa aprender e aprimorar constantemente suas habilidades.

Fonte: habr.com

Adicionar um comentário