35
Testes de Escalabilidade de Serviços Web Testes de Escalabilidade de Serviços Web Diego de Araújo Martinez Camarinha Prof. Fabio Kon Paulo Bittencourt Moura (Doutorando) 11 de novembro de 2013

Testes de Escalabilidade de Serviços Web - bcc.ime.usp.brbcc.ime.usp.br/tccs/2013/diego/images/presentation.pdf · Diego de Araújo Martinez Camarinha Prof. Fabio Kon Paulo Bittencourt

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

Porém...

E a infraestrutura???

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

Teste de degradação

Testes de Escalabilidade de Serviços WebEstudo de caso

Teste de speedup

Testes de Escalabilidade de Serviços WebEstudo de caso

Teste de performance agregada

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

Agradecimentos

Testes de Escalabilidade de Serviços WebConclusão

Perguntas?

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.