Como a escalabilidade do software é medida?

21

Me pediram para fazer uma pequena apresentação técnica sobre escalabilidade de aplicativos específicos. O aplicativo é desenvolvido usando Java, Spring MVC, Hibernate. Eu tenho acesso ao código fonte do aplicativo.

Como posso medir a escalabilidade do software (usando fontes) e quais métricas eu preciso cuidar ao medir a escalabilidade do software?

artjom
fonte

Respostas:

8

Eu começaria lendo um artigo da Wikipedia sobre o assunto.

Em suma, escalabilidade é como o desempenho do sistema aumenta com a adição de mais recursos ou, alternativamente, como a utilização de recursos aumenta com o aumento da carga . Por exemplo, quantos usuários simultâneos o seu site pode gerenciar até que o tempo de resposta cresça além de 0,3 s? A mesma pergunta depois que você duplica a RAM / disco / CPU / etc disponível. Você provavelmente pode usar o seu conhecimento das aplicações internas para decidir quais parâmetros valem a pena verificar.

Configure uma bancada de testes com uma máquina servidor e uma ou mais máquinas clientes. Use alguma ferramenta para limitar a quantidade de recursos disponíveis para o servidor (por exemplo ulimit) ou execute algum aplicativo interferente no servidor. Avalie como o servidor lida com solicitações do cliente. Repita o procedimento acima aumentando / diminuindo gradualmente a carga interferente / recursos disponíveis. No final, você obtém espaço n-dimensional com pontos. Pode ser mais simples alterar apenas um parâmetro de cada vez, enquanto fixa todos os outros em algum valor típico (ou alguns valores). Nesse caso, você pode representar o resultado como um monte de gráficos 2D com desempenho do servidor (por exemplo, número de usuários / solicitações) em um eixo e utilização / disponibilidade de recursos no outro.

Existem cenários mais complexos em que seu aplicativo usa vários servidores para várias partes do aplicativo e você pode variar sua quantidade e proporção, mas acho que não é o seu caso. No máximo, você provavelmente pode querer variar o número de threads / processos, se isso importa.

Se você medir todo o aplicativo, normalmente não precisa de acesso ao código-fonte. No entanto, você pode ser interessante na medição de alguma parte específica do código (por exemplo, apenas DB ou UI). Em seguida, você pode usar o código-fonte para expor apenas este módulo para medições e executar seus testes. Isso é chamado de marca de microbench .

Se você está procurando exemplos, há muitos deles em artigos acadêmicos. Pesquise no google scholar por avaliação de desempenho + seus termos preferidos.

Ilia K.
fonte
1

A escalabilidade não é realmente uma propriedade quantificável para aplicativos reais.

Em termos práticos, a escalabilidade consiste em poder suportar cargas de trabalho que estão aumentando em várias dimensões.

Para começar, o aplicativo suportará as crescentes cargas de trabalho com os recursos de hardware existentes. Mas há vários pontos em que você atinge limites; por exemplo, a quantidade de memória, o número de núcleos, contenção nas estruturas de dados, taxa de transferência do banco de dados e assim por diante. Cada vez que você atinge um desses limites, é necessário adotar uma abordagem diferente para dar suporte ao aumento das cargas de trabalho. A escalabilidade é sobre quanto tempo você pode continuar aumentando a carga de trabalho antes de atingir um limite intransponível, ou precisa realizar uma grande reformulação.

Stephen C
fonte