DevSecOps

11 ago, 2020

Rompendo silos com o poder da infraestrutura

Publicidade

Uma das muitas frases que eu costumava a ouvir de alguns desenvolvedores sempre que eu tentava apresentar alguma ferramenta de gerenciamento de configurações era “eu não tenho permissão para fazer isso”. Essa barreira era, e em alguns casos ainda é, um enorme obstáculo principalmente nas empresas que não aderiram ao movimento e práticas DevOps, abordagem de cultura, automação e design de plataforma que tem o objetivo de agregar mais valor aos negócios e aumentar a capacidade de resposta às mudanças com entregas rápidas e de alta qualidade. Esse é um problema que eu, particularmente, gosto de chamar de “The Wall” (“O Muro”, em tradução livre em português) – se você está se perguntando, sim, eu sou um grande fã de Pink Floyd!

“The Wall” acontece quando, por uma ou mais razões, desenvolvedores e equipe de operações não encontram um meio-termo para compartilhar as responsabilidades, o que provavelmente irá resultar em uma aplicação rígida e pouco confiável. Em um mundo no qual as exigências mudam de forma constante em razão do comportamento do consumidor, estas equipes provavelmente vão falhar quando tentarem criar uma plataforma estável, resiliente e flexível.

Não é fácil lidar com este problema cultural e um dos principais pilares que o suportam é a complexidade técnica. Todos os lados têm suas especificidades, problemas, arquiteturas e linguagens. Por isso, se nós apenas jogarmos pacotes de um lado para o outro, estaremos somente acrescentando “outro tijolo no muro”, sem se preocupar com a soma dos fatores e o resultado final. É como construir algo de maneira solta e desordenada.

Há a necessidade de transformar este emaranhado e encontrar o caminho do meio, trabalhando, por exemplo, em plataformas como o Kubernetes, um orquestrador de containers que pode fornecer uma abordagem tranquila quando as equipes são apresentadas a áreas até então desconhecidas. A grande vantagem do Kubernetes é que ele não trata a infraestrutura “como código”, mas “como dados”.

Em 2013, o criador do Ansible, Michael Dehaan, afirmou que a “infraestrutura é melhor modelada não como código, não em uma interface, mas como uma política baseada em textos, pontos em comum e orientada a dados”. Ou seja, trabalhando com representações de textos básicos, pessoas não precisam chegar perto de linguagens altamente complexas. Tanto o Kubernetes como o Ansible, por exemplo, permitem usar um formato chave-valor chamado YAML, que possibilita descrever o que você precisa. Basta dizer “eu quero isso” e o Kubernetes vai descobrir como fazer.

Obviamente, é necessário fornecer a informação correta e seguir algumas diretrizes. Também é possível estabelecer especificidades técnicas, se houver alguma, e você souber como fazer. Mas usuários que estão começando a entrar nesse universo acham que esta característica de linguagem intuitiva e simplificada é uma importante porta de entrada para o mundo dos containers. Apesar de Kubernetes trabalhar com JSON e protobuf, o orquestrador fornece uma forma fácil de interagir com o K8S API, criando, modificando e deletando recursos.

Confiando em práticas CI/CD, é possível implementar validações usando controles de admissão, criando templates, expandindo-os com o Operators e usando ferramentas como Helm, como parte do pipeline de implantação. Os mantenedores têm a possibilidade de controlar funções e acesso a elas, estabelecendo políticas para ajudar a tornar a plataforma mais estável e auditável.

O Kubernetes adotou a cultura DevOps como funcionalidade, o que o torna uma ferramenta pronta para romper os silos organizacionais desnecessários. Esta ponte poderosa entre operações e desenvolvimento fornece uma forma colaborativa de aprender, construir, reconstruir, estender e fazer muito mais, criando o caminho perfeito para aplicações baseadas em containers, ambientes cloud e para o desenvolvimento nativo em cloud.