Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] Como identificar as ferramentas a serem utilizadas?

Considerando um ambiente de desenvolvimento voltado para uma equipe pequena, faz sentido utilizar somente um Jenkins executando em Docker para orquestrar o deploy de toda uma infraestrutura?

Quais são as principais limitações ou riscos de utilizar Docker Compose em ambiente de produção?

A partir de qual nível de complexidade ou escala o Kubernetes se torna uma escolha justificável?

1 resposta

Oi, Gabriel!

Obrigada por trazer a dúvida sobre como identificar as ferramentas.

1. Jenkins em Docker para equipes pequenas: Faz sentido?

Pra uma equipe pequena, a simplicidade costuma ser uma grande aliada. Usar o Jenkins pra centralizar e automatizar as tarefas ajuda a estabelecer uma rotina de integração e entrega desde o início.

Mas, o ponto de atenção aqui é o termo "orquestrar o deploy de toda uma infraestrutura".

  • O risco: Se o Jenkins estiver usando scripts diretos (como Bash ou comandos CLI de provedores de nuvem) para criar servidores, bancos de dados e redes, você cai no problema que o Leonardo e o Guilherme mencionaram no vídeo: a falta de controle de estado e o risco de quebrar a idempotência.
  • A boa prática: O ideal é que o Jenkins atue como o gatilho (o motor de automação), mas que ele chame ferramentas dedicadas para a tarefa, como o Terraform para erguer a estrutura e o Ansible para configurar os serviços internos.

2. Docker Compose em Produção: Quais as limitações?

O Docker Compose é fantástico para o desenvolvimento local, pois permite subir toda a aplicação com um único comando. Contudo, levá-lo para a produção traz riscos severos de disponibilidade e gerenciamento.

As principais limitações são:

  • Ausência de alta disponibilidade (HA): O Compose roda em apenas uma máquina física ou virtual. Se esse servidor falhar, todos os seus serviços ficam indisponíveis.
  • Falta de auto-recuperação (Self-healing): Se um container travar por falta de memória ou erro interno, o Compose não tem uma inteligência nativa avançada para reiniciar o container em outro nó saudável da rede.
  • Escalonamento manual: Ele não aumenta o número de réplicas de um serviço automaticamente com base no tráfego de usuários.
  • Atualizações com interrupção (Downtime): Atualizar uma imagem geralmente exige derrubar o container antigo para subir o novo, gerando momentos de indisponibilidade.

3. Quando o Kubernetes se torna justificável?

O Kubernetes surge justamente pra resolver as dores do Docker Compose em produção, mas ele cobra um preço alto em complexidade de aprendizado e custos de operação.

A transição para ele passa a fazer sentido quando a realidade do seu projeto atinge as seguintes características:

  • Múltiplos servidores (Cluster): Quando a sua aplicação cresce tanto que precisa rodar distribuída em várias máquinas para aguentar a carga.
  • Necessidade de zero Downtime: Quando o negócio não pode parar um segundo sequer e você precisa de estratégias como Rolling Updates (atualizar o sistema aos poucos, container por container, sem o cliente notar).
  • Arquitetura de microserviços Complexa: Quando você tem dezenas de serviços independentes que precisam se comunicar, descobrir onde os outros estão na rede (Service Discovery) e gerenciar segredos e configurações de forma centralizada.
  • Escalonamento automático baseado em demanda: Quando o tráfego varia muito (como em uma Black Friday) e o sistema precisa criar e destruir réplicas de containers sozinho de acordo com o uso de CPU ou memória.

Se a equipe for pequena e o cenário ainda não exigir tudo isso, alternativas gerenciadas na nuvem (como AWS ECS, Google Cloud Run ou Azure Container Apps) costumam ser um meio-termo fantástico antes de dar o salto para o Kubernetes.

Para enriquecer ainda mais a nossa discussão: considerando as ferramentas que você já conhece ou utiliza no seu dia a dia, qual dessas limitações do Docker Compose você acredita que seria o maior gargalo para o tipo de aplicação que a sua equipe desenvolve hoje?

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!