66 research outputs found

    Analysis of GraphQL performance: a case study

    Get PDF
    Atualmente os aplicativos da Web têm um papel relevante, com um grande número de aparelhos conectados à Internet e os dados são transmitidos entre plataformas distintas a um ritmo sem precedentes. Vários sistemas e plataformas de tipos diferentes, como web e móveis, exigem que os aplicativos se adaptem de maneira rápida e eficiente às necessidades dos consumidores. Em 2000, o Representation State Transfer (REST) foi apresentado e foi rapidamente adotado pelos desenvolvedores. No entanto, devido ao crescimento dos consumidores e às necessidades distintas, este estilo arquitetónico, na forma como é utilizado, revelou algumas fragilidades relacionadas com o desempenho e flexibilidade das aplicações. Estas são ou podem ser endereçadas com GraphQL. Apesar de ser uma tecnologia recente, já é usada por grandes empresas como Facebook, Netflix, GitHub e PayPal. Recentemente, uma plataforma do INESC TEC, denominada IRIS, enfrentou os mesmos problemas de desempenho e a possibilidade de adoção do GraphQL foi considerada. Várias alternativas com GraphQL foram estudadas e analisadas de forma a verificar se poderiam beneficiar o IRIS em termos de desempenho e flexbilidade. Uma das conclusões deste estudo é que todas as alternativas testadas revelam, no geral, melhores resultados de desempenho, tendo em consideração o tempo de resposta e o tamanho da resposta. No entanto, a utilização de uma alternativa constituída apenas por GraphQL apresenta-se como a melhor solução para melhorar o desempenho e flexibilidade de uma aplicação.Web applications today play a significant role, with a large number of devices connected to the Internet, and data is transmitted across disparate platforms at an unprecedented rate. Many systems and platforms of different types, such as web and mobile, require applications to adapt quickly and efficiently to the needs of consumers. In 2000, the Representation State Transfer (REST) was introduced, and the developers quickly adopted it. However, due to the growth of consumers and the different needs, this architectural style, in the way it is used, revealed some weaknesses related to the performance and flexibility of the applications. These are or can be addressed with GraphQL. Despite being a recent technology, it is already used by big companies like Facebook, Netflix, GitHub, and PayPal. Recently, an INESC TEC platform, called IRIS, faced the same performance problems and the possibility of adopting GraphQL was considered. Several alternatives with GraphQL were studied and analyzed to see if they could benefit IRIS in terms of performance and flexibility. One of the conclusions of this study is that all of the alternatives tested show, overall, better performance results, taking into account response time and response size. However, the use of an alternative consisting solely of GraphQL is the best solution to improve the performance and flexibility of an application

    Reactive Microservices - An Experiment

    Get PDF
    Os microserviços são geralmente adotados quando a escalabilidade e flexibilidade de uma aplicação são essenciais para o seu sucesso. Apesar disto, as dependências entre serviços transmitidos através de protocolos síncronos, resultam numa única falha que pode afetar múltiplos microserviços. A adoção da capacidade de resposta numa arquitetura baseada em microserviços, através da reatividade, pode facilitar e minimizar a proliferação de erros entre serviços e na comunicação entre eles, ao dar prioridade à capacidade de resposta e à resiliência de um serviço. Esta dissertação fornece uma visão geral do estado da arte dos microserviços reativos, estruturada através de um processo de mapeamento sistemático, onde são analisados os seus atributos de qualidade mais importantes, os seus erros mais comuns, as métricas mais adequadas para a sua avaliação, e as frameworks mais relevantes. Com a informação recolhida, é apresentado o valor deste trabalho, onde a decisão do projeto e a framework a utilizar são tomadas, através da técnica de preferência de ordem por semelhança com a solução ideal e o processo de hierarquia analítica, respetivamente. Em seguida, é realizada a análise e o desenho da solução, para o respetivo projeto, onde se destacam as alterações arquiteturais necessárias para o converter num projeto de microserviços reativo. Em seguida, descreve-se a implementação da solução, começando pela configuração do projeto necessária para agilizar o processo de desenvolvimento, seguida dos principais detalhes de implementação utilizados para assegurar a reatividade e como a framework apoia e simplifica a sua implementação, finalizada pela configuração das ferramentas de métricas no projeto para apoiar os testes e a avaliação da solução. Em seguida, a validação da solução é investigada e executada com base na abordagem Goals, Questions, Metrics (GQM), para estruturar a sua análise relativamente à manutenção, escalabilidade, desempenho, testabilidade, disponibilidade, monitorabilidade e segurança, finalizada pela conclusão do trabalho global realizado, onde são listadas as contribuições, ameaças à validade e possíveis trabalhos futuros.Microservices are generally adopted when the scalability and flexibility of an application are essential to its success. Despite this, dependencies between services transmitted through synchronous protocols result in one failure, potentially affecting multiple microservices. The adoption of responsiveness in a microservices-based architecture, through reactivity, can facilitate and minimize the proliferation of errors between services and in the communication between them by prioritizing the responsiveness and resilience of a service. This dissertation provides an overview of the reactive microservices state of the art, structured through a systematic mapping process, where its most important quality attributes, pitfalls, metrics, and most relevant frameworks are analysed. With the gathered information, the value of this work is presented, where the project and framework decision are made through the technique of order preference by similarity to the ideal solution and the analytic hierarchy process, respectively. Then, the analysis and design of the solution are idealized for the respective project, where the necessary architectural changes are highlighted to convert it to a reactive microservices project. Next, the solution implementation is described, starting with the necessary project setup to speed up the development process, followed by the key implementation details employed to ensure reactivity and how the framework streamlines its implementation, finalized by the metrics tools setup in the project to support the testing and evaluation of the solution. Then, the solution validation is traced and executed based on the Goals, Questions, Metrics (GQM) approach to structure its analysis regarding maintainability, scalability, performance, testability, availability, monitorability, and security, finalized by the conclusion of the overall work done, where the contributions, threats to validity and possible future work are listed
    corecore