This content is not available in your language... So if you don't understand the language... well, at least you can appreciate the pictures of the post, right?
This content is not available in your language... So if you don't understand the language... well, at least you can appreciate the pictures of the post, right?
Alguns dias atrás um amigo meu mostrou um vídeo chamado "Não Use Docker Compose em Produção! Eis o Porquê" do Erick Wendel que o YouTube recomendou. Eu uso Docker Compose em produção a mais de QUATRO ANOS, hospedando algumas aplicações que possuem mais de dois milhões de acessos mensalmente, e achei que o vídeo foca em coisas que são balelas com uma pitada de fearmongering (fomentador de medo), parecendo que o objetivo do vídeo foi apenas para vender cursos sobre Kubernetes.
No vídeo é recomendado usar Kubernetes, e bem, eu já usei usei k3s, e as vantagens que você ganha rodando k3s nas suas máquinas são pequenas comparadas com a dor de cabeça que você tem de manter o k3s na máquina. Já gastei horas tentando debugar problemas em minhas aplicações sendo que, no final, era problema no k3s. Exemplos incluem Diferenças entre o kubectl do k3s e o Kubernetes upstream e que, se você fizer bind de um serviço na porta 10010, você não conseguirá mais dar attach em serviços hospedados no k3s, e essa porta não é documentada em nenhum lugar.
Usar Kubernetes gerenciado pela AWS/GCP/Azure te tira essas dores de cabeça, mas você vai recomendar AWS/GCP/Azure para uma pessoa que está começando no ramo de empreendedorismo? Ela vai gastar muito mais dinheiro com empresas cloud ao invés de comprar uma VPS/máquina dedicada em uma hospedagem como a OVHcloud ou Hetzner! Para iniciantes, é melhor usar Compose e a pessoa descobrir o que ela precisava para a aplicação dela ao longo do tempo, e não colocar Kubernetes direto e ela ter um monte de coisa que, para ela, é desnecessária e pode até atrapalhar a aplicação dela.
Usar Kubernetes é MUITO mais complicado, e overkill, do que usar apenas o Compose ou o Swarm. Configurar um serviço no Kubernetes é extremamente mais complicado do que um serviço no Compose, e você adiciona um mental overhead gigantesco para quem quer hospedar uma simples aplicação na internet.
Kubernetes também é complicado para tipos de aplicação que precisam ter um local para ler e escrever dados, como banco de dados ou servidores de jogos como Minecraft. Como você vai colocar para o serviço sempre rodar em um servidor em específico? E onde vai escrever os dados? Ah, e o tal de "ele roda duas aplicações ao mesmo tempo" isso dai não vai dar problema nessas aplicações? Com o Compose você não tem esse mental overhead pois é só colocar um bind de volume e vida que segue.
Eu já usei o Swarm no passado, e até escrevi um tutorial sobre ele. O Swarm é bom e é mais simples que o Kubernetes, mas atualmente não uso pois as minhas aplicações não possuem vantagem de ter auto escalonamento ou replicação. Quando a aplicação precisa de replicação, eu faço ela manualmente e uso scripts em bash para automaticamente atualizar as replicações. Isso sim é algo que o Kubernetes e o Swarm fazem e que eu substituo a feature com algo que eu fiz manualmente, mas tenho certeza que o meu script em bash foi mais simples de implementar na minha máquina que o Kubernetes. :gessy_smol:
Sobre o vídeo:
Não tem tantos pontos a comentar no vídeo pois a maior parte do tempo do vídeo é passado falando sobre curso, ou falando sobre sponsors, ou falando sobre coisas que não são relevantes a serem comentadas neste comentário.
No final, se você já usa Docker Compose, você já sabe de todas essas desvantagens que o Compose tem.