Em Kubernetes, a tecnologia que suporta as estratégias Recreate e Rolling Update é o Deployment. Ambas as estratégias definem como as atualizações das aplicações são gerenciadas durante um processo de deploy.
Saber como funcionam as estratégias de deploy no Kubernetes demonstra o nível de profundidade que você tem nessa tecnologia. Para as empresas, entender e aplicar essas estratégias de forma adequada é crucial, especialmente em um cenário com diversas tecnologias e tipos de aplicações diferentes. Em algum momento, você pode trabalhar em empresas que utilizam soluções como OpenShift (baseada em Kubernetes) ou até outras plataformas, e precisará decidir qual estratégia é mais adequada para as necessidades específicas das aplicações que estará gerenciando. Conhecer essas estratégias e aplicá-las corretamente pode fazer toda a diferença na eficiência e disponibilidade dos sistemas.
Recreate
Na estratégia Recreate, o Kubernetes encerra todas as réplicas da versão antiga do Pod antes de iniciar as novas réplicas. Durante o processo, há um downtime, pois os Pods antigos são removidos antes que os novos estejam prontos.
• Quando usar?
• Quando o sistema não suporta múltiplas versões rodando simultaneamente (como bancos de dados ou serviços com estados críticos).
• Quando você prefere garantir que nenhuma versão antiga permaneça ativa para evitar conflitos.
• Em ambientes de desenvolvimento ou homologação onde um downtime temporário é aceitável.
• Exemplo de configuração no Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: Recreate
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0
Rolling Update
A estratégia Rolling Update atualiza gradualmente os Pods para a nova versão. Durante a atualização, o Kubernetes cria novas réplicas e remove as antigas de forma controlada, garantindo que haja zero downtime, desde que as configurações de readiness probes e recursos estejam corretas.
• Quando usar?
• Para aplicações stateless ou que suportam múltiplas versões rodando ao mesmo tempo.
• Quando o sistema requer alta disponibilidade e não pode ter interrupção no serviço.
• Para serviços web, APIs ou microserviços.
• Exemplo de configuração no Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.1
Escolhendo a estratégia certa
• Use Recreate se:
• Sua aplicação não suporta múltiplas versões coexistindo (ex.: mudanças em esquemas de banco de dados).
• Downtime planejado é aceitável para evitar inconsistências.
• Use Rolling Update se:
• Você precisa de alta disponibilidade e a aplicação permite versões simultâneas.
• Deseja um processo de atualização seguro e sem interrupções visíveis para os usuários.
Considerações finais
A escolha da estratégia depende diretamente da natureza da aplicação e dos requisitos do negócio. Para aplicações modernas, que são geralmente stateless e baseadas em microserviços, Rolling Update é a estratégia mais comum. Porém, em casos críticos, como mudanças estruturais em sistemas stateful, a estratégia Recreate pode ser necessária para garantir integridade.