"Mesmo que não nos próximos meses" cheira a otimização prematura. Não faça isso:
Não vale a pena. Muitas pessoas, ao realizar um projeto, acreditam que seu projeto será o segundo Facebook. Em seguida, eles o liberam e percebem que dez visitantes por mês é o melhor que podem fazer. Gastar menos dinheiro e tempo na otimização para maior escalabilidade e mais tempo pensando no projeto em si ajudaria.
É como nos gargalos e na criação de perfis: você sempre tem a impressão de saber perfeitamente onde está o gargalo e, na maioria dos casos, descobre que estava errado ao criar um perfil. Faça sua aplicação primeiro. Veja como é usado. Crie um perfil. Reúna dados de BI. Reúna métricas de desempenho. Analise isso. Verifique se sua análise estava correta. Faça as previsões sobre o futuro, com base em sua análise, e otimize para escalabilidade o que você realmente precisa otimizar.
Por exemplo, um aplicativo da Web escalável deve poder ser hospedado em vários servidores. O último projeto que fiz para o meu cliente teve como objetivo ser escalável. Havia uma opção: gastamos 1,5 meses a mais para fazer o aplicativo Web funcionar em vários servidores ou o cliente compra um servidor de alta qualidade (apenas uma máquina) e o aplicativo Web é hospedado apenas nessa máquina. Era muito mais barato comprar um servidor caro, contando o custo direto (preço do servidor versus preço de 1,5 meses de trabalho) e as economias de longo prazo (consumo de energia de um servidor de alta qualidade vs. consumo de energia de vários servidores). Agora, o aplicativo está em execução por alguns meses e, de acordo com as métricas, se houvesse um problema com a escalabilidade um dia, seria um problema em primeiro lugar o banco de dados,
Agora, um aplicativo pode ser mais ou menos escalável em vários pontos:
Banco de dados: de acordo com minha experiência pessoal, a maioria dos problemas relacionados à escalabilidade vem do banco de dados. Felizmente, existem várias maneiras de tornar o banco de dados escalável para todos os mecanismos de banco de dados de nível industrial e, mesmo antes disso, existem várias maneiras de melhorar a estrutura do banco de dados e otimizar as consultas . O cache também ajuda.
Rede: a largura de banda pode ser um problema real em algumas configurações e, às vezes, você não pode fazer nada sem fazer despesas que não pode pagar. Para evitar ser bloqueado nesse nível, você pode otimizar o design visual do site para ter menos imagens ou melhores imagens compactadas , otimizar o layout da página, reduzir as solicitações HTTP (por meio de sprites CSS ), reduzir a quantidade de HTML código enviado (por meio de AJAX ), etc. A compactação HTTP é essencial. Cache do navegador também, mas suas métricas podem mostrar que muitos clientes têm um cache vazio.
Uso de CPU e memória: transportar um aplicativo para ser hospedado por vários servidores também pode ser doloroso, tanto no nível de infraestrutura (hardware) quanto no nível de aplicativo (software). Para evitar isso, use armazenamento em cache extensivo e analise o perfil do aplicativo, removendo progressivamente os gargalos .