Sobes.tech
Middle

Quais são as desvantagens das aplicações Stateful?

sobes.tech IA

Resposta da IA

  • Complexidade de escalabilidade: Escalar torna-se uma tarefa não trivial, pois requer manter e sincronizar o estado entre as instâncias da aplicação.
  • Complexidade de implantação e gestão: Implantar e atualizar tais aplicações requer estratégias pensadas para a migração de dados e estados, para evitar perdas.
  • Maior resistência a falhas: Garantir alta disponibilidade e resistência a falhas requer mecanismos adicionais de replicação e backup de estados, o que aumenta a complexidade do sistema.
  • Dificuldades no escalonamento horizontal: Adicionar novas instâncias ao cluster requer transferir ou sincronizar dados, o que pode causar atrasos e carga no sistema.
  • Problemas com o balanceamento de carga: O balanceamento de carga eficaz é complicado pela necessidade de direcionar as requisições para a instância que possui o estado necessário.
  • Complexidade nos testes: Testar tais aplicações requer manter e restaurar o estado para reproduzir cenários.

Exemplo:

# Exemplo de implantação de StatefulSet no Kubernetes
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-stateful-app
spec:
  serviceName: "my-stateful-service"
  replicas: 3 # Difícil de escalar sem uma estratégia pensada
  selector:
    matchLabels:
      app: my-stateful-app
  template:
    metadata:
      labels:
        app: my-stateful-app
  volumeClaimTemplates: # Requer manter o estado em volumes persistentes
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

Tabela comparativa de aplicações Stateful e Stateless:

Característica Aplicações Stateful Aplicações Stateless
Estado Mantêm o estado entre solicitações/sessões Não mantêm o estado entre solicitações/sessões
Escalabilidade Complexa, requer sincronização de estados Simples, adicionar novas instâncias
Resistência a falhas Requer replicação e backup de estados Mais fácil de alcançar ao não ter dependências
Implantação Complexa, requer migração de dados/estados Simples, as instâncias são intercambiáveis
Balanceamento Complicado devido à necessidade de roteamento pelo estado Simples, qualquer solicitação pode ser atendida por qualquer nó