Vou em frente e digo: ao analisar mais de perto o custo total de propriedade (TCO) associado ao Kubernetes, os métodos de desenvolvimento mais tradicionais ainda apresentam vantagens atraentes. Enquanto encerramos outra KubeCon, talvez seja hora de nos aprofundarmos nisso.
Esta é uma posição rara de se assumir. Eu uso contêineres e Kubernetes desde que eles apareceram pela primeira vez no cenário da computação em nuvem, há muitos anos. Projetei e construí vários sistemas escaláveis em nuvens públicas usando essa tecnologia, então sei que funciona, e funciona bem. O que quero dizer é que muitas vezes é aplicado em excesso. Os construtores de sistemas são motivados pelo que as crianças legais estão fazendo hoje em dia, em vez de encontrar as soluções que retornam o maior valor comercial.
Como resultado, tenho certeza de que milhões de dólares serão desperdiçados à medida que esses erros arquitetônicos persistem. É hora de fazermos melhor. Talvez você concorde.
O que considerar
À medida que avançamos nesta análise, você descobrirá que parte disso pode ou não se aplicar a você e à sua organização. Dizer “depende” parece uma desculpa para muitos, mas geralmente é a resposta correta. Você deve avaliar cada carga de trabalho e conjunto de dados, quer esteja migrando para a nuvem ou construindo novos sistemas. Você precisa estar preparado para usar as melhores soluções tecnológicas para as necessidades do seu sistema. Desculpe a ser o portador de más notícias.
Kubernetes introduz um nível de complexidade que as ferramentas de desenvolvimento mais tradicionais não o fazem. Gerenciar um cluster Kubernetes requer um conhecimento profundo de sua arquitetura e componentes, desde rede até armazenamento e segurança. Esta complexidade requer pessoal qualificado, capaz de gerenciar e otimizar um ambiente Kubernetes.
Por outro lado, as abordagens e ferramentas de desenvolvimento tradicionais muitas vezes dependem de arquiteturas mais simples que podem ser gerenciadas com os conjuntos de habilidades que a maioria das empresas já possui. É claro que isso varia muito de uma empresa para outra, mas o custo de obtenção de habilidades em Kubernetes ou de treinamento da equipe existente geralmente é muito maior do que qualquer benefício do uso dessa tecnologia.
Um cluster Kubernetes requer muita sobrecarga, embora o Kubernetes prometa reduzir os custos de infraestrutura por meio de uma orquestração eficiente de contêineres. Isto inclui os nós que compõem o cluster e os recursos necessários para gerenciar o failover. Além disso, ajudaria se você tivesse a infraestrutura para gerenciar redundância e escalabilidade; pode haver muito mais recursos pelos quais você precisa pagar do que o necessário.
As abordagens de desenvolvimento tradicionais podem utilizar arquiteturas mais monolíticas. Ser menos flexível pode resultar em despesas de capital iniciais e custos contínuos mais baixos. Tive um projeto para construir o mesmo sistema usando ambas as abordagens; o custo da infraestrutura da arquitetura monolítica tradicional foi um terço da implantação do Kubernetes – apenas para aquele sistema específico. Claro, pode haver outros motivos para optar pelo Kubernetes além do fato de que fica bem no currículo.
Manter um ambiente Kubernetes é operacionalmente complexo. Monitoramento, ajuste e atualizações contínuos são necessários para garantir que o ambiente seja seguro, eficiente e confiável. Mais uma vez, esta manutenção contínua requer pessoal qualificado e ferramentas modernas, aumentando o TCO e, em alguns casos, duplicando-o.
A instalação e configuração iniciais podem ser demoradas e complicadas, embora o Kubernetes possa automatizar e agilizar os processos de implantação. Isso pode atrasar o tempo de implantação e de lançamento no mercado de muitos sistemas, deixando você aberto a mais possíveis erros. Os métodos tradicionais de desenvolvimento e implantação podem precisar de mais benefícios de automação e escalabilidade de contêineres. No entanto, eles geralmente são mais simples e rápidos de serem implantados em determinados aplicativos.
A natureza distribuída destes sistemas introduz novos riscos e pontos de falha. As implantações baseadas em contêineres e Kubernetes oferecem alta escalabilidade e níveis de tolerância a falhas, e é por isso que os usamos, mas eles apresentam problemas que não vemos no desenvolvimento tradicional. Estas podem variar desde a “expansão de contentores” até vulnerabilidades de segurança dentro do ecossistema de contentores, com novas ferramentas que necessitam de competências atualizadas para serem executadas corretamente. Eu descobri que não é quando ocorrerá uma falha; isso é quantos Vai acontecer. As falhas são sempre mais numerosas nas implantações do Kubernetes.
As arquiteturas tradicionais podem oferecer menos opções de escalabilidade, mas podem fornecer um ambiente mais contido, mais fácil de proteger e gerenciar. Isso se traduz em menos custos, mas também em menos capacidades. Às vezes, essa compensação faz sentido para os negócios.
A importância de uma análise de TCO
Embora Kubernetes e contêineres ofereçam vantagens significativas em escalabilidade, eficiência e utilização de recursos, seu TCO às vezes pode estar fora de sintonia. É claro que descobri que a análise do TCO é muitas vezes ignorada; aqueles que escolhem a tecnologia não têm uma boa noção das compensações que estão sendo feitas. Costumo fazer perguntas sobre as vantagens de usar abordagens mais tradicionais e, na maioria das vezes, recebo olhares vazios e falta de respostas, o que mostra que a análise de TCO não foi feita. Por outro lado, me perguntam se vou muito à KubeCon, então é isso.
As complexidades e os custos de gerenciamento de um ambiente Kubernetes destacam que os métodos tradicionais de desenvolvimento e implantação ainda têm valor. Na verdade, se você é uma organização com recursos de TI limitados, precisa realmente prestar atenção ao TCO.
O dinheiro gasto em sistemas baseados em Kubernetes remove recursos de outras necessidades mais urgentes. Não conheço uma única organização de TI com orçamento ilimitado para experimentar todas as novas tecnologias. Você precisa escolher suas batalhas com cuidado.