Análise de Impacto do GraphQL Federation - Fontão, João Filipe Pereira (2022)
Microservices architectures have gained more admirers due to the problems they came to solve from previous architectures, which led many companies to adopt this architecture. When this architecture emerged, REST was one of the leading architectural styles used with microservices. However, with the growth of microservices, it was noticed that it presents some problems when there is a significant increase in the complexity of applications. Due to the problems found with the existing approaches, it was tried to find solutions that could help solve these problems, and it was then that the company Facebook launched GraphQL as one of the most promising alternatives. Although GraphQL is recent, many studies have already compared it with other approaches such as REST. GraphQL then began to become increasingly popular, and although there is already some documentation and studies, there are still topics that have not been adequately explored. For this reason, the focus of this thesis is to explore the impact that GraphQL has on quality attributes in a microservices architecture, focusing on a new approach, GraphQL federation. There is still little documentation on this approach, and the impact of its implementation is not very well known, but despite being recent, it has already been implemented by large companies such as Netflix, PayPal and GitHub. This dissertation also provides an insight into the current state of GraphQL in a microservices architecture, including the benefits, problems, success stories, some patterns, and a more detailed explanation of the GraphQL federation architecture. A proof of concept was developed by implementing GraphQL federation to a solution that already used GraphQL with microservices. Afterward, the solutions were evaluated in terms of performance and maintainability, and a comparison was later made between the two projects to see if federation impacted these quality attributes. One of the conclusions of this study is that the GraphQL federation solution has better maintainability, taking into account the qualitative assessment. However, in terms of performance, the solutions do not show significant differences, presenting both good performance results.