Toda semana, nossos especialistas compartilham dicas e estratégias para você aprender e colocar todo conhecimento em prática. Hoje convidamos André Bassi, um de nossos consultores e arquiteto aqui na Platform Builders.

Ele preparou um artigo sobre como se tornar um Devops Engineer nos dias de hoje, um passo a passo completo separado em cinco etapas.

Aproveite


O tempo trouxe transformações e mudanças em vários ambientes. No de TI principalmente, com o surgimento de novas tecnologias e metodologias, processos de entrega de software tradicionais perderam espaço no mercado, tornando-se obsoletos e inoperantes especialmente nas esteiras de Devops.

Em 2010 passamos a conhecer mais de perto o surgimento de indivíduos capazes de unificar uma série de habilidades tanto interpessoais quanto técnicas, são eles: Os engenheiros de Devops.

Atualmente são responsáveis pelo desenvolvimento e operações ao longo do ciclo de um serviço até o suporte e criação de um produto, permitindo que empresas consigam acelerar novos serviços digitais como aplicativos de maneira mais rápida e segura.

Interessado em se tornar um engenheiro de Devops? Separamos cinco etapas que você precisa passar.

Tenha uma mentalidade de desenvolvedor

Trabalhar como Devops requer uma mentalidade e habilidades através do uso de ferramentas de integração contínua e de entrega contínua, testes de desempenho e compreensão de contêineres. Você precisa conhecer desenvolvimento Java ou Net para ser um engenheiro Devops?

Definitivamente não! Mais importante do que entender a fundo sobre linguagem Java ou como subir containers através de orquestração com Java, é testarmos e colocarmos para rodar de maneira mais prática e analítica.

Não é necessário saber construir todo processo, mas sim testá-lo de maneira adequada, encapsulando um dockerfile, até que esse docker gere um container, levando-o ao Kubernetes.
O importante é rodar um aplicativo em um ecossistema em que toda linguagem está inserida dentro de um container; essa habilidade é o mínimo que o mercado espera de um engenheiro devops.

Outra premissa básica é que qualquer desenvolvedor antes de saber programar, deve entender sobre Git, versionando, fazendo um pull request, entendendo o ciclo de vida ( CVDS) independente da linguagem que ele for utilizar para programar.

Manutenção

Utilizar qualquer ferramenta para escrever código mantendo um padrão, torna-se um requisito indispensável, ainda mais se utilizarmos variáveis que possibilitem reaproveitá-los sem precisar refazer do zero.

Existe uma divergência de ideias quando falamos de escolha de ferramentas e linguagens: CTO e gerente de projetos tem suas preferências, uns optam por microsoft, Dotnet enquanto outros preferem script.

De fato, a visão de quem está gerindo a parte técnica do projeto se torna fator preponderante para determinar qual será utilizada. Um exemplo disso, é a construção de um aplicativo para microcontrolador, onde você jamais vai poder fazer o aplicativo em Java e Dotnet, pois ele não possui framework e JVM para rodar.

Os microcontroladores precisam ser leves e pequenos; o aplicativo desenvolvido deve ficar abaixo de 512 kbytes de memória. Mas qual o critério que traz estabilidade e torna esse app pequeno? Linguagem de baixo nível conhecida como C++

Nessa linguagem, você não depende de framework nenhum, você consegue escrever um aplicativo, manipulando a memória da forma que lhe parecer mais conveniente, sem nenhum entrave, fazendo blocks e todo gerenciamento dele.

Exemplo: Quando você vai programar um celular android ou iphone, ele tem um sistema operacional dentro dele, embaixo do IOS do android, com abstrações alocadas dentro dos micro controladores, por isso ele precisa ser leve e nada melhor do que utilizar a linguagem C++ para tornar isso realidade!

Os frameworks não deixam você dar um stack overflow na memória, não permitem nenhum tipo de sobrecarga, entretanto, quando você programa em linguagem de baixo nível, você tem a possibilidade de gerenciar tudo isso de uma forma que não te limite.

Engenharia de Sistemas

Os times de desenvolvimento devem estar cientes que tudo entra, processa e saí para algum lugar. Sistemas operacionais devem estar em sincronia com os aplicativos, permitindo maior conectividade e gerenciamento de dados para app distribuídos.

Mas afinal de contas, o que é uma arquitetura de aplicativo de três camadas?

Ela pode ser dividida em três pilares: apresentação, negócio e persistência. Todo aplicativo tem um espaço para inserir e processar dados através de regras, sendo que você armazena, liberando uma saída a eles; logo você cria essa arquitetura de três camadas, através do input dos dados, processamento e a saída.

O importante é saber como os aplicativos permitem expor como variáveis em seu código versus o que pode ser codificado.

Computação em Nuvem

Nos dias de hoje, a maioria das empresas estão utilizando serviços de nuvem como
AWS, Google Cloud, Azure, Oracle cloud, Alibaba e outros. Essa flexibilização que oferece em diversos ambientes é uma de suas principais virtudes, principalmente se tivermos um serviço de kubernetes ou docker para ser instalado, definitivamente ela consegue rodar e mantê-lo funcionando concomitantemente.

Hoje, toda aplicação de nuvem é baseada em duas atuações: Serviços gerenciáveis e não gerenciáveis;

No primeiro, temos Kubernetes da AWS, Google Cloud e Azure, onde você não precisa instalar para dentro do seu servidor, afinal ele já está montado, portanto basta usar esse portfólio de serviços da maneira que lhe for mais conveniente. Você se torna o condutor desse processo.

Lembrando que no gerenciável você coloca as aplicações na nuvem, afinal ele já te fornece todo esse serviço (gerenciamento de nodes, configuração de balanceador te dá o backup e solicita o levantamento de cluster com configuração pronta para usá-lo e colocar os serviços lá dentro).

Para empresas o benefício é ainda maior, pois elas conseguem explorar vantagens de modelo de entrega de nuvem trazendo maior escalabilidade, facilidade e abstração de responsabilidade.

No segundo, você tem que se preocupar com monitoramento, com os logs, com backup, com a saúde e manutenção de cada node. Digamos que ela é mais difícil de ser controlada e sua usabilidade não é das mais fáceis.

A nuvem vai te dar a resiliência, cluster montado, backup, sem a necessidade de instalação, basta usá-lo. Todo serviço gerenciado é mantido e sustentado pelo cloud.

Containers

Os containers possuem um ciclo de vida diferente de infraestruturas tradicionais. Sua popularidade trouxe maior proximidade com empresas, principalmente nos processos de orquestração e integração contínua nos fluxos de trabalho.

É compreensível que o uso de containers se perdeu no caminho, devido o aumento de aplicativos sem servidor. Porém, para a maioria das empresas, nem todos os aplicativos podem passar 100% sem um servidor, afinal sistemas ou aspectos de estado estão entrelaçados e precisam ser executados em um container.

O conhecimento de Kubernetes e containers é algo que vem se consolidando cada vez mais no mercado; é um desafio para alguns anos adiante. Nesse aspecto, a capacidade de instalar o Docker e executar containers em um ambiente corporativo se tornou um estímulo para enfrentar problemas diários presentes nesses ecossistemas.

Sabemos que os containers concedem aos desenvolvedores a capacidade de executar sua stack completa de aplicativos de forma local, trazendo maior capilaridade e robustez na hora de criá-los para aplicativos.

Acelerar esse padrão para cada projeto envolvido com integrações contínuas, usando containers é a melhor saída para criar fluxo de cadências e melhorar a manutenção automática em uma esteira de Devops.

Outro ponto importante é utilizar containers em ferramentas como Jenkins, principalmente na hora de aplicar automação de orquestração de containers, ela garante correção assertiva de imagens nas bases regularmente e reconstrução de todas quando qualquer artefato é alterado.

Fato é, que um futuro engenheiro Devops precisa saber de Kubernetes mesmo que de uma forma não tão aprofundada assim.

Habilidades Interpessoais

Um dos princípios fundamentais do Devops é a colaboração. Ser capaz de se comunicar de maneira eficaz, interagindo com outros times é uma habilidade muito importante para ajudar equipes no desenvolvimento, entendendo necessidades e perspectivas de suas operações.

Aprendi que nosso trabalho passa por nortear e ajudar todos a trabalhar em prol de um objetivo em comum. De fato, você criará menos barreiras potencializando e mudando o status quo de todos envolvidos.

O engenheiro de Devops carrega em si a responsabilidade de influenciar e capacitar pessoas para resolver e automatizar seu próprio problema, de uma forma que a pessoa se sinta mais preparada para dar continuidade sem precisar de auxílio.

Ainda ficou com alguma dúvida sobre o assunto ou quer compartilhar sua experiência conosco? Conta pra gente nos comentários!