Não use Kubernetes

E aí, seus malucos?

Antes de mais nada, eu gostaria de dizer que é muito bom estar de volta depois de (mais) uma sequência de feriados, especialmente quando estes foram emendados com merecidas férias desfrutadas em terras Tupiniquins. Foi um hiato grande, mas necessário para que as baterias fossem recarregadas e as minhas prioridades fossem reorganizadas.

Minha intenção é a de que a frequência das postagens volte aos patamares anteriores, com pelo menos uma postagem por semana, preferencialmente as sextas-feiras. Desejem-me sorte nessa empreitada, amiguinhos!


O ciclo eterno do hype tecnológico

A alguns dias atrás, eu estava navegando pelo LinkedIn quando reparei em um certo padrão nas postagens entregues pelo algoritmo:

Eu tive que pesquisar as mensagens novamente 😅

Uma enxurrada de conteúdos questionavam o uso indiscriminado do Kubernetes. "Você realmente precisa de K8s?", "Por que sua startup não deveria usar Kubernetes", "Como economizamos 80% migrando do Kubernetes para soluções mais simples" e assim por diante.

Esse movimento me fez refletir sobre um padrão que se repete ciclicamente na nossa indústria, que eu humildemente chamo de Síndrome da Bala de Prata Tecnológica.

O Kubernetes como caso de estudo

Como um grande fã de cutelaria e analogias, eu gosto de pensar no Kubernetes como um canivete suíço ultra-sofisticado que você compra achando que vai resolver todos os seus problemas de camping. Você gasta uma fortuna, passa semanas aprendendo todas as suas 73 funcionalidades diferentes, e depois descobre que na maioria das vezes tudo que você precisava era de uma faca simples, daquelas encontradas até mesmo em supermercados 🔪

Victorinox SwissChamp XXL

Para muitas empresas (em especial startups), mas principalmente para pequenas equipes, implementar um cluster Kubernetes é como contratar uma orquestra sinfônica para tocar "Parabéns pra Você" na festa de 1 ano da sua filhota. Apesar de ser um arranjo funcional (sacaram? arranjo? heim? heim?) você está desperdiçando recursos, tempo e sanidade mental para resolver um problema que poderia ser atacado com uma solução muito mais simples. E com o detalhe que, em muitos casos, o maestro será inevitavelmente você 🎼

A realidade é que muitos sistemas rodam perfeitamente bem com:

  • Um bom serviço de PaaS (como Azure App Service ou Azure Funtions)

  • Containers simples com Docker Compose

  • Até mesmo VMs tradicionais bem configuradas

Mas o hype nos faz acreditar que se não estivermos "fazendo DevOps" com Kubernetes, estamos fazendo errado.

Os sintomas da Síndrome da Bala de Prata

Toda síndrome é caracterizada como um conjunto de sinais e sintomas que caracterizam uma doença. No caso da Síndrome da Bala de Prata, isso não poderia ser diferente:

  • Frases como “esta tecnologia vai revolucionar a maneira como gerenciamos os nossos web services” costumam ser entoadas como um mantra nessa fase.

  • FOMO significa "fear of missing out" (medo de ficar de fora). Para muitas empresas, o medo de não utilizar as últimas tendências tecnológicas e perder a onda da inovação tecnológica justifica qualquer coisa - incluindo implementar tecnologias complexas e caras.

  • Orçamentos milionários, consultorias caríssimas, equipes inteiras dedicadas a uma tecnologia que não justifica todo o esforço. Mas pelo menos estamos na crista da onda.

  • É quando os evangelistas e demais stakeholders percebem que a solução milagrosa não está resolvendo nenhum problema real. Pior, está consumindo uma quantidade burlesca de recursos (a.k.a grana).

  • Talvez uma solução mais simples seja mais inteligente...".

Por Que Caímos Sempre na Mesma Armadilha?

A resposta curta está na natureza humana e na dinâmica da indústria de tecnologia:

  • Complexidade vende consultorias: É mais fácil cobrar R$ 200 mil por uma implementação de Kubernetes do que R$ 20 mil por um sistema baseado em máquinas virtuais, por exemplo.

  • FOMO institucional: Ninguém quer ser "aquela empresa" que ficou para trás.

  • Marketing tecnológico: Fornecedores de TI precisam vender a próxima grande novidade.

  • Ego técnico: Desenvolvedores adoram brinquedos novos e complexos.

As melhores soluções tecnológicas que conheço seguem o princípio KISS (Keep It Simple, Stupid). Essa é a filosofia por trás de quase todas as ferramentas que vem empacotadas junto ao kernel Linux nas mais famosas distribuições (Ubuntu, Fedora, etc): elas executam uma única tarefa, e a fazem extremamente bem. Se você precisar, pode encadear as ferramentas via pipes ou lendo a entrada ou saída de arquivos ou mesmo do terminal; em última instância, você pode agregar tudo em um ou mais scripts shell. O ponto aqui é que a complexidade da sua solução aumenta organicamente de acordo com a necessidade real do problema, e não o contrário.

Quando usar Kubernetes realmente faz sentido

Não me entendam mal, Kubernetes tem seus casos de uso legítimos, e é importante reconhecê-los:

    • Gerencia centenas ou milhares de microserviços

    • Tem múltiplas equipes publicando esses serviços de maneira independente

    • Precisa de auto-scaling complexo baseado em múltiplas métricas

    • Opera em múltiplas nuvens simultaneamente

    • Tem requisitos rigorosos de alta disponibilidade com SLAs de 99.99%+

    • Gerencia workloads com padrões de tráfego extremamente variáveis

    • Precisa de isolamento granular entre ambientes e tenants

    • Tem uma equipe pequena (menos de 10 desenvolvedores)

    • Roda poucos serviços (menos de 5-10 aplicações)

    • Seu tráfego é relativamente estável e previsível

    • Uma solução PaaS atende seus requisitos de publicação

    • Você não tem expertise dedicada para gerenciar esse tipo de complexidade

Considerações finais

Como muitos de vocês já devem ter percebido, estamos vivendo mais um ciclo de hype, e como sempre, a poeira vai baixar. Por exemplo, em 2-3 anos, provavelmente veremos posts no LinkedIn sobre "Por que sua empresa não precisa de IA para tudo" e "Como economizamos milhares voltando para soluções tradicionais". A única diferença é que a bola da vez é o Kubernetes pois muitos profissionais de TI e tecnologistas já entenderam que ele não resolve todos os problemas do mundo (fase de racionalização).

A questão não é ser contra a inovação, mas ser autêntico a respeito do tema. No final das contas, toda tecnologia deveria ser tratada como ferramenta e não como religião. Use a ferramenta certa para o trabalho certo, e sua vida (e o orçamento da sua equipe) vão agradecer.

Previous
Previous

Não use Kubernetes 2 - Alternativas

Next
Next

Sobre a definição de sucesso profissional