arquitetura de serviços rest em java e implementação modulares de

Propaganda
ARQUITETURA DE SERVIÇOS REST EM JAVA E IMPLEMENTAÇÃO
MODULARES DE SOFTWARES
UFMT / Cuiabá-MT
Igor Maldonado Floôr – [email protected]
No mundo atual a utilização de serviços(arquitetura orientada à serviços – SOA) está cada vez maior, tendo em vista o grande
numero de possibilidades que a implementação destes dá para um sistema. Com a utilização de serviços torna possível
transmitir informações por meio da web(requisições HTTP). Mesmo falando de serviços, existem dois enfoques no termo
arquitetura orientada à serviços, dentre estes dois ramos de serviços, um deles é o SOAP e o outro é o REST, estes modelos
possuem suas particularidades, vantagens e desvantagens.
O objetivo deste trabalho é implementar um serviço REST obedecendo as suas características de arquitetura utilizando a
linguagem de programação JAVA. Este estudo serve como base para sistemas de pesquisa que desejam ter seus dados
disponíveis e fracamente acoplados ao sistema, desta forma torna-se mais simples grupos de pesquisa trabalharem em
conjunto trocando dados na forma de requisições HTTP. Todos estes serviços trabalharão em conjunto, coordenados por um
Barramento de serviços.
Este trabalho foi realizado de maneira planejada, no início do projeto tinha- se as necessidades que deveriam ser supridas pela
pesquisa e essas necessidades foram sendo supridas em sequencia, das mais simples para as mais complexas. Foi muito
utilizado para ganho de conhecimento durante o processo de aprendizagens, artigos acadêmicos, papers, resumos, Trabalhos
de conclusão de curso e livros, assim como também usei como base a tese de doutorado de Roy Fielding, idealizador da
arquitetura de serviços Rest.
Participaram deste projeto alunos do grupo de pesquisa GAIIA que pesquisam na área de busca de similaridade textual, alunos
deste mesmo grupo que visam a implementação de um software para análise de patentes. Utilizei algumas API’s em Java para
codificação dos resultados, utilizei o framework Eclipse para programação. Foram utilizados os servidores do Instituto de
Computação para hospedagem dos serviços para análise dos resultados. Os resultados que obtive até o momento não são
completos, pois eu apenas terei os resultados finais quando completar todos os objetivos.
Até o momento eu criei serviços que representam os módulos de um sistema real e que trabalham de maneira conjunta. Desta
forma consegui modularizar o sistema para que proporcionasse para o mesmo um grande desacoplamento, porém com essa
modularização eu ganhei um pequeno overhead de dados durante a comunicação entre os módulos, pois o que antes era uma
conexão de banco de dados por exemplo, que resultava uma grande quantidade de dados, com a modularização, tem que
enviar o mesmo número de dados por requisições HTTP, o que representa um fluxo maior de dados e também uma
necessidade de tempo maior para envio do mesmo conjunto de dados.
Portanto chega-se a conclusão de que embora nem todos os objetivos tenham sido alcançados é possível notar um ganho de
produtividade no desenvolvimento do sistema, modularizando-se as funções básicas do mesmo, assim como também ganha-se
maior autonomia para cada grupo de desenvolvimento do software, pois após a API de comunicação ter sido desenvolvida cada
módulo precisa apenas responder àquela API. Porém com esses ganhos, vem também um overhead de comunicação entre os
módulos, pois uma comunicação que antes era nativa em bytes, agora necessita ser feita por meio de requisições HTTP, onde
estas requisições possuem dados adicionais.
Tendo em vista estas vantagens e desvantagens, foi-se decidido no projeto que módulos que necessitassem de grande fluxo de
dados de entra e/ou saída não se comunicariam por meio requisições HTTP, e sim nativamente com conexões específicas, pois
do contrário seria criado um gargalo de dados que ao invés de auxiliar o projeto poderia torna-lo extremamente lento. Cito
como exemplo a persistência de dados, que é algo com um fluxo muito grande de dados. Vale ressaltar que caso o overhead
criado não seja um problema pois a capacidade de transmissão e processamento de dados seja suficiente, não há problema em
adotar a modularização.
Palaras-chave: DESENVOLVIMENTO,SOFTWARE,SOA,ESCALABILIDADE,ACOPLAMENTO
Trabalho de Conclusão de curso
Download