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.