Blog do SMContent

Performance, escalabilidade e o cache do ASP.Net

 

No ambiente computacional, performance é uma medida da eficiência com que um sistema realiza uma tarefa. Quanto mais rápido e quanto menos recursos o sistema consumir, mais performático ele é considerado.

Escalabilidade é a capacidade de um sistema lidar com o crescimento no volume de tarefas solicitadas num certo intervalo de tempo. Digamos que um determinado sistema atenda simultaneamente 10 usuários de forma satisfatória. Quanto melhor a escalabilidade do sistema, mais fácil será atender a 100, 1000 ou mais usuários concorrentes.

Como você pode deduzir, performance e escalabilidade são conceitos relacionados. Quanto mais performático for um sistema, quanto mais rápido ele concluir uma tarefa, melhor será sua escalabilidade.

O SMContent foi projetado desde o princípio com ênfase nesses conceitos. Entretanto, existe um limite de otimização que pode ser alcançado em termos de performance de sistema. E quando chegamos a um certo patamar de acesso concorrente, é preciso se trabalhar na infra-estrutura para que ela possa atender satisfatoriamente aquele volume de acesso.

Existem alguns pontos cruciais na infra-estrutura que podem fazer uma grande diferença na escalabilidade de um portal. Em se tratando da plataforma ASP.Net, um ponto extremamente importante é o uso de cache. É preciso aqui fazer a diferenciação entre o cache do browser e o cache da plataforma ASP.Net, que funciona do lado servidor.

- Cache do browser: É feito pelo navegador. Utilizando alguns campos nos cabeçalhos da requisição e da resposta http, o navegador pode optar por não baixar um arquivo novamente caso já possua esse arquivo em cache. Isso funciona muito bem para imagens, arquivos css e javascript, e alguns outros tipos de arquivo. Geralmente não é utilizado para páginas dinâmicas pois uma mesma página pode apresentar conteúdo diferente após um certo intervalo de tempo. Apesar desse nível de cache influenciar significativamente na "performance aparente" (impressão do visitante) do portal, ele não tem grandes efeitos em termos de consumo de CPU no servidor.

- Cache do ASP.Net: É um recurso da plataforma ASP.Net que, quando devidamente configurado, permite uma melhoria expressiva na escalabilidade de um portal. Como sabemos, uma página dinâmica realiza diversas operações e quase sempre acessa uma base de dados para poder gerar seu conteúdo. O problema é que todas essas operações são realizadas a cada visita à página. Ou seja, se num intervalo de 10 segundos houver 100 visitantes, todas as operações da página dinâmica serão realizadas a cada visita, 100 vezes portanto. A execução dessas operações é bastante custosa, principalmente o acesso ao banco de dados.

Quando o cache é configurado, tais operações são realizadas apenas uma vez num certo intervalo de tempo. No exemplo anterior, a primeira visita iria armazenar no cache o conteúdo gerado após o acesso ao banco de dados e todo processamento da página. As visitas seguintes seriam atendidas diretamente a partir do cache, o que é extremamente mais rápido do que realizar todas as operações novamente. O resultado final é uma redução significativa no consumo de CPU, redução do tráfego servidor web <=> banco de dados, e um consequente aumento na escalabilidade do portal.

O ponto chave na implantação do cache do ASP.Net é justamente definir o período pelo qual as páginas devem ser mantidas no cache. Se esse período for muito curto, os resultados não serão muito positivos. Se for muito longo, pode fazer com que um visitante veja uma página desatualizada. Para definir essa duração de forma adequada é necessário saber a frequência de atualização e de visitação da página.

O objetivo desse post foi dar uma visão geral dos conceitos de performance e escalabilidade, e de como a plataforma ASP.Net ajuda a atender melhor um crescimento no volume de visitação de um portal. Futuramente abordaremos outros temas relacionados a performance e escalabilidade. Até lá!

 

 

Comentários:

 

 

Deixe seu comentário:

Nome

E-mail

Website

Comentário

Digite o código mostrado acima: