Três pontos a considerar antes de adotar Kubernetes

 

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.

[tweet]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. [/tweet]Você vai acabar adicionando uma complexidade acidental indesejada para a sua solução.

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:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Três pontos a considerar antes de adotar Kubernetes

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

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?