Análise de desempenho entre serviços web SOAP e RESTful

Transcrição

Análise de desempenho entre serviços web SOAP e RESTful
ISSN 2316-2872
T.I.S. São Carlos, v. 4, n. 1, p. 51-58, jan-abr 2015
©Tecnologias, Infraestrutura e Software
Análise de desempenho entre serviços web SOAP
e RESTful utilizando a ferramenta Apache jMeter
Leandro Peres Gonçalves, Reinaldo de Oliveira Castro
Resumo: Este artigo apresenta uma análise de desempenho entre web services, mais especificamente comparando as implementações SOAP e
RESTful nos quesitos: tempo médio de resposta de requisição, tempo mínimo de resposta por requisição, tempo máximo de resposta por
requisição, menor desvio padrão por requisição e volume de transferência de dados por segundo para processar requisições. Os resultados
deste trabalho estão direcionados para a análise de desempenho entre serviços web, mais especificamente entre os serviços SOAP e RESTful,
utilizando a ferramenta Apache jMeter.
Palavras Chave: web services, SOAP, RESTful
Analyzing performance between SOAP and RESTful web services using Apache jMeter tool
Abstract: This paper presents a performance analysis of web services, specifically comparing SOAP and RESTful implementations in the
following categories: request average response time, minimum response time per request, maximum response time per request, lower standard
deviation per request and data transfer volume per second to process requests. The results of this work point to the performance analysis
among web services, specifically between SOAP and RESTful services using the Apache jMeter tool. .
Keywords: Web services, SOAP, RESTful
1. INTRODUÇÃO
Com a popularização da internet e a necessidade de
integração entre sistemas de informação, tornou-se necessário
a centralização de informações para serem acessados por
diferentes aplicações. Para esse propósito, foi criada a
tecnologia de web services.
De acordo com W3C (2004), a definição de web services é
descrita da seguinte forma:
Um web service é um sistema de software
desenvolvido para permitir interações máquina-máquina
através de uma rede. É uma interface descrita para ser
consumida por máquinas (WSDL). Outros sistemas
interagem com o Web Service através de mensagens
SOAP, geralmente enviadas através de HTTP em
conjunto com outros padrões relacionados à web.
Os web services permitem que sistemas desenvolvidos em
diferentes linguagens, sendo executados em diferentes
plataformas de hardware, transmitam e recebam informações
entre si, permitindo uma interação de forma distribuída.
Em meados dos anos 2000, a W3C (World Wide Web
Consortium) aceitou a submissão do Simple Object Access
Protocol (SOAP). Este formato de mensagem baseado em
XML estabeleceu uma estrutura de transmissão para
comunicação entre aplicações (ou entre serviços web) via
HTTP. Sendo uma tecnologia independente de fornecedor, o
protocolo SOAP disponibilizou uma alternativa atrativa em
relação aos protocolos proprietários tradicionais da época, tais
como CORBA e DCOM. (THOMAS, 2007). O SOAP
(Simple Object Access Protocol ou Protocolo Simples de
Acesso a Objetos) é um protocolo de comunicação baseado
em XML que possibilita a comunicação de mensagens entre
aplicações por meio de HTTP (Hypertext Transfer Protocol),
e que é normalmente utilizado em web services
(W3SCHOOLS, 2014).
Nos últimos anos, uma nova categoria de serviços web,
denominados serviços web RESTful vem ganhando espaço e
sendo aplicada em empresas de desenvolvimento de software
que necessitam realizar as comunicações entre sistemas
heterogêneos. Os serviços web RESTful são serviços que se
apoiam no estilo arquitetural REST (Representational State
Transfer) e que usam os recursos disponíveis no protocolo
HTTP (FIELDING, 2000).
Serviços web RESTful manipulam recursos que são
qualquer item de informação que pode ser obtido por meio de
um URI (Universal Resource Identifier). Os recursos são
manipulados via transferências de representações entre
clientes e servidores utilizando a interface do protocolo
HTTP. A interface é composta, principalmente, pelos verbos
POST, GET, PUT e DELETE. POST cria um novo recurso;
GET recupera o estado corrente de um recurso em qualquer
representação; PUT modifica o estado de um recurso já
existente; DELETE exclui um recurso (WEBBER,
PARASTATIDIS e ROBINSON, 2010).
Nesse contexto, o objetivo deste trabalho é realizar uma
Departamento de Computação - Universidade Federal de São Carlos (UFSCar)
Caixa Postal 676 – 13.565-905 – São Carlos – SP – Brasil
Autor para correspondência: [email protected], [email protected]
Leandro Peres Gonçalves, Reinaldo de Oliveira Castro
análise de performance entre esses dois protocolos, por meio
da ferramenta jMeter. Com os resultados alcançados pelo
presente trabalho, é possível que profissionais da área de
engenharia de software tomem decisões na escolha da
tecnologia de web service, considerando o contexto do
projeto em que atua ou vai atuar.
O artigo está organizado da seguinte forma: a seção 2
apresenta a ferramenta de teste utilizada; na seção 3, é
apresentado o estudo de caso utilizado para o
desenvolvimento do trabalho; na seção 4, são apresentados os
resultados do presente trabalho; na seção 5, são apresentados
os trabalhos relacionados; e por fim, na seção 6, é
apresentado a conclusão e as considerações finais.
II. F ERRAMENTA DE TESTE
A ferramenta utilizada para testar o desempenho dos web
services no presente trabalho foi o Apache jMeter (Versão
2.11).
O Apache JMeter é uma aplicação desktop projetada para a
realização de testes de desempenho e estresse em aplicações
cliente/servidor, como por exemplo aplicações Web. Ele pode
ser utilizado para simular cargas de trabalho em um servidor,
rede, aplicações ou mesmo em um objeto, testando sua
robustez. O desenvolvedor original do Apache jMeter foi
Stefanno Mazzochi, membro da Apache Software
Foundation. Atualmente a ferramenta, que é Open Source, é
resultado do trabalho de milhares de pessoas (JMETER,
2014).
Na figura 1 é mostrado a tela inicial do jMeter. O arquivo
executável do aplicativo está localizado na pasta bin/jmeter
do local de instalação. O jMeter necessita da máquina virtual
Java instalada para ser executado.
Figura 1. Tela Inicial do Apache jMeter
Na Figura 2 é apresentado um Grupo de Usuários para
Na tela inicial do jMeter é onde configura-se o Plano de
executar
as requisições aos web services.
Teste, que contém todos os elementos de um projeto criado no
jMeter.
Figura 2. Grupo de usuários do Apache jMeter
T.I.S. 2015; 4 (1): 51-58
52
Análise de desempenho entre serviços web SOAP e RESTful utilizando a ferramenta Apache jMeter
tempo que o jMeter leva para inicializar todos os
usuários. Por exemplo, se um período de 5 segundos for
setado, o jMeter vai terminar de iniciar todos os
usuários até o final desses 5 segundos. O valor 0
definido neste campo significa para começar
imediatamente todos os usuários;
Contador de Interação: configura quantas vezes o
teste será repetido. Por exemplo, se for configurado
uma contagem 1, o teste será executado apenas uma
vez.
Alguns parâmetros em Grupo de Usuários foram
configurados para a execução dos testes, sendo (JMETER,
2014):
Nome: descrição do grupo de usuário que está sendo
criado;
Número de Usuários Virtuais (threads): quantidade
de usuários que enviam os pedidos HTTP para os
serviços web;
Tempo de inicialização (em segundos): quantidade de
Figura 3. Requisição HTTP do Apache jMeter.
Na figura 3 é apresentada a interface para configurar uma
onde se localiza o servidor de aplicação;
REQUISIÇÃO HTTP, que foi o tipo de requisição utilizado
Número da Porta: porta do servidor onde se localiza
para o teste do web service RESTful.Os parâmetros
o servidor de aplicação;
configurados na interface em Requisição HTTP (JMETER,
Caminho: URL do web service, que concatenada
2014) foram:
com o Nome do Servidor ou IP forma a URL completa.
Na Figura 4 é apresentado a interface de configuração de
Nome: descrição da Requisição HTTP que está sendo
uma REQUISIÇÃO SOAP/XML-RPC, que foi o tipo
criada;
Nome do servidor ou IP: nome ou o IP do servidor utilizado para o teste do web service SOAP.
Figura 4. Requisição SOAP/XML-RPC do Apache jMeter
Nome: descrição do SOAP/XML-RPC que está
Os parâmetros configurados na interface Requisição
sendo criado;
SOAP/XML-RPC (JMETER, 2014) foram:
53
T.I.S. 2015; 4 (1): 51-58
Leandro Peres Gonçalves, Reinaldo de Oliveira Castro
URL: URL do web service;
Dados SOAP/XML-RPC: requisição SOAP utilizada
para dizer ao serviço web qual o método que ele deve
executar.
Para o entendimento dos resultados deste trabalho, é
apresentado os conceitos sobre o relatório agregado (gráfico).
Segundo JMETER (2014), o relatório agregado cria uma
linha na tabela para cada solicitação com nome diferente.
A cada solicitação é totalizado as informações de resposta e
fornecido a contagem do pedido, o minimo, o máximo, a
média, a taxa de erro, a vazão aproximada (requisição /
segundo) e os kilobytes por segundo de transferência
(JMETER, 2014).
Uma vez que o teste é realizado, o throughput (em
português “rendimento”) é o meio para a realização de todo o
teste. O throughput é calculado a partir do ponto de vista do
alvo de amostragem (por exemplo, o servidor remoto, no caso
de amostras de HTTP) (JMETER, 2014).
Alguns parâmetros do relatório agregado são explicados a
seguir (JMETER, 2014).
Label ou URL: nome do rótulo que está dentro de
Grupo de Usuários;
Amostras: número de amostras com o mesmo nome;
Média: tempo médio, em milissegundos, de um
conjunto de dados;
Desvio: O desvio padrão apresenta os casos em que
amostras se afastam do comportamento médio das
demais amostras utilizadas em razão do tempo de
resposta. Quanto menor for este valor, mais consistente
é o padrão de tempo das amostras coletadas;
Min: menor tempo, em milissegundos, entre todas as
amostras;
Max: maior tempo, em milissegundos, entre todas as
amostras;
Erros: pedidos com erros;
Vazão: taxa de transferência é medida em
solicitações por segundo/minuto/ hora;
KB/s: fluxo medido em kilobytes por segundo.
III. ESTUDO DE CASO: S ISTEMA DE GERENCIAMENTO DE
EVENTO DA UFS CAR
O Sistema de Gerenciamento de Eventos da UFScar tem
por objetivo apresentar um banco de dados de usuários
qualificados para agendar eventos, requisitar áreas de eventos,
entre outras possibilidades. O Sistema permite também o
cadastro de todos os locais de evento com suas características,
portanto possui uma administração do tipo cadastrar, editar,
consultar e deletar.
Figura 5. Diagrama Entidade-Relacionamento do Sistema de Gerenciamento de Eventos da UFSCar
Na Figura 5 é apresentado o diagrama entidaderelacionamento do sistema de gerenciamento de eventos da
UFSCar. A tabela utilizada para os testes de desempenho foi a
local_evento. Essa tabela é responsável por armazenar o
código (único), nome do local, o limite para lotação, se o
evento está disponível, a sigla, o endereço e a cidade onde vai
acontecer o evento.
A configuração da máquina utilizada para o teste de
desempenho é descrita na Tabela 1.
Tabela 1. Configuração da máquina utilizada para o teste de
desempenho
T.I.S. 2015; 4 (1): 51-58
54
Análise de desempenho entre serviços web SOAP e RESTful utilizando a ferramenta Apache jMeter
Para o teste foi utilizado a tabela local_evento com quinze
registros, como é mostrado na Figura 6.
Figura 6. Dados da tabela local_evento
Os serviços web SOAP e RESTful consumiram os dados
A solicitação e a resposta do web service SOAP é
da tabela local_evento, para ter um fator de medição de demonstrado a seguir.
desempenho para a execução dos testes.
Figura 7. Serviço web SOAP
A solicitação do web service RESTful consiste em uma
Na Figura 7 o serviço SOAP solicitou o local do evento
com código 1 (no caso Teatro Paulo Marcos) e retornou um chamada HTTP, como demonstrado na figura 3.
A resposta do web service RESTful é demonstrado a
arquivo XML, contendo os registros referentes ao código
seguir.
solicitado.
Figura 8. Serviço web RESTful
55
T.I.S. 2015; 4 (1): 51-58
Leandro Peres Gonçalves, Reinaldo de Oliveira Castro
Na Figura 8 o serviço RESTful retornou um arquivo JSON,
contendo todos os dados da tabela local_evento.
Com os dois web services funcionando, foi possível
executar o teste por meio da ferramenta jMeter,
separadamente, gerando os gráficos para cada tipo de web
service (SOAP x RESTful).
4. RESULTADOS
Para demonstrar os resultados apresentados pelo presente
trabalho, foi utilizado o relatório agregado em forma de
gráfico.
Na Figura 9 é apresentado o relatório agregado do web
service SOAP.
Figura 9. Relatório agregadodo web service SOAP
Os dados relevantes apresentados na Figura 9 são:
Tabela 2. Dados do relatório agregado do web service SOAP
Na Figura 10 é apresentado o relatório agregado do web
Figura 10. Relatório agregadodo web service RESTful
Os dados relevantes apresentados na Figura 10 são:
T.I.S. 2015; 4 (1): 51-58
56
Análise de desempenho entre serviços web SOAP e RESTful utilizando a ferramenta Apache jMeter
Tabela 3. Dados do relatório agregado do web service RESTful
services para se ter um melhor entendimento dos resultados.
Assim sendo, separamos a tabela dividindo por web
Tabela 4. Dados dos relatórios agregados dos web services SOAP e RESTful
De acordo com a Tabela 4, é possível concluir que o web
service RESTful, tendo o mesmo número de amostras do web
service SOAP, possui uma menor média, um menor desvio,
um menor mínimo, um menor máximo, uma menor vazão e
um maior número de kilobytes por segundo.
Comparando ambos os web services baseando-se na Tabela
4, temos:
Amostras: tanto o web service do tipo RESTful
quanto SOAP possuem o mesmo número de amostras,
no caso 2000;
Média: o web service do tipo RESTful foi superior
em aproximadamente 227,59%, tendo o menor tempo
de resposta em 116 milissegundos, enquanto que o
SOAP teve um maior tempo de resposta em 380
milissegundos;
Desvio: o web service do tipo RESTful foi superior
em aproximadamente 253,93%, tendo o menor desvio
em 89, enquanto que o SOAP teve um maior desvio em
315;
Mínimo: o web service do tipo RESTful foi superior
em aproximadamente 27,27%, tendo o menor tempo de
resposta em 11 milissegundos, enquanto que o SOAP
teve o menor tempo de resposta em 14 milissegundos.
Máximo: o web service do tipo RESTful foi superior
em aproximadamente 161,70%, tendo o maior tempo
de resposta em 470 milissegundos, enquanto que o
SOAP teve o maior tempo de resposta em 1230
milissegundos.
KB/s: o web service do tipo RESTful foi superior
em aproximadamente 163,72%, tendo o menor tempo
de 278.54 para processar as requisições, enquanto que
o SOAP teve o maior tempo de 734.57 para processar
as requisições.
Assim, com os resultados obtidos por este trabalho,
chegou-se a conclusão que o web service RESTful obteve
melhor desempenho em relação ao web service SOAP em
todos os quesitos analisados.
na densidade espacial de pontos; o código-fonte com a parte
prática do trabalho (utilizando a linguagem PHP); a
codificação dos web services, utilizando os recursos da
própria linguagem para criar o serviço RESTful, e, para criar
o serviço SOAP, foi utilizado a biblioteca NUSOAP; por fim,
o resultado aplicado para medir o tempo de execução.
A forma como é medido o tempo de execução no trabalho
de Bigolin (2012) difere da deste trabalho, pois somente mede
o tempo em segundos. Neste trabalho, além das métricas de
tempo (Média, mínimo, máximo), foi medido o desvio, a
vazão e o KB/s, por meio da ferramenta Apache jMeter.
Também foi utilizado dois mil usuários para simular o acesso
real de uma aplicação em produção. Já no trabalho do autor
não se tem nenhuma quantidade de usuários para realizar a
carga sobre os web services.
No trabalho de Shi (2006), o foco é web services
semânticos. É explorado o que SOAP e RESTful têm em
comum. É apresentado um estudo que relaciona os web
services e a web semântica, ambos sobre o protocolo HTTP e
sem a utilização de frameworks, tais como SOAP ou WSDL.
De acordo com o autor, este método viabiliza aos usuários
utilizar e compartilhar serviços por meio da computação
distribuída.
O trabalho de Shi (2006) foca na teoria, explicando as
vantagens e desvantagens de ambos os web services, sem
nenhum dado real para comprovação de tais vantagens e
desvantagens. Neste trabalho, além da teoria, foi apresentado
um estudo de caso de um sistema real, no caso Gerenciamento
de Eventos da UFSCar. Além disso, é realizado testes de
desempenho com a ferramenta Apache jMeter para se ter uma
análise prática dos web services, possibilitando assim uma
análise mais aproximada de uma aplicação em produção.
6. CONCLUSÃO
Cada vez mais existe a necessidade de intercomunicação
entre sistemas distintos, mesmo para aplicações de pequeno
porte. Um exemplo claro é o grande número de aplicativos
que se conectam na rede social Facebook, que, por sua vez,
disponibiliza um conjunto de API's para consumo por parte
dos desenvolvedores.
Essas API's nada mais são do que serviços web
disponibilizados para serem consumidos por aplicações
externas, que precisam de dados que estejam na plataforma
Facebook. Para tanto, fazem o consumo do serviço por meio
de web services, sem acessar diretamente as base de dados da
rede social.
5. TRABALHOS RELACIONADOS
Bigolin (2012) realiza uma análise e implementação de
web services, mais especificamente SOAP e RESTful. São
apresentadas as definições de SOAP e RESTful, abordando os
conceitos das duas tecnologias e realizando um comparativo
entre elas. O trabalho foi estruturado da seguinte forma: uma
contextualização do problema de implementação, que consiste
57
T.I.S. 2015; 4 (1): 51-58
Leandro Peres Gonçalves, Reinaldo de Oliveira Castro
Nesse contexto, com a pesquisa realizada por este trabalho,
foi possível confirmar que o serviço web RESTful é mais
performático que o web service SOAP.
O teste realizado no presente trabalho demonstrou que o
web service RESTful é mais rápido do que o web service
SOAP nos quesitos tempo médio de resposta, desvio padrão,
tempo mínimo de resposta, tempo máximo de resposta,
vazão, e menor tempo em kilobytes para processar as
informações, utilizando o mesmo número de amostras (duas
mil).
Acreditamos que isso acontece por diversos fatores, sendo
eles (MORO et al., 2011):
O RESTful utiliza somente HTTP para transportar
as informações, e SOAP trabalha com envelopes
envolvidos sobre o HTTP. Isso afeta o desempenho,
pois os pacotes SOAP devem sofrer um parse antes de
os dados serem utilizados;
Na comunicação Cliente/Servidor, nenhum estado é
mantido (stateless) no uso de RESTful. Com SOAP, é
possível solicitar os dados de autenticação somente na
primeira requisição, salvando os mesmos na sessão do
servidor. Neste caso, com o RESTful, pode-se ganhar
desempenho, pois diferentemente do SOAP, o
RESTful não precisa armazenar o estado da
requisição.
Mas o principal deles é que web services RESTful são
baseados em JSON, um formato muito leve; em
contrapartida, os web services SOAP são baseados em XML,
um formato mais pesado, que exige um maior esforço da
parte da aplicação e, consequentemente, exige mais recursos
como memória e processamento no servidor.
Como trabalho futuro, pode-se realizar a separação e a
análise de desempenho com conexão (internet) e sem conexão
(local). Este trabalho não se preocupou em realizar a
separação com dois tipos de conexão, e sim focou em uma
análise com conexão local. Além disso, pode ser explorado a
T.I.S. 2015; 4 (1): 51-58
análise de desempenho em diferentes tipos de processadores,
o que resultaria em comparações mais voltadas para a área de
infraestrutura.
REFERÊNCIAS
BIGOLIN, M. Análise e implementação de web services.
Trabalho de Conclusão de Curso, Universidade Federal do
Rio Grande do Sul, Instituto de Informática. 2012.
JMETER, A.. Aplicação desktop projetada para testes de
carga e medidas de performance. Technical report, Apache
Software
Foundation.
Disponível
em:
<http://jakarta.apache.org/jmeter/>. Acesso em: 21 ago.
2014.
FIELDING, R. T. Architectural styles and the design of
network-based software architectures. Tese de Doutorado,
University Of California, Irivine, 2000.
SHI, X. Sharing service semantics using SOAP-based and
REST Web services. IT
Professional. 2006.
THOMAS, E. SOA Principles of Service Design. New York.
Prentice Hall, 2007.
WEBBER, J., PARASTATIDIS, S., ROBINSON, I. REST in
Practice. Sebastopol: O'Reilly, 2010.
W3C. Web Services Architecture. 2004. Disponível em
<http://www.w3.org/TR/2004/NOTE-ws-arch-20040211>.
Acesso em: 27 jul. 2014
W3SCHOOLS. SOAP TUTORIAL, 2014. Informações sobre
padrões
Web.
Disponível
em:
<http://www.w3schools.com/soap/default.asp>. Acesso
em: 23 agosto 2014.
MORO, T. D.; DORNELES, C. F.; REBONATTO, M. T. Web
services WS-* versus Web Services REST. Universidade
de Passo Fundo (UPF), Instituto de Ciências Exatas e
Geociências. 2011.
58

Documentos relacionados

faculdade dom bosco de porto alegre web services genéricos

faculdade dom bosco de porto alegre web services genéricos sistemas devem ser capazes de interagir e compartilhar informação de maneira eficiente e segura. Este trabalho descreve o funcionamento dos Web Services, um padrão de comunicação e compartilhamento...

Leia mais