Proposta
Data: 30 de maio de 2013 | Autor: Diego de Araújo Martinez Camarinha
Tema
Escalabilidade de serviços web
Supervisor
Resumo
Serviços web são componentes de software fracamente acoplados, projetados para promover a comunicação interoperável entre aplicações da internet. A troca de mensagens se dá, tipicamente, por meio do uso do Simple Object Access Protocol (SOAP), normalmente sob o protocolo HTTP. Um serviço web que utiliza SOAP é descrito por meio de uma interface especificada em WSDL (Web Service Description Language), que é acessível por meio de um endpoint. Uma especificação WSDL é representada por um arquivo XML (Extensible Markup Language) que descreve as operações fornecidas por um serviço, assim como os tipos de dados necessários para se invocar essas operações [1].
O acesso a serviços web se dá de maneira padronizada (via protocolos definidos pela W3C), independente da linguagem de programação, sistema operacional ou plataforma em que são desenvolvidos. Devido à essas características, serviços simples podem ser combinados em serviços mais completos [2]. Coreografia de serviços web é uma abordagem de coordenação descentralizada [3] para a composição de serviços. Ela descreve um fluxo de mensagens entre um conjunto de serviços em um modelo global, sem um ponto central de controle, onde cada participante desempenha um papel que determina seu comportamento na composição. Esse tipo de abordagem aumenta a escalabilidade e a tolerância a falhas, pois não existe um ponto central de coordenação. Ela foi proposta para resolver os problemas de orquestrações de serviços web, que consistem em composições de serviços cuja abordagem é centralizada, ou seja, existe um nó central que coordena a troca de mensagens [4]. Dado que orquestrações são processos executáveis, coreografias podem ser executadas por meio de orquestrações distribuídas [5]. Cada orquestração pode ser associada a um papel, assim, durante o fluxo de informações de uma coreografia, vários coordenadores (orquestrações) são responsáveis por diferentes partes do fluxo [2].
Por terem caráter interoperável (podem ser desenvolvidos utilizando-se múltiplas tecnologias), serviços web tem sido amplamente estudados e cada vez mais usados como os blocos de construção para desenvolver aplicações web e, portanto, saber como testá-los passou também a ser relevante. Assim como todo componente de software deve ser testado, apoiado por um conjunto de testes automatizados que permite verificá-lo e validá-lo, serviços web também devem ser. No entanto, o caráter inter-organizacional de SOA (Service Oriented Architecture) introduz obstáculos ao teste automatizado e até mesmo manual de coreografias, tais como a impossibilidade de se invocar alguns serviços em modo teste. Como consequência, alguns serviços candidatos à coreografia não podem ser testados isoladamente. Além disso, a dinamicidade, característica inerente a SOA, e a natureza descentralizada de coreografias dificultam a validação das mensagens trocadas pelos serviços participantes. Devido a essas questões, há poucas ferramentas e técnicas para o teste automatizado de coreografias [6, 7], o que dificulta a avaliação de escalabilidade [4].
Nesse contexto, este trabalho colaborará com os estudos que fazem parte também do projeto CHOReOS, uma cooperação internacional entre o IME-USP e a união europeia, de forma que estenderá o trabalho de conclusão de curso "Automated Scalability Testing Framework for Web Service Coreographies" e a dissertação de mestrado "Rehearsal: Um arcabouço para teste automatizado de coreografias de serviços web", assim como contribuirá com estudos e validação do arcabouço de teste “Scalability Explorer”.
Objetivos
O principal objetivo deste trabalho é verificar diferentes abordagens para o teste de desempenho e a escalabilidade de serviços web. Como estudo de caso inicial, avaliaremos o Kalibro, um serviço que está em produção em uma plataforma de monitoramento do código-fonte de projetos de software livre, denominada Mezuro. O Kalibro é um serviço web para configuração, interpretação e monitoramento de métricas de código-fonte, no qual é possível realizar: o acompanhamento de repositórios de código; cálculo de métricas através de ferramentas base; criação e compartilhamento de configurações e de interpretações de métricas [8].
Com os resultados desse primeiro estudo, avaliaremos se alguma mudança estrutural (de orquestração para coreografia, por exemplo) acarretaria em melhora de escalabilidade e se essa mudança valeria a pena em termos de aumento de complexidade e manutenibilidade do serviço. Posteriormente, aplicaremos o mesmo estudo para outros serviços que cubram outros aspectos que o Kalibro não explora do ponto de vista dos serviço web. Assim, com os resultados finais dos estudos, pretendemos propor um guia de testes para serviços web, de acordo com os cenários avaliados.
Atividades já realizadas
Ainda em 2011, comecei a colaborar com o Mezuro, em um projeto de iniciação científica apoiado pelo NAPSoL (Núcleo de Apoio à Pesquisa em Software Livre da USP), e pude acrescentar novas funcionalidades e expandir meus conhecimentos sobre aplicações web, neste que funciona como o orquestrador do serviço Kalibro.
Já no ano passado, foi realizado um estudo exploratório com a finalidade de avaliar a efetividade do arcabouço Rehearsal quando a proposta de metodologia TDD (Test-Driven Development) é aplicada no desenvolvimento de coreografias. Participei desse estudo e foi importante, pois proporcionou um contato mais aprofundado com serviços web e como eles poder ser combinados. Através da adição de pequenas funcionalidades em uma coreografia, foi possível aprender como um serviço é especificado e como se dá a comunicação, bem como a troca de mensagens entre os participantes da coreografia, utilizando testes de unidade, integração e aceitação para verificar que a implementação estava correta.
Em março de 2013, iniciei os estudos do serviço Kalibro, o que envolveu uma investigação aprofundada da própria ferramenta. Para melhorar o entendimento sobre ela, por ser uma ferramenta livre, pude começar a estudar seu funcionamento. Assim, familiarizando-me, com a arquitetura, fluxo de dados, padrões de projeto utilizados e organização do código. Desde então já consegui contribuir com novas funcionalidades da ferramenta.
Em maio, realizei um primeiro estudo para coletar os dados sobre a latência do Kalibro. Criei um script para automatizar a execução dos testes e um outro para automatizar a troca do banco de dados do Kalibro do modo de produção para o modo teste, enquanto a coleta de dados sobre seu tempo de resposta é realizada.
Cronograma
| Atividade | Mar | Abr | Mai | Jun | Jul | Ago | Set | Out | Nov |
|---|---|---|---|---|---|---|---|---|---|
| Estudo sobre serviços web e do Kalibro | x | x | |||||||
| Testes de latência do Kalibro | x | ||||||||
| Teste do Kalibro de acordo com as abordagens dos trabalhos realizados no contexto do projeto CHOReOS | x | x | |||||||
| Análise dos resultados obtidos no estudo do Kalibro | x | ||||||||
| Verificar se ao mudar a estrutura do Kalibro é alcançada maior escalabilidade | x | x | x | ||||||
| Definir outro serviço para estudo para verificar características não cobertas pelo Kalibro | x | x | x | x | |||||
| Definir um "guia" de testes para serviços que se encaixem nos cenários estudados | x | ||||||||
| Monografia | x | x | x | x | x | ||||
| Pôster | x | ||||||||
| Apresentação | x |
Estrutura esperada da monografia
Parte Objetiva
1. Introdução
2. Motivação
3. Objetivos
4. Conceitos e Tecnologias
4.1 Serviços Web
4.2 Arcabouços de testes de serviços web
4.3 Outras Tecnologias
5. Estudos de caso
5.1 Kalibro
5.2 Outro Serviço
6. Análise dos Resultados Obtidos
6.1 Análise dos resultados do Kalibro
6.2 Análise dos resultados do outro serviço
7. Um guia de testes para serviços web
8. Conclusão
9. Referências bibliográficas
Parte subjetiva
1. Desafios e frustrações
2. Disciplinas cursadas relevantes para o desenvolvimento do TCC e observações do que realmente foi aproveitado delas
3. Trabalhos futuros
Referências Bibliográficas
[1] David Booth, Hugo Haas, Francis McCabe, Eric Newcomer, Michael Champion, Chris Ferris e David Orchard. W3C Note NOTE-ws-arch-20040211. Disponível em:
www.w3.org/TR/ws-arch/wsa.pdf, 2004. Acesso em: maio de 2013.
[2] BESSON, F. M. Rehearsal: Um arcabouço para teste automatizado de coreografias de serviços web. 2012. 130 f. Dissertação (Mestrado) - Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo, 2012.
[3] C. Peltz. Web services orchestration and choreography. Computer, 36(10):46 – 52. ISSN 0018-9162. doi: 10.1109/MC.2003.1236471.
[4] LEAL, P. M. B. Automated Scalability Testing Framework for Web Service Choreographies. 2011.
[5] CHOReOS. CHOReOS Perspective on the FI and initial conceptual model (D 1.2).
http://choreos.eu/bin/Download/Deliverables, 2011. Acesso em: maio de 2013.
[6] Antonio Bucchiarone, Hernán Melgratti e Francesco Severoni. Testing Service Composition. Em 8th Argentine Symposium on Software Engineering (ASSE’ 07), Mar del Plata, Argentina, 2007.
[7] Geraldo Canfora e Massimiliano Di Penta. Service-Oriented Architectures Testing: A Survey. Em Software Engineering, volume 5143 de Lecture Notes in Computer Science, páginas 78-105. Springer Berlin / Heidelberg, 2009.
[8] Carlos Morais, Paulo Meirelles e Eduardo Morais. Kalibro Metrics: Um serviço para monitoramento e interpretação de métricas de código-fonte. 2012.