Pergunta

Muitas vezes me pedem para executar o planejamento de dimensionamento e capacidade para nossos clientes. Quando nossos clientes compram nossos produtos (basicamente os aplicativos da Web J2EE), eles geralmente perguntam qual hardware precisará para executar esses produtos. Nossas recomendações geralmente resultam em aquisições de hardware de alto custo.

Até agora, as melhores heurísticas que desenvolvi é comparar as projeções de utilização (número de usuários registrados e simultâneos que o aplicativo deve comparecer) com os dados coletados em nossas instalações existentes. Algo como: Se a instalação A participa de 100 usuários simultâneos com X hardware, a instalação B precisará de 2*x hardware para participar de 200 usuários simultâneos.

Essa abordagem, no entanto, tem vários problemas. Os clientes geralmente usam diferentes plataformas de hardware e software. O conjunto de produtos que eles compram de nós geralmente nunca é o mesmo e, geralmente, partes do aplicativo são construídas em ordem para um cliente específico. Coloque em consideração que as versões de software estão mudando etc. e existem muitos parâmetros que podem dificultar a tarefa de dimensionar.

Estudei alguns livros sobre o assunto e alguns propomos usando modelos matemáticos complexos. O número de parâmetros que essas abordagens exigem como entrada (por exemplo, classificação detalhada dos recursos do aplicativo) me faz pensar que isso é dificilmente útil. O hardware é geralmente solicitado antes que os requisitos básicos sejam definidos para não mencionar que eles variam ao longo do desenvolvimento de aplicativos e do ciclo de vida. Então, como você planeja e planejar de tamanho e capacidade? Quaisquer dicas e instruções apreciadas.

Foi útil?

Solução

Se o hardware deve ser encomendado antes que os REQs básicos sejam definidos, bem, o melhor que você pode fazer é lançar a capacidade, olhando para a base instalada para um conjunto semelhante de projetos (como você está fazendo agora). Acompanhe seus clientes existentes em escala e necessidades de capacidade à medida que aumentam suas instalações e, se você tiver uma base grande o suficiente, provavelmente poderá fazer um encaixe de curva aproximada agrupando projetos semelhantes com hardware semelhante e analisando as necessidades de capacidade. Observe como a capacidade dos clientes existentes precisa mudar durante o crescimento também para pontos de dados adicionais.

Idealmente, a compra inicial de HW/SW é para uma instalação piloto e você compara a configuração do piloto depois de atender e conhecer especificações. Use esses resultados para projetar as necessidades de capacidade para a mudança do piloto para a produção. Obviamente, isso requer tempo no cronograma de piloto para produção para comparar o aplicativo e depois solicitar e receber o equipamento. Mas isso fornecerá uma estimativa de capacidade mais precisa do que fazer tudo bem.

Outras dicas

Não existe uma fórmula fácil ou matemática para prever a escala na descrição que você deu, se você (ou sua empresa) leva a sério isso, a melhor maneira é criar um ambiente de teste de desempenho e escalabilidade, onde você pode facilmente configurar e derrubar vários clientes Configurações e envie a carga para ver como eles se sairão. Como você está criando componentes personalizados, um componente mal escrito ou o índice ausente pode estragar tudo; portanto, ter um ambiente como esse é onde você pode passar essas coisas antes de dar ao cliente. Depois de ter esse tipo de ambiente, você pode adicionar memória e CPU aos servidores de aplicativos e bancos de dados para ver como o seu aplicativo é escalado.

Eu sugeriria um ambiente de VM onde eles possam adicionar facilmente CPU e memória com base nas necessidades do aplicativo, juntamente com alguns testes de carga/escala externos realistas usando um serviço como WatchMouse ou BrowsMob.

Se o aplicativo escalar horizontalmente de uma maneira graciosa, uma estimativa inicial aproximada é boa como ponto de partida. Adicionar ou remover caixas adicionais conforme necessário deve ser fácil assim que o aplicativo executar na produção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top