Otimizar o desempenho de armazenamento

Concluído

É importante incluir considerações sobre o desempenho de armazenamento em sua arquitetura. Assim como a latência da rede, o baixo desempenho na camada de armazenamento pode afetar a experiência dos usuários. Como você otimizaria seu armazenamento de dados? Quais aspectos você precisa considerar para garantir que não esteja criando gargalos de armazenamento em sua arquitetura?

Nesta unidade, você aprenderá a otimizar o desempenho do armazenamento em sua arquitetura.

Otimizar o desempenho do armazenamento de máquina virtual

Primeiro, vamos ver como otimizar o armazenamento para as VMs (máquinas virtuais). O armazenamento em disco desempenha um papel fundamental para o desempenho de suas VMs. Selecionar o tipo de disco correto para o aplicativo é uma decisão importante.

Diferentes aplicativos têm diferentes requisitos de armazenamento. Seu aplicativo pode ser sensível à latência de leituras e gravações de disco ou exigir a capacidade de lidar com um grande número de operações de IOPS (entrada/saída por segundo) ou maior taxa de transferência geral do disco.

Ao criar uma carga de trabalho de IaaS (infraestrutura como serviço), que tipo de disco deve ser usado? Há seis opções:

  • Armazenamento SSD local: Cada máquina virtual tem um disco temporário com suporte do armazenamento SSD local. O tamanho desse disco varia conforme o tamanho da máquina virtual. Como esse SSD é local para a máquina virtual, o desempenho é alto. No entanto, dados podem ser perdidos durante um evento de manutenção ou uma reimplantação da VM. Esse disco só é adequado para armazenamento temporário de dados de que você não precisa permanentemente. Por exemplo, esse disco é ótimo para o arquivo de paginação ou de permuta da VM e para itens como o tempdb no SQL Server do Azure. Não há nenhum encargo por esse armazenamento. Ele está incluído no custo da VM.
  • HDD Standard: esse tipo de armazenamento é o armazenamento em disco do eixo. Ele pode se ajustar bem quando uma latência inconsistente ou níveis mais baixos de taxa de transferência não estão associando seu aplicativo. Uma carga de trabalho de desenvolvimento/teste em que desempenho garantido não é necessário é um excelente caso de uso para esse tipo de disco.
  • SSD Standard: esse armazenamento apoiado por SSD tem a baixa latência de um SSD, mas níveis mais baixos de taxa de transferência. Um servidor Web não de produção é um bom caso de uso para esse tipo de disco.
  • SSD Premium: esse armazenamento apoiado por SSD é adequado para cargas de trabalho que estão entrando em produção e exigem alta disponibilidade e baixa latência consistente com a demanda ou precisam de altos níveis de taxa de transferência e IOPS. Como esses discos têm recursos melhores de desempenho e confiabilidade, eles são recomendados para todas as cargas de trabalho de produção.
  • SSD Premium v2: oferece um desempenho superior ao dos SSDs Premium e costuma ser mais barato. Você pode ajustar individualmente o desempenho (capacidade, taxa de transferência e IOPS) dos discos SSD Premium v2 a qualquer momento, permitindo que as cargas de trabalho sejam econômicas e atendam às necessidades de desempenho em constante mudança. Por exemplo, um banco de dados com uso intensivo de transações pode precisar de uma grande quantidade de IOPS em um tamanho pequeno ou um aplicativo de jogos pode precisar de uma grande quantidade de IOPS, mas apenas durante o horário de pico. Devido a essa flexibilidade, o SSD Premium v2 pode fornecer o melhor desempenho de preço para a carga de trabalho de finalidade geral. O Premium SSD v2 não pode ser usado como discos de OS.
  • Discos Ultra: os Discos Ultra do Azure são a opção de armazenamento de melhor desempenho para VMs (máquinas virtuais) do Azure. Você pode alterar os parâmetros de desempenho de um disco ultra sem precisar reiniciar suas VMs. Os Discos Ultra são adequados para cargas de trabalho de grande volume de dados, como SAP HANA, bancos de dados de camada superior e cargas de trabalho de transações pesadas. Os Discos Ultra devem ser usados como discos de dados e só podem ser criados como discos vazios.

SSD Premium, SSD Premium v2 e Discos Ultra só podem ser anexados a tamanhos de VM específicos. Os tamanhos compatíveis com o armazenamento Premium são designados com um "s" no nome. Exemplos são D2s_v3 ou Standard_F2s_v2. Qualquer tipo de máquina virtual (com ou sem um "s" no nome) pode anexar unidades HD ou SSD de Armazenamento Standard.

Os SSDs Premium oferecem algumas maneiras de aumentar o desempenho, incluindo intermitências e alteração de nível. O SSD Premium v2 e os Discos Ultra permitem que você altere individualmente a IOPS ou a taxa de transferência da maneira desejada, aumentando a economia.

Se necessário, os discos podem ser distribuídos usando uma tecnologia de distribuição, como os Espaços de Armazenamento no Windows ou o mdadm no Linux. A distribuição aumenta a taxa de transferência e a IOPS distribuindo a atividade de disco entre vários discos. Você pode usar a distribuição de disco para ampliar os limites de desempenho para os discos. A distribuição costuma ser vista em sistemas de banco de dados de alto desempenho e em outros sistemas com requisitos de armazenamento intensivos.

Quando você depende de cargas de trabalho de máquina virtual, precisa avaliar os requisitos de desempenho do aplicativo para determinar a quantidade de armazenamento subjacente desejada para suas máquinas virtuais.

Otimizar o desempenho de armazenamento para seu aplicativo

Agora que você aprendeu como usar diferentes tipos de tecnologias de armazenamento para melhorar o desempenho bruto do disco. Vamos examinar algumas maneiras de otimizar o desempenho do acesso ao armazenamento na camada do aplicativo.

Cache

Uma abordagem comum para melhorar o desempenho do aplicativo é integrar uma camada de cache entre seu aplicativo e seu armazenamento de dados.

Um cache normalmente armazena dados na memória e permite a recuperação rápida. Esses dados podem ser acessados com frequência, dados que você especifica de um banco de dados ou dados temporários, como o estado do usuário. Você tem controle sobre os tipos de dados armazenados, a frequência com a qual eles são atualizados e quando eles expiram. Ao colocalizar esse cache na mesma região do aplicativo e do banco de dados, você reduz a latência geral entre os dois. A extração de dados do cache quase sempre é mais rápida do que recuperá-los de um banco de dados. Ao usar uma camada de cache, você pode aprimorar substancialmente o desempenho geral do seu aplicativo.

A ilustração a seguir mostra como um aplicativo recupera dados de um banco de dados, armazena-os em um cache e usa o valor armazenado em cache conforme o necessário.

An illustration showing that retrieving data from cache is faster than retrieving from a database.

O Cache do Azure para Redis é um serviço de cache no Azure que armazena dados na memória. Ele é baseado no Cache Redis de software livre e é uma oferta de serviço totalmente gerenciado da Microsoft. Selecione a camada de desempenho necessária e, em seguida, configure seu aplicativo para usar o serviço.

Intermitências

Os discos SSD Premium e SSDs Standard oferecem intermitência. Há dois modelos de intermitência para discos:

  • Um modelo de intermitência sob demanda, onde o disco é estourado sempre que suas necessidades excedem sua capacidade atual. Esse modelo incorre em encargos extras sempre que ocorre intermitência de disco. A intermitência sob demanda só está disponível para SSDs Premium com mais de 512 GiB.
  • Um modelo baseado em crédito, em que ocorrerá intermitência de disco somente se ele tiver créditos de intermitência acumulados no bucket de crédito. Esse modelo não incorre em encargos extras quando ocorre intermitência de disco. A intermitência baseada em crédito só está disponível para discos gerenciados SSDs Premium de 512 GiB e menores, e SSDs Standard de 1024 GiB e menores.

Os SSDs Premium podem usar qualquer modelo de intermitência, mas os SSDs Standard oferecem apenas a intermitência baseada em crédito no momento.

Alterar o nível de desempenho

O desempenho do disco gerenciado do Azure é definido quando você o cria, na forma do nível de desempenho do disco. Quando você define o tamanho provisionado do disco, um nível de desempenho é selecionado automaticamente. O nível de desempenho determina a IOPS e a taxa de transferência que o disco gerenciado tem. O nível de desempenho pode ser alterado na implantação ou depois, sem alterar o tamanho do disco e sem tempo de inatividade. Você só pode alterar o nível de desempenho de um SSD Premium.

Persistência poliglota

A persistência poliglota é o uso de diferentes tecnologias de armazenamento de dados para atender aos requisitos de armazenamento.

Considere o exemplo a seguir de comércio eletrônico. Suponha que você armazene:

  • Ativos de aplicativo em um repositório de blobs.
  • Revisões e recomendações de produtos em um repositório NoSQL.
  • Dados de perfil de usuário ou conta em um banco de dados SQL.

A ilustração a seguir mostra como um aplicativo pode usar várias técnicas de armazenamento de dados para armazenar diferentes tipos de dados.

An illustration showing usage of different data storage methods within the same application to increase performance and reduce cost.

É importante saber que diferentes armazenamentos de dados são projetados para determinados casos de uso ou podem ser mais acessíveis devido ao custo. Por exemplo, armazenar blobs em um banco de dados SQL pode ser caro e mais lento para acessar do que diretamente de um repositório de blobs.

Manter a consistência de dados entre armazenamentos de dados distribuídos pode ser um desafio significativo. Estratégias como serialização e bloqueio só funcionam bem se todas as instâncias de aplicativo compartilharem o mesmo armazenamento de dados e o aplicativo garantir que os bloqueios sejam de curta duração. Mas se os dados forem particionados ou replicados em diferentes armazenamentos de dados, bloquear e serializar o acesso a dados para manter a consistência poderá se tornar uma sobrecarga cara. Uma que afeta a taxa de transferência, o tempo de resposta e a escalabilidade de um sistema. Como resultado, a maioria dos aplicativos distribuídos modernos não bloqueia os dados que modificam. Eles adotam uma abordagem mais flexível à consistência, que é conhecida como consistência eventual.

Consistência eventual significa que os armazenamentos de dados de réplica acabam sendo convergidos quando não há mais nenhuma gravação. Se uma gravação for feita em um dos armazenamentos de dados, uma leitura de outro armazenamento de dados poderá fornecer dados ligeiramente desatualizados. A consistência eventual habilita uma escala maior porque há uma baixa latência para leituras e gravações, em vez de precisar esperar para verificar se as informações são consistentes em todos os repositórios.

Verificar seu conhecimento

1.

O que é a persistência poliglota?

2.

Verdadeiro ou falso: o Cache do Azure para Redis aprimora o desempenho de seu aplicativo, armazenando um instantâneo dos dados na memória.