Uma jornada de longo prazo para uma solução duradoura
A modernização de arquitetura e aplicações é sempre um momento complexo. Existem muitos fatores envolvidos e o primeiro da lista é que a modernização pressupõe que algo já está funcionando: já existe uma arquitetura ou aplicação em uso e estamos trabalhando para o futuro dela. Por isso, o planejamento deve ser feito a longo prazo. Como um bom coach diria: "Toda jornada começa com o primeiro passo!"
Aqui, o primeiro passo é entender que Kubernetes não resolve todos os problemas, nenhuma tecnologia faz isso. Entretanto, Kubernetes é uma tecnologia robusta, com uma comunidade open source gigante, regulada pela CNCF, ligada a Linux Foundation e com um ecossistema que vem crescendo cada vez mais nos últimos anos, como é possível observar aqui:
Além disso, 90% das empresas no índice “Fortune 500” utilizam Kubernetes para executar suas estratégias de modernização, pois a grande mudança que a ferramenta traz é a aceleração com qualidade.
A seguir, você pode entender melhor algumas comparações de tecnologias e ganhos na utilização de Kubernetes.
Kubernetes VS VM's VS Swarm
Máquinas virtuais já fazem parte de nossas vidas há um bom tempo. Passamos pela era dos "Configuration Managers", como grandes exemplos temos o Puppet e o Chef. Essas ferramentas continuam existindo e sendo utilizadas em larga escala, por isso pode-se dizer que elas são utilizadas para subir e manter ambientes de Kubernetes. Por exemplo: com o crescimento da adoção de IaC (Infraestrutura como Código) essas ferramentas receberam concorrentes a altura como Ansible e Terraform. Elas possuem grande valor quando falamos de infraestrutura, pois habilitam a capacidade de reproduzir e até mesmo auditar não só a criação como também seu processo e administração. Porém, quando falamos de Kubernetes estamos falando de uma camada acima de infraestrutura, que exige ainda mais agilidade e uma automação que esteja pronta para agir sozinha.
Sendo assim, a utilização de VM's deve estar nesse cenário restrita à infraestrutura, habilitando que as camadas superiores operem com eficiência e na velocidade que o negócio exige.
Como dito anteriormente, tal qual Kubernetes, containers não são balas de prata que resolvem e se adequam a qualquer necessidade. Entretanto, com a evolução e adoção em massa dessas tecnologias, a quantidade de exceções diminui a cada momento.
Máquinas virtuais tem hoje como principal função serem recursos disponíveis para utilização, não existe comparação, por exemplo, do tempo em minutos para uma máquina iniciar e estar recebendo acessos versus segundos em que um containers está no ar respondendo requisições. Mesmo utilizando técnicas de infraestrutura imutável, ainda não há comparação com os ganhos de eficiência e de alocação de recursos, com containers chegando a mais de 40%.
Falando em agilidade e eficiência de containers, apenas colocar suas aplicações neles não resolve problemas.a verdade, quase todos ainda estão lá… talvez a portabilidade é quem tenha maior ganho, mas ainda assim, seria necessário resolver problemas de endereçamento, roteamento, governança, escala, disponibilidade, resiliência, entre outros e essa questão é resolvida pelo "Orquestrador de Containers".
Neste momento da história, existem outros orquestradores de containers além do Kubernetes como o Docker Swarm (Swarmkit) e Nomad (Hashicorp). Então por que utilizar Kubernetes? Talvez um grande trunfo do Kubernetes seja a sua comunidade de usuários e empresas, se você verificar o Github agora, temos mais de 3 mil contribuidores, isso apenas no projeto Kubernetes. Há ainda, mais de 1800 outros projetos no ecossistema da CNCF que tem como base o Kubernetes para seu funcionamento.
Num passado recente, algumas empresas que já possuíam suas próprias soluções de orquestração as abandonaram e focaram seus esforços em Kubernetes. Empresas como RedHat, Pivotal, Cloud Foundry e até mesmo a VMWare, gigante da virtualização on-premisses tem sua própria solução de Kubernetes. Da mesma forma, todos que os cloud providers possuem suas próprias ofertas de Kubernetes como serviço e vem apostando muito nessa como a forma definitiva de deploy de aplicações.
Existe ainda o dilema da Tostines: "Kubernetes é maior, pois tem mais features e está mais estável ou é mais estável e tem mais features, por que é o maior?"
Sinceramente, não sabemos a resposta, porém os números estão por aí. Você pode ver os últimos relatórios não apenas da CNCF como do Google tirar as conclusões de quais tecnologias vai utilizar para formar sua nova arquitetura e ambiente nos próximos anos.
O que podemos afirmar com certeza, é que Kubernetes e seu ecossistema trarão um grande ganho de agilidade, resiliência e longevidade para seu plano. Imagine utilizar na sua stack as mesmas tecnologias que não só gigantes hipsters como Google, Netflix, Spotify e Alibaba utilizam, bem como bancos onde o Kubernetes é a stack padrão solicitada.
Nos exemplos abaixo, você pode conferir como o Banco Rendimento e a Americanas utilizam a plataforma como base para sua grande escala.
Aplicações que usam Kubernetes com a Getup
Pix: agilidade para transferências.
Em parceria com o Banco Rendimento, durante 2020 a Getup trabalhou para acelerar o Pix, projeto do Banco Central do Brasil.
Nossos especialistas já haviam trabalhado em outras iniciativas com o banco, atuando com excelência. Neste caso, fomos escolhidos pelo trabalho exemplar em experiências prévias.
Segundo Josmar Peixe, gerente de arquitetura e solução do Banco Rendimento: “É difícil não conseguir justificar pontos positivos para aderir ao Kubernetes. Com ele, a gente passou de cerca de 60 para 1.100 builds por mês”. Confira esta entrevista.
Americanas
Com a pandemia, empresas do varejo brasileiro enfrentaram alguns contratempos devido ao processo de transformação digital imposto pelas restrições do isolamento. Na Páscoa de 2020, a Americanas precisou atender uma demanda que passou de quatro mil pedidos por dia para quarenta e dois mil.
Além de rever questões de logística (como estoque e mão de obra), foi fundamental revisar a infraestrutura tecnológica da sua aplicação. Para solucionar esse desafio, a Lojas Americanas S/A contratou a Getup como apoio operacional e estratégico na jornada em K8s.
Com o suporte dos nossos especialistas, a aplicação foi quebrada em microsserviços e no mesmo ano, durante a Black Friday, já estava sendo executada com recursos nativos do Kubernetes.
Conforme Armando Reis, IT Manager da varejista: “Rodar as aplicações com Kubernetes dá mais velocidade ao processo, mais garantia de que o código vai funcionar em ambiente de produção, pede pouca ação manual e reduz o tempo do ciclo de vida de desenvolvimento da aplicação e custo com máquinas”. Confira o caso.
Por último, mas não menos importante…
A Curva de Aprendizado e Adoção ainda precisam ser abordadas. É fato que esta fase existe em toda tecnologia, transformação e modernização que se deseje fazer. Porém, a pergunta que deve ser feita é: vamos investir em conhecimento que dure? E a resposta é: Com certeza!
Quer saber mais sobre como caminhar para a modernização através de uma jornada Kubernetes? Fale com um especialista.