Contêineres: as conversas atualmente não giram mais em torno do se, mas do como

By ericsakowski -

Containers: Conversations Today Are No Longer If, But How

Recentemente, pedi a uma organização que descrevesse sua estratégia de contêineres e me disseram que ainda não a tinham nenhuma, "mas isso não importa, porque a concorrência está muito atrás no que diz respeito a essa tecnologia".

Espero que essa suposição incorreta não seja comum, porque ela pode custar caro para quem acredita nela. Como diretor de transformação de aplicativos da Rackspace, minha equipe está trabalhando com muitos clientes, alguns na mesma condição que essa pessoa, em vários estágios de adoção de contêineres.

A verdade é que a adoção de contêineres está em pleno andamento; a Gartner estima que 75% das empresas globais farão uso de contêineres na produção nos próximos dois anos. E por que não?

Os contêineres reforçam a modularização e exigem automação em um grau em que a inclusão de recursos ou correções de erros de digitação é tão fácil quanto enviar o código ao controle de fonte e assistir ao pipeline automatizado executar a compilação, obviamente com análises estáticas de código, testes de unidade e testes de aceitação automatizados, além da implementação na produção.

Os contêineres permitem soluções em nuvem híbrida e multinuvem

O outro grande benefício, é claro, é que os contêineres permitem a abordagem de nuvem híbrida cada vez mais popular que os CIOs estão adotando. A taxa de crescimento anual composta de 27% da nuvem híbrida reflete a capacidade que ela tem de oferecer maior flexibilidade e eficiência, além de preferências de segurança, requisitos de conformidade e necessidades relativas à soberania de dados.

Com essa combinação de plataformas, no entanto, a implementação pode ser complicada, pois os scripts voltados para uma nuvem pública específica não funcionam em uma área dedicada. Com contêineres, essa implementação é muito mais simplificada. Afinal, um terminal da API do Kubernetes em uma nuvem pública é exatamente igual a um terminal da API do Kubernetes em uma nuvem privada. (Embora existam muitas opções para orquestradores de contêineres, o pioneiro é, sem dúvida, o Kubernetes, por isso vou usar essa tecnologia no restante deste artigo). Depois da implementação do Kubernetes na infraestrutura física ou na nuvem, ele realmente oferece a possibilidade de implementação de aplicativos em várias nuvens: maior portabilidade, flexibilidade, agilidade e velocidade.

As dúvidas atuais sobre contêineres giram em torno do "como"

Como muitos clientes hoje entendem esses benefícios, a maioria das conversas atualmente entre minha equipe tratam dos aspectos práticos do uso de contêineres. Compilei respostas para algumas das perguntas mais comuns que ouvimos:

Como posso treinar minha equipe no uso de contêineres?

Não há uma resposta certa para isso, mas há algumas abordagens principais. Analise a possibilidade de contratar um consultor ou instrutor profissional. Embora a maioria dos desenvolvedores seja capaz de aprender por conta própria com o YouTube e em guias como “Kubernetes na raça”, pode ser difícil evitar os dimensionamentos cotidianos e as correções de erros P1 para concentrar nas novidades. Ter um plano de treinamento formal com um cronograma fixo pode ajudar a equipe a se concentrar no treinamento e dar a eles uma ferramenta para adiar os dimensionamentos enquanto treinam. Se possível, analise a possibilidade de dedicar parte da equipe ao treinamento, enquanto o restante da equipe mantém as cargas de trabalho antigas em funcionamento e alternar os recursos seguindo um cronograma de treinamento.

Meu aplicativo monolítico tem muita dívida técnica para ser colocado em contêineres

Essa é uma preocupação comum relacionada ao método cascata de desenvolvimento de software e pode ser superada com criatividade da arquitetura e na codificação. Não é necessário implementar todos os microsserviços juntos em uma única grande implementação. Eles podem ser montados um a um e implementados quando estiverem prontos. Pode ser necessário criar uma ponte de software para chegar lá. Por exemplo, se o aplicativo antigo usar um banco de dados central como repositório de dados e camada de mensagens, comece a trabalhar nisso primeiro! Projete e construa uma camada de acesso a dados e comece a refatoração para usar uma fila de mensagens como RabbitMQ ou AWS SQS em vez do banco de dados. De qualquer forma, será necessário usar DAL e MQ assim que chegar ao Kubernetes. Pode ser necessário criar um plano de várias fases para chegar aos contêineres. Determine as etapas necessárias ao longo do caminho para chegar aos contêineres e comece a criar um roteiro.

A área de segurança e conformidade não permite que a minha equipe realize implementações mais de uma vez por semana. Como faço para mudar essa visão?

Uma das desvantagens de implementações mais rápidas e simples é que também é mais fácil implementar vulnerabilidades. Envolva-se com a equipe de segurança desde o início e trabalhe com eles para planejar uma estratégia e implementação que os agrade com uma abordagem mais ágil às implementações. É absolutamente necessário empregar uma abordagem de "mudança à esquerda" para testes e segurança no uso de contêineres. Realizar análises de código estático com ferramentas como a Veracode, varredura de imagens com ferramentas como a Clair e integração de segurança de CI/CD integrada com ferramentas como a Twistlock ou Stackrox podem ajudar a mitigar os riscos. Planeje a maneira como a sua equipe corrigirá os nós mestre e de trabalho no caso de uma exploração de dia zero. O Twistlock, o Aquasec e o Stackrox contam com mecanismos internos que ajudarão a oferecer controles compensatórios, até que tudo seja corrigido. Integrando essas ferramentas, seus negócios, dados e cargas de trabalho estarão mais protegidos.

A equipe de desenvolvimento está em fase final de testes e os aplicativos são implementados no Kubernetes. E agora? Como posso saber se está funcionando?

 Às vezes, os desenvolvedores com visão de futuro podem tomar decisões tecnológicas que deixam a área de operações intrigada, tentando descobrir como habilitar o novo tempo de execução. O Kubernetes é uma tecnologia relativamente nova e o ecossistema ao redor dele é dinâmico e cresce com muita rapidez, o que leva a um número maior do que a média de explorações de dia zero e a uma lista crescente de vulnerabilidades. É importante saber como monitorar e proteger o tempo de execução, e há uma grande variedade de empresas e produtos para escolher. Ferramentas de monitoramento como o Prometheus exigem um pouco de investimento por parte dos desenvolvedores, no entanto, o estilo antigo de operações de TI que define alguns limites de espaço em disco e uso da CPU no Nagios encerrando o assunto, é insuficiente.  O retorno do tempo investido no monitoramento completo da pilha é maior, pois a equipe de operações e de desenvolvimento conta com uma visão mais aprofundada e pode reagir mais rapidamente aos problemas.

Meus aplicativos estão em contêineres, minhas cargas de trabalho estão protegidas e tudo está automatizado. Posso parar e relaxar agora?

 Talvez, por um minuto. A verdade é que não dá para parar nem mesmo depois de superar os desafios mencionados acima. O Kubernetes é um facilitador incrível da tecnologia, mas ainda é novo e está em crescimento. Por conta disso, conforme mencionei acima, há uma grande falta de qualificação. O melhor a fazer é criar planos de automação dentro da sua estratégia geral e do planejamento de recursos. Por exemplo, tenha um plano estipulado para que a próxima pessoa a ser contratada aprenda Kubernetes e, mais importante ainda, a pilha de contêineres e a cadeia de ferramentas da sua empresa, durante a integração da nova contratação.

Faça perguntas na entrevista que testam a capacidade do candidato para aprender rapidamente novas tecnologias, porque é provável que não seja possível encontrar (ou pagar) um desenvolvedor experiente do Kubernetes no mercado. Esteja aberto aos recursos remotos se decidir que precisa desse especialista experiente em Kubernetes, pois pode não haver ninguém disponível na sua região. Leve pense na possibilidade de oferecer incentivos que estimulem a retenção, para manter os funcionários que adquirirem maior habilidade no Kubernetes e na sua pilha de contêineres específica.

E, lembre-se, o Kubernetes é um ecossistema em desenvolvimento. Sua equipe vai precisar de tempo de P&D dentro da semana de trabalho para manter-se atualizada e experimentar novas ferramentas, assim que estiverem disponíveis. Planeje uma revisão de sua estratégia referente à cadeia de ferramentas e à pilha de contêineres, pelo menos semestralmente, para acompanhar o ecossistema de contêineres.

Vamos conversar sobre contêineres no KubeCon!

Para mais informações sobre como os especialistas da Rackspace podem ajudar a sua organização na estratégia de contêineres e conversarmos sobre como podemos ajudar a solucionar os desafios citados acima, visite-nos na KubeCon no estande nº S60!

Informe-se também sobre a nossa abordagem de modernização em nosso site e baixe nossa ficha de ativação de contêineres.