Upload
dinhtuyen
View
214
Download
0
Embed Size (px)
Citation preview
Testes de Escalabilidade de Serviços Web
Testes de Escalabilidade de Serviços Web
Diego de Araújo Martinez CamarinhaProf. Fabio Kon
Paulo Bittencourt Moura (Doutorando)
11 de novembro de 2013
Testes de Escalabilidade de Serviços WebIntrodução
Serviços WebO que são e por que usar?
Componentes de software distribuídosVisam a promover comunicação interoperável entre sistemasEx: Google Drive
Testes de Escalabilidade de Serviços WebIntrodução
Escalabilidade
Uma das muitas definições:Uma aplicação é escalável se atinge o mesmo desempenhoquando a capacidade da infraestrutura aumenta na mesmaproporção que o tamanho do problema[1]
Escalabilidade também leva em conta a infraestrutura onde osoftware está rodando!!
Testes de Escalabilidade de Serviços WebIntrodução
Testes de Escalabilidade
Normalmente difíceis de realizar:InfraestruturaCargaEmulação de clientes
Além disso, quais métricas escolher?
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Ferramenta para os testesScalability Explorer[2]
Arcabouço de software livre para testes de escalabilidade que:Possibilita coletar três tipos de métricas
DegradaçãoSpeedupPerformance agregada
Fornece suporte à emulação de clientes (Rehearsal[3])Consegue lidar com aumentos na carga de requisições
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
OpenStack
Sistema operacional de nuvemGerencia grandes quantidades de recursos em uma nuvemDashboard que facilita seu usoOpenStack do CCSL oferecia algumas configurações demáquinas virtuais
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Escolha do ServiçoKalibro Web Service
Motivos:Mezuro[4] - plataforma para monitoramento de código-fonteKalibro[5] - software que realiza coleta e análise de métricasde código-fonteCom o Mezuro prestes a entrar em produção, é preciso quealgumas perguntas sejam respondidas:
Como o Kalibro se comportará quando forem feitas muitasrequisições simultâneas?Quais são os seus limitantes? Se houverem, como melhorá-los?
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Escolha do ServiçoKalibro Web Service
C, C++, JAVA e pythonFaz uso de coletores auxiliares (Analizo, Checkstyle eCVSAnaly)Utiliza configurações existentes ou personalizadasFornece uma interpretação padrão para os resultados obtidos
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testes
Instalação do Scalability ExplorerEntendimento do funcionamento do arcabouçoEscrita dos testesExecução, primeiramente, no localhostDepois, preparação das máquinas virtuais no OpenStack...
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesProblemas...
Criação das máquinas virtuais manualmenteProcesso demoradoInstabilidade do OpenStackInstalação de dependências e do serviço uma máquina virtualpor vez...
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesProblemas...
Uma...
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesProblemas...
Por...
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesProblemas...
Vez...
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesSolução!
ClusterSSHControla diversos terminais através de um único consolePermite enviar comandos simultaneamente a diversosservidores através de uma conexão sshRealmente me salvou muitas horas de trabalho!
Testes de Escalabilidade de Serviços WebFerramentas utilizadas
Preparação para os testesSolução!
Bom uso do ClusterSSH.
Testes de Escalabilidade de Serviços WebEstudo de caso
Preparação para os testesConfiguração das máquinas virtuais
Tamanho no de VCPUs1 RAM HDMédio 2 4 40Grande 4 8 80XGrande 8 16 160XXGRANDE 12 24 6
1Cada VCPU era de 2.4 GHz
Testes de Escalabilidade de Serviços WebEstudo de caso
Identificação da operação mais problemáticaProcessamento de repositório de código-fonte
Kalibro possui 50 operaçõesAo todo, 150 testesDentre as operações problemáticas, escolhemos tentarmelhorar a de processamento de repositório de código-fonte
Testes de Escalabilidade de Serviços WebEstudo de caso
Primeira soluçãoBalanceamento de carga
Antes:
Requisição
Cliente
Servidor
ENDPOINTS
Depois:
Cliente
Requisição
Balanceador
Testes de Escalabilidade de Serviços WebEstudo de caso
Primeira soluçãoTeste de speedup com balanceamento de carga
Testes de Escalabilidade de Serviços WebEstudo de caso
Primeira soluçãoTeste de performance agregada com balanceamento de carga
Testes de Escalabilidade de Serviços WebEstudo de caso
Segunda soluçãoMudança na infraestrutura do Kalibro
Antes:
Requisição
Validação
Observadores
Resposta Servidor
ANALYZING
LOADING
COLLECTING
BUILDING
Depois:
Requisição
Resposta Servidor
ANALYZING
LOADING
COLLECTING
BUILDING
PREPARING
AGGREGATING
CALCULATING
Testes de Escalabilidade de Serviços WebEstudo de caso
Segunda soluçãoTeste de degradação com a infraestrutura nova
Antes: Depois:
Testes de Escalabilidade de Serviços WebEstudo de caso
Segunda soluçãoTeste de speedup com a infraestrutura nova
Antes: Depois:
Testes de Escalabilidade de Serviços WebEstudo de caso
Segunda soluçãoTeste de performance agregada com a infraestrutura nova
Antes: Depois:
Testes de Escalabilidade de Serviços WebConclusão
ConclusõesScalability Explorer
Manipulação de clientesEscrita dos testesVárias opções de parâmetroPaulo Moura
Testes de Escalabilidade de Serviços WebConclusão
ConclusõesBalanceamento de carga
Vantagens:Estabilidade do sistema em horários de picos de requisiçãoElasticidade da nuvem
Desvantagens:Infraestrutura caraMais difícil de manter
Testes de Escalabilidade de Serviços WebConclusão
ConclusõesMudança na infraestrutura
Vantagens:Feedback muito rápidoCriação de mais estados permite melhor identificação de erros
Desvantagens:O tempo total de execução piorouMais complexidade no Kalibro
Testes de Escalabilidade de Serviços WebConclusão
Conclusões
Portanto, para melhorar a escalabilidade do Kalibro:Combinar as duas soluçõesDessa forma, o feedback é rápido e, em horários de pico derequisição, é possível manter o tempo de resposta quaseinalterado
Testes de Escalabilidade de Serviços WebConclusão
Referências bibliográficas
[1] M. Quinn. Parallel Computing: Theory and Practice. McGraw-Hill, 2nd edição,1994.
[2] Moura and Kon, “Automated Scalability Testing of Software as a Service”, 8thInternational Workshop on Automation of Software Test, 2013.
[3] Besson et al., “Rehearsal: Um arcabouço para teste automatizado de coreografiasde serviços web”. Disseração de mestrado, Instituto de Matemática e Estatística,Universidade de São Paulo, 2012.
[4] Meirelles et al., “Mezuro Plataform: Source Code Tracking Network”, Sessão deFerramentas do III Congresso Brasileiro de Software: Teoria e Prática, 2012.
[5] Morais et al., “Kalibro: Interpretação de métricas de código-fonte”. Dissertação demestrado, Instituto de Matemática e Estatística, Univesidade de São Paulo, 2013.