Três pontos a considerar antes de adotar Kubernetes

Elemar Júnior

 

Esta publicação foi revisada e ampliada em uma discussão, registrada em vídeo, no canal da EximiaCo.


Muitos times estão empolgados para começar a utilizar Kubernetes, graças aos recursos oferecidos que favorecem a resiliência, elasticidade, portabilidade e confiabilidade. Alguns desenvolvedores querem ganhar experiência com a plataforma para adicionar mais uma skill altamente demandada em seu currículo, outros são entusiastas de tecnologia e buscam uma oportunidade para conhecer mais a respeito. Em geral, a maioria dos desenvolvedores hoje gostaria de trabalhar com Kubernetes em algum momento.

Porém em que cenários a utilização do Kubernetes é realmente justificável? Para responder essa pergunta, vamos analisar alguns fatores a levar em consideração ao escolher quando utilizar o Kubernetes, e principalmente, quando não utilizá-lo.

#1 – Foi desenhado para problemas de arquitetura distribuída

Como explicado na documentação oficial do Kubernetes:

O Kubernetes oferece uma ferramenta de trabalho para executar sistemas distribuídos de forma resiliente. Ele cuida de fatores de escala e pontos de falha para sua aplicação, oferece padrões de entrega, e mais.

Ele não é feito exclusivamente para sistemas distribuídos, mas para aplicações conteinerizadas. Ainda assim, ele oferece diversos recursos que facilitam o gerenciamento e escala de sistemas distribuídos, como soluções de microsserviços. Também é considerado um sistema de orquestração.

O que é orquestração?

Automação e orquestração são conceitos diferentes, mas relacionados. Com a automação, você aumenta a eficiência dos negócios com a redução ou a substituição da interação humana por sistemas de TI. No lugar de pessoas, aplicações são usadas para executar tarefas e, assim, reduzir os custos, a complexidade e os erros.

Em geral, a automação está relacionada à automatização de uma tarefa individual. Por outro lado, a orquestração possibilita automatizar processos ou fluxos de trabalho que incluem várias etapas em diferentes sistemas. Depois de incorporar a automação aos processos, é possível orquestrá-los para execução automática.

Red Hat Official Web Site

Em outras palavras, o Kubernetes torna mais fácil gerenciar soluções complexas que seriam difíceis de sustentar sem um sistema de orquestração apropriado. Apesar de ser possível implementar essas práticas de engenharia de DevOps “do zero”, isso não é escalável se você vai de dezenas até centenas de serviços.

Nada impede que soluções monolíticas sejam hospedadas no Kubernetes, porém as vantagens que essa plataforma oferece para sistemas distribuídos não representam nenhum benefício real para aplicações monolíticas.

#2 – Kubernetes é complexo

Para usufruir as vantagens dos recursos disponíveis no Kubernetes, os desenvolvedores e operadores precisam ter conhecimento de contêineres, redes, segurança, portabilidade, resiliência e do Kubernetes em si. Para usar adequadamente seus workloads, você deve conhecer como cada componente funciona. Para gerenciar um cluster, você deve entender sua arquitetura, armazenamento, API e funções administrativas, que são muito diferentes de ambientes virtualizados tradicionais. Para expandir a solução, você deve saber como integrar ferramentas de deploy, monitoramento e tracing, como Helm e Istio. Muitos novos conceitos vêm com o uso da plataforma, e seu time precisa estar preparado para esse desafio.

Os desafios técnicos que a plataforma traz tanto para os desenvolvedores quanto para os operadores deve ser levado em consideração na escolha da plataforma. Você possui especialistas disponíveis em sua equipe ou está disposto a investir em contratações e em capacitação para utilizar o Kubernetes de maneira apropriada?

#3 – Kubernetes é caro para soluções pequenas

Para entender o motivo, vamos reforçar um dos conceitos chave do Kubernetes – resiliência. Para usufruir disso, você precisa de nodes adicionais, ou seja, acima da quantidade mínima necessária para executar suas aplicações. Se um dos nodes cair, os pods requisitados serão realocados nos nodes disponíveis. No caso de ambientes de produção, ao menos três nodes são recomendados para resiliência.

É fácil de supor que, caso você tenha apenas uma aplicação para hospedar sem necessidade tão alta de escala, essa infraestrutura seja um exagero. Mas ainda que você tenha dez aplicações ou mais, você precisa considerar se o custo do cluster vale o esforço de sua manutenção.

O custo de manter o ambiente também inclui o suporte operacional. Quanto mais complexa a plataforma, mais pessoas especializadas deveriam ser envolvidas. Isso pode implicar em contratar uma empresa terceira especializada em fornecer suporte ao Kubernetes, ou adquirir uma solução com serviços de suporte inclusos, como o Openshift.

Quando escolher o Kubernetes?

Dependendo da arquitetura usada, do número de aplicações envolvidas e grau de dependência entre elas, e a capacidade operacional do seu time, é possível verificar se o Kubernetes é a escolha apropriada dentre todas as tecnologias disponíveis.

Com Web Apps for Containers, você possui um ambiente completamente capacitado para produção. A partir do plano Standard, recursos de SSL e monitoramento estão incluídos, e é possível ter um ambiente seguro, escalado e monitorado com pouco esforço operacional.

Se você lida apenas com aplicações isoladas, ou um número pequeno de aplicações conectadas, talvez uma combinação de Azure Web Apps e Azure Container Instances rodando na mesma rede virtual poderia ser o suficiente.

Por outro lado, se você possui um número crescente de aplicações contêinerizadas, hospedá-las no Kubernetes pode ser interessante. Você poderá hospedar diversos tipos de aplicações, como aplicações web, API’s e jobs recorrentes em um único ambiente centralizado. Seu time poderá se focar em uma única plataforma ao invés de várias plataformas de hospedagem distintas.

Agora, se você lida com cenários distribuídos, como microsserviços, então vá em frente. Arquiteturas distribuídas são complexas, e o Kubernetes foi desenhado para facilitar seu gerenciamento. Não consigo pensar em nenhuma plataforma tão completa e extensível para soluções distribuídas quanto o Kubernetes.

Conclusão

Se você lida com um número pequeno de aplicações, com pouca ou nenhuma dependência entre si, outras opções de hospedagem como Azure Web Apps para Containers ou Azure Container Instances – ou uma combinação delas – pode ser mais simples ou possuir melhor custo-benefício.

Se o seu time está confortável com os conceitos e o uso de Kubernetes, e você possui uma quantidade crescente de aplicações contêinerizadas, pode ser interessante centralizar sua hospedagem em uma única plataforma, como o Azure Kubernetes Service.

Kubernetes é uma plataforma desenhada para aumentar a performance e reduzir o esforço operacional de sistemas distribuídos. Isso basicamente faz com que um cenário complexo, como microsserviços, fique menos operacionalmente complexo.

Se seu cenário não lida com um número grande de aplicações, não envolve arquitetura distribuída ou seu time não possui especialistas suficientes, não será possível usufruir das vantagens que o Kubernetes oferece porque elas não foram feitas para o seu cenário. Você vai acabar adicionando uma complexidade acidental indesejada para a sua solução.

Em resumo

O problema
Times técnicos estão adotando Kubernetes sem ter problemas que ele, a princípio, resolve. Sem entender os desafios que ele apresenta, os times acabam adicionando complexidade acidental e não desejada para as soluções.
O Insight
Se seu time é qualificado para usar Kubernetes e há a necessidade de lidar com uma quantidade crescente de aplicações conteinerizadas ou arquiteturas distribuídas, então, Kubernetes é uma ótima opção. Senão, opções como Azure Web Apps para Contêineres ou Azure Container Instances – combinados – podem ser alternativas mais razoáveis e até mais baratas.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas
Infraestrutura e Nuvem

Migração para a nuvem, mais do que mudança tecnológica, implica em mudança da cultura organizacional

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Três pontos a considerar antes de adotar Kubernetes

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?