REL05-BP06 Criar serviços sem estado sempre que possível - AWS Well-Architected Framework

REL05-BP06 Criar serviços sem estado sempre que possível

Os serviços não devem exigir estado ou devem descarregar o estado de modo que não haja dependência entre solicitações de clientes diferentes em relação aos dados armazenados localmente no disco ou na memória. Isso permite que os servidores sejam substituídos quando necessário sem causar impacto na disponibilidade. O Amazon ElastiCache ou o Amazon DynamoDB são bons destinos para o estado descarregado.

Nesta aplicação Web sem estado, o estado da sessão é descarregado para o Amazon ElastiCache.

Figura 7: Nesta aplicação Web sem estado, o estado da sessão é descarregado para o Amazon ElastiCache.

Quando os usuários ou serviços interagem com um aplicativo, eles geralmente executam uma série de interações que formam uma sessão. Uma sessão são dados exclusivos para usuários que persistem entre solicitações enquanto usam o aplicativo. Um aplicativo sem estado é um aplicativo que não precisa de conhecimento de interações anteriores e não armazena informações da sessão.

Depois de projetados para serem sem estado, você pode usar serviços de computação com tecnologia sem servidor, como o AWS Lambda ou o AWS Fargate.

Além da substituição do servidor, outro benefício dos aplicativos sem estado é que eles podem escalar horizontalmente, pois qualquer um dos recursos de computação disponíveis (como instâncias do EC2 e funções do AWS Lambda) pode atender a qualquer solicitação.

Nível de exposição a riscos quando esta prática recomendada não for estabelecida: Médio

Orientações para a implementação

  • Crie aplicações sem estado. Os aplicativos sem estado permitem a escalabilidade horizontal e são tolerantes a falhas de um nó individual.

    • Remova o estado que realmente pode ser armazenado nos parâmetros de solicitação.

    • Depois de examinar se o estado é necessário, mova qualquer rastreamento de estado para um armazenamento em cache resiliente multizona ou armazenamento de dados, como o Amazon ElastiCache, o Amazon RDS, Amazon DynamoDB ou uma solução de dados distribuídos de terceiros. Armazene os estados que não puderam ser movidos para armazenamentos de dados resilientes.

      • Alguns dados (como cookies) podem ser inseridos em cabeçalhos ou parâmetros de consulta.

      • Faça a refatoração para remover o estado que pode ser inserido rapidamente nas solicitações.

      • Alguns dados talvez não sejam realmente necessários por solicitação e podem ser recuperados sob demanda.

      • Remova os dados que podem ser recuperados de forma assíncrona.

      • Escolha um armazenamento de dados que atenda aos requisitos de um estado necessário.

      • Considere um banco de dados NoSQL para dados não relacionais.

Recursos

Documentos relacionados: