Performance e otimização para armazenamento de dados de apps da Web voltados para conteúdo

Melhorar o desempenho do armazenamento de dados para um aplicativo da Web orientado a conteúdo é um processo iterativo. É importante considerar a capacidade potencial e o volume de dados que o aplicativo precisa oferecer, em conjunto com a estrutura de banco de dados e as tecnologias de armazenamento de dados. Essas são considerações importantes que também precisam ser feitas durante a fase inicial de design.

Técnicas como escalonamento multidimensional e armazenamento em cache podem ajudar seu aplicativo a crescer ainda mais para oferecer suporte a mais usuários e dados.

Capacidade de processamento de dados

A capacidade de processamento de dados se refere à taxa em que os dados são processados entre dispositivos, sistemas ou componentes em um ambiente de computação. Mede a capacidade de um sistema de processar dados dentro de um período específico. A capacidade é expressa em unidades de dados por unidade de tempo, como bytes por segundo (B/s), megabits por segundo (Mbps) ou transações por segundo (TPS).

A capacidade de processamento de dados se refere aos dados que o banco de dados pode processar em um determinado período. Isso é importante para aplicativos da Web orientados por conteúdo, porque eles geralmente precisam processar grandes quantidades de dados em tempo real.

Os fatores que podem afetar a capacidade de processamento de dados incluem:

  • O tipo de banco de dados. Alguns bancos de dados são mais eficientes no processamento de dados do que outros.
  • A configuração do hardware. O servidor de banco de dados precisa ter CPU, memória e armazenamento suficientes para processar a carga.
  • A complexidade da consulta Consultas complexas podem levar mais tempo para serem processadas do que consultas básicas.

Em relação ao escalonamento, a capacidade é uma métrica essencial que mede a capacidade e a eficiência do seu aplicativo da Web orientado por conteúdo para lidar com solicitações e processar dados. A alta capacidade é essencial para gerenciar o aumento do tráfego e manter o desempenho responsivo.

Veja abaixo as considerações relacionadas à capacidade de processamento ao escalonar um aplicativo da Web:

considerações
balanceamento de carga O balanceador de carga distribui uniformemente o tráfego entre as instâncias do servidor do aplicativo. Isso garante que nenhum servidor único se torne um gargalo e que você aproveite a capacidade de processamento combinada de vários servidores.
Escalonamento horizontal O escalonamento horizontal pode ser usado para aumentar a capacidade. Isso envolve a adição de mais instâncias de servidor à infraestrutura do seu aplicativo. O escalonamento horizontal permite que seu aplicativo distribua solicitações entre vários servidores, aumentando a capacidade.
Escalonamento de bancos de dados Se aplicável, use técnicas de escalonamento de banco de dados para lidar com o aumento das operações de leitura e gravação. Essas técnicas podem incluir o uso de um banco de dados distribuído ou a otimização de consultas e indexação de bancos de dados.
Escalonamento automático de banco de dados Os mecanismos de escalonamento automático podem adicionar ou remover instâncias de servidor com base em padrões de tráfego em tempo real. As plataformas em nuvem geralmente fornecem recursos de escalonamento automático para ajustar os recursos à demanda. Considere quais recursos de escalonamento estão disponíveis para seu banco de dados e plataforma. Por exemplo, um serviço como o Autoescalador para Spanner.
Otimização de código/algoritmo Revise e otimize consistentemente o código e os algoritmos do seu aplicativo para aumentar a eficiência. Minimizar o consumo de recursos do servidor pode aumentar a capacidade.
Regional/global O armazenamento de dados regional e global refere-se às diferentes maneiras como os dados são armazenados e gerenciados em diferentes localizações geográficas. O armazenamento de dados regional envolve o armazenamento de dados localmente em uma região ou local específico, enquanto o armazenamento de dados global envolve o armazenamento de dados em servidores localizados em diferentes partes do mundo. A escolha entre o armazenamento de dados regional e global depende de fatores como o tamanho dos dados, o nível de segurança necessário e a acessibilidade dos dados para diferentes usuários ou aplicativos.
Distribuição A distribuição do armazenamento de dados envolve a distribuição de dados em vários locais físicos ou virtuais para garantir disponibilidade, desempenho e segurança. Os métodos incluem sistemas de armazenamento distribuídos e soluções em nuvem, escolhidos com base em fatores como tamanho e complexidade dos dados, necessidades organizacionais e tecnologia disponível. Uma estratégia bem planejada pode oferecer redundância, escalonabilidade e outros benefícios.

Alcançar uma capacidade alta envolve a otimização de vários aspectos de um sistema, desde hardware e software até infraestrutura de rede e algoritmos de processamento de dados. As técnicas e otimizações específicas necessárias para seu aplicativo da Web orientado por conteúdo dependem das suas necessidades individuais relacionadas às tarefas de processamento de dados e às possíveis restrições do sistema.

volume de dados;

O escalonamento de um aplicativo da Web em termos da quantidade de dados armazenados envolve gerenciar e expandir a capacidade de armazenamento de dados para acomodar volumes crescentes de dados. Ao escalonar, você precisa planejar uma infraestrutura de armazenamento capaz de lidar com quaisquer desafios de crescimento de dados.

As considerações para o armazenamento de dados ao escalonar um aplicativo da Web incluem:

considerações
Tipos de dados armazenados Alguns tipos de dados, como imagens, vídeos ou dados binários, podem ser mais difíceis de armazenar ou ocupar mais espaço do que outros. Tipos ou estruturas de dados complexos também podem complicar o escalonamento de um sistema. Considere o tipo de dados que seu aplicativo armazena e se ele é a escolha ideal. Outra opção é usar sistemas de armazenamento criados especificamente para seu caso de uso ou dados, como armazenamento de blobs, sistemas de armazenamento de mídia ou bancos de dados de séries temporais.
Número de usuários Considere o crescimento futuro do seu aplicativo. Conforme você integra mais usuários, mais dados precisam ser armazenados, acessados e processados no sistema. O escalonamento de leituras e gravações com base no perfil de desempenho do seu aplicativo pode ajudar a otimizá-lo ainda mais à medida que as demandas aumentam.
Escolha de tecnologia de armazenamento de dados Avalie suas necessidades realistas de armazenamento de dados e escolha a tecnologia de armazenamento de dados mais apropriada, como NoSQL e SQL. Ao fazer sua escolha, considere a estrutura de dados, os padrões de acesso e os requisitos de escalonabilidade.
Particionamento de dados Implementar estratégias de particionamento ou fragmentação de dados para distribuir dados em vários nós de armazenamento permite distribuir a carga de dados e, portanto, escalonar com mais eficiência. É possível particionar por usuário, localização geográfica ou seguir outros critérios com base nos padrões de acesso a dados do seu aplicativo.
Armazenamento em cache e compactação de dados Usar estratégias de armazenamento em cache para armazenar dados acessados com frequência na memória e reduzir a carga nos sistemas de armazenamento. As técnicas de compactação de dados também podem minimizar os requisitos de armazenamento e melhorar a eficiência da transferência de dados.
Gerenciamento do ciclo de vida dos dados Implemente políticas de ciclo de vida dos dados para gerenciar a retenção, o arquivamento e a exclusão de dados.
Indexação de bancos de dados Se aplicável, otimize a indexação de bancos de dados, o desempenho da consulta e o design do esquema do banco de dados para lidar com o crescimento eficiente dos conjuntos de dados.

O armazenamento de dados durante o escalonamento de um aplicativo da Web é um processo contínuo e precisa alinhar-se às necessidades do seu aplicativo da Web. Avalie regularmente os requisitos de armazenamento, monitore o desempenho e ajuste a infraestrutura e as estratégias de armazenamento conforme necessário para garantir que possa lidar com o aumento das quantidades de dados de maneira eficaz e eficiente.

Armazenar em cache dados acessados com frequência

O armazenamento em cache de dados é um componente essencial da sua estratégia de escalonamento. Ele ajuda a melhorar os tempos de resposta, reduz a carga nos sistemas de back-end e melhora a experiência geral do usuário. O armazenamento em cache refere-se ao armazenamento de dados acessados com frequência em uma camada de armazenamento temporária para que possam ser recuperados rapidamente sem gerar repetidamente os dados da origem.

Considere o tipo de dados que seu aplicativo acessa com frequência, o padrão e a frequência com que os dados são recuperados, além do tamanho deles.

Confira alguns exemplos de estratégias de armazenamento em cache ao escalonar um aplicativo da Web:

Estratégias
Armazenamento em cache de objetos O armazenamento em cache de objetos se refere ao armazenamento em cache de objetos individuais, como resultados de consultas de banco de dados, respostas de APIs ou fragmentos HTML. As opções conhecidas incluem Redis, Memcached e Varnish.
Armazenamento de páginas em cache O armazenamento em cache de páginas envolve o armazenamento em cache de páginas da Web inteiras. Essa opção é adequada para conteúdo estático e pode ser implementada usando proxies reversos, geradores de sites estáticos ou CDNs.
Banco de dados e armazenamento em cache de consultas O armazenamento em cache de banco de dados e consultas refere-se ao armazenamento em cache dos resultados de consultas de banco de dados executadas com frequência para reduzir a carga no servidor.
Armazenamento em cache de página inteira O armazenamento em cache de página inteira pode ser usado para conteúdo dinâmico. Isso se refere ao armazenamento em cache de páginas HTML renderizadas inteiras para minimizar a carga no servidor e no banco de dados.
Armazenamento em cache do lado do cliente O armazenamento em cache do lado do cliente se refere a mecanismos como o armazenamento em cache do navegador para armazenar recursos localmente nos dispositivos dos usuários. É possível especificar cabeçalhos de controle de cache para controlar o tempo em que os recursos são armazenados em cache nos navegadores.

O armazenamento em cache é um componente importante de uma estratégia de otimização de desempenho mais ampla para garantir que seu aplicativo possa lidar com o aumento do tráfego de usuários e das demandas de dados de maneira eficaz e eficiente.

Escalonar leituras e gravações

Considere os requisitos de capacidade e volume de dados, bem como possíveis otimizações de armazenamento em cache, para identificar como o armazenamento de dados do aplicativo pode ser ainda mais escalonado. Ao selecionar um sistema de armazenamento de dados, é importante considerar o impacto das leituras e gravações. Uma maneira de pensar nisso é considerar o tipo de operações com suporte do aplicativo e otimizar o armazenamento de dados para esses casos de uso e padrões de uso. Por exemplo, algumas operações podem se beneficiar do escalonamento assimétrico ou simétrico.

Escalonamento assimétrico

Em alguns casos, aplicativos da Web orientados por conteúdo podem ter assimetria de leitura ou gravação. Isso significa que pode haver um volume significativamente maior de leituras ou gravações do que o outro tipo de operação. Nesses casos, é importante escalonar o banco de dados adequadamente. Considere seu aplicativo e como os dados são acessados e gravados.

Os fatores que podem afetar a assimetria de leitura ou gravação incluem:

  • O tipo de aplicativo. Alguns aplicativos exigem mais leitura do que outros.
  • O comportamento do usuário. A maneira como os usuários interagem com o aplicativo também pode afetar a assimetria de leitura ou gravação.

Escalonamento simétrico

O escalonamento simétrico significa que as operações de leitura e gravação podem ser escalonadas linearmente sem gargalos à medida que o aplicativo cresce. O escalonamento simétrico para operações de leitura e gravação em um aplicativo da Web orientado por conteúdo pode ser difícil, especialmente ao gerenciar grandes volumes de dados e alto tráfego de usuários.

As estratégias para alcançar o escalonamento simétrico incluem:

Estratégias
Bancos de dados distribuídos Bancos de dados como o Google Cloud Bigtable são criados para distribuir dados por vários nós e fornecer escalonabilidade para operações de leitura e gravação.
Particionamento de dados O particionamento de dados garante que os dados sejam distribuídos de maneira uniforme e que cada partição ou fragmento possa lidar com as operações de leitura e gravação de maneira independente.
Camadas de cache Implemente camadas de armazenamento em cache para cargas de trabalho prontas. Armazene em cache dados acessados com frequência para reduzir a carga no banco de dados para operações de leitura.
Processamento assíncrono É possível descarregar operações de gravação demoradas ou não urgentes para processos ou filas em segundo plano usando o processamento assíncrono. O aplicativo continua a processar leituras sem esperar que as gravações sejam concluídas.

O escalonamento simétrico exige uma abordagem abrangente para toda a pilha de aplicativos, do front-end ao back-end e do banco de dados às camadas de armazenamento em cache. O escalonamento simétrico contribui para a consistência do desempenho, a utilização equilibrada de recursos, a alta disponibilidade e a escalonabilidade em todas as dimensões. Não se esqueça de ajustar sua estratégia de escalonamento conforme necessário e estar preparado para lidar com gargalos à medida que eles surgirem.