Support a escalabilidade dinâmica para estática. NETAplicativos de estrutura - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Support a escalabilidade dinâmica para estática. NETAplicativos de estrutura

Visão geral

Um dos principais benefícios de usar a nuvem para aplicativos é a elasticidade, ou seja, a capacidade de ampliar ou reduzir a computação com base na demanda. Isso permite que você pague apenas pela capacidade computacional de que precisa, em vez de provisionar para uso máximo. A Cyber Monday, na qual os varejistas on-line podem obter rapidamente muitas vezes mais tráfego do que o normal (por exemplo, milhares de por cento em minutos), é um bom exemplo de elasticidade.

Se você está trazendo um legado. NETaplicativos da web para a nuvem (por exemplo,ASP. NETAplicativos de estrutura em execução emIIS), a capacidade de escalar rapidamente fazendas de servidores com balanceamento de carga pode ser difícil ou impossível devido à natureza estável do aplicativo. Os dados da sessão do usuário são armazenados na memória do aplicativo, geralmente com ASP. NETestado da sessão ou variáveis estáticas que contêm dados de solicitações cruzadas que devem ser persistidos. A afinidade da sessão do usuário geralmente é mantida por meio de sessões fixas do balanceador de carga.

Isso prova ser um desafio operacional. Quando é necessário aumentar a capacidade, você deve provisionar e adicionar servidores intencionalmente. Isso pode ser um processo lento. Tirar os nós de serviço em caso de aplicação de patches ou falhas inesperadas pode ser problemático para a experiência do usuário final, perdendo o estado de todos os usuários associados aos nós afetados. Na melhor das hipóteses, isso exigiria que os usuários fizessem login novamente.

Ao centralizar o estado da sessão paraASP. NETaplicativos e aplicação de regras de escalonamento automático ao legado. ASP NETaplicativos, você pode aproveitar a elasticidade da nuvem e, potencialmente, aproveitar a economia de custos ao executar aplicativos. Por exemplo, você obtém reduções de custo por meio da escalabilidade computacional, mas também pode escolher entre os diferentes modelos de preços disponíveis, como reduzir o uso de instâncias reservadas e usar os preços da Amazon Spot Instance.

Duas técnicas comuns incluem o uso do Amazon DynamoDB como provedor de estado da sessão e o uso do ElastiCache Amazon (OSSRedis) como um. ASP NETarmazenamento de sessões.

O diagrama a seguir mostra uma arquitetura que usa o DynamoDB como provedor de estado de sessão.

DynamoDB como provedor de estado de sessão

O diagrama a seguir mostra uma arquitetura que usa ElastiCache (RedisOSS) como provedor de estado de sessão.

ElastiCache (RedisOSS) como provedor de estado de sessão

Impacto nos custos

Para determinar os benefícios do dimensionamento para um aplicativo de produção, recomendamos que você modele sua demanda real. Esta seção faz as seguintes suposições para modelar um aplicativo de amostra:

  • As instâncias adicionadas e removidas da rotação são idênticas e nenhuma variação no tamanho da instância é introduzida.

  • A utilização do servidor nunca cai abaixo de dois servidores ativos para manter a alta disponibilidade do aplicativo.

  • A quantidade de servidores é dimensionada linearmente com o tráfego (ou seja, o dobro do tráfego exigirá o dobro da computação).

  • O tráfego é modelado ao longo de um mês em incrementos de seis horas, com variação intradiária e um pico anormal de tráfego (por exemplo, uma venda promocional) em um dia de tráfego 10 vezes maior. O tráfego de fim de semana é modelado com base na utilização básica.

  • O tráfego noturno é modelado com base na utilização básica, enquanto o tráfego durante a semana é modelado com uma utilização 4x.

  • Os preços da Instância Reservada usam preços de um ano, sem adiantamento. O preço diurno normal usa preços sob demanda, enquanto o burst demand usa o preço de instância spot.

O diagrama a seguir ilustra como esse modelo tira proveito da elasticidade em um. NETaplicativo em vez de provisionamento para uso máximo. Isso resulta em uma economia de aproximadamente 68 por cento.

Gráfico dos custos do Auto Scaling

Se você usa o DynamoDB como um mecanismo de armazenamento do estado da sessão, use os seguintes parâmetros:

Storage: 20GB Session Reads: 40 million Session Writes: 20 million Pricing Model: On demand

O custo mensal estimado desse serviço é de aproximadamente $35,00 por mês.

Se você usar ElastiCache (RedisOSS) como um mecanismo de armazenamento do estado da sessão, use os seguintes parâmetros:

Number of Nodes: 3 Node size: cache.t4g.medium Pricing Model: 1y reserved

O custo mensal estimado desse serviço é de aproximadamente $91,00 por mês.

Recomendações de otimização de custos

A primeira etapa é implementar o estado da sessão em um legado. NETaplicativo. Se você estiver usando ElastiCache como seu mecanismo de armazenamento de estado, siga as orientações de O que é AWS SDK for .NET na AWS SDK for .NET documentação. Se você estiver usando o DynamoDB, siga as orientações ElastiCache de como. ASP NETArmazenamento de sessões no blog de ferramentas para AWS desenvolvedores.

Se o aplicativo usar a InProcsessão para começar, certifique-se de que todos os objetos que você planeja armazenar na sessão possam ser serializados. Para fazer isso, use o SerializableAttribute atributo para decorar classes cujas instâncias serão armazenadas na sessão. Por exemplo:

[Serializable()] public class TestSimpleObject { public string SessionProperty {get;set;} }

Além disso, a. NETMachineKeydeve ser o mesmo entre todos os servidores em uso. Normalmente, esse é o caso quando as instâncias são criadas a partir de uma Amazon Machine Image comum (AMI). Por exemplo:

<machineKey validationKey="some long hashed value" decryptionKey="another long hashed value" validation="SHA1"/>

No entanto, é importante garantir que, se uma imagem base for alterada, ela seja configurada com a mesma. NETimagem da máquina (configurável no nível do servidor IIS ou no nível do servidor). Para obter mais informações, consulte SystemWebSectionGroup. MachineKey Propriedade na documentação da Microsoft.

Finalmente, você deve determinar o mecanismo para adicionar servidores a um grupo de Auto Scaling em resposta a um evento de escalabilidade. Há várias maneiras de fazer isso. Recomendamos que os métodos a seguir sejam implantados sem problemas. NETAplicativos de estrutura para uma EC2 instância em um grupo de Auto Scaling:

Recursos adicionais