Go x Java e gRPC x REST: Um estudo empírico

  • Luiz Otávio Soares UFLA
  • Ricardo Terra UFLA

Resumo


Este trabalho investiga a influência das linguagens de programação Java e Go e das arquiteturas de comunicação REST e gRPC no desempenho de APIs. A questão de pesquisa #1 investigou qual par (linguagem,arquitetura-comunicação) provê melhor desempenho. Por um lado, pares (Go, gRPC) e (Java, gRPC) se destacaram em requisições de tamanhos usuais (StdSize) possivelmente devido à eficiência na compactação de dados e na redução de latência oferecida pelo gRPC. Por outro lado, pares (Go, REST) e (Java, REST) se destacaram em requisições de grande volume (LargeSize) provavelmente devido à flexibilidade do REST em lidar com grandes volumes de dados sem estrutura rígida. A questão de pesquisa #2, de forma complementar, investigou a influência de cada fator no desempenho. Um projeto fatorial 2𝑘𝑟 concluiu que enquanto a linguagem de programação exerce uma influência de 2%, a arquitetura de comunicação influencia 94%.

Palavras-chave: Linguagens de programação, estilo arquitetural de comunicação, estudo empírico

Referências

P Y Abhinav, Avakash Bhat, Christina Terese Joseph, and K Chandrasekaran. Concurrency analysis of go and java. In 5th International Conference on Computing, Communication and Security (ICCCS), pages 1–6, 2020.

M. Belshe, R. Peon, and M. Thomson. Hypertext transfer protocol version 2 (http/2). Internet Requests for Comments, 2015.

A. Birrell and B. Nelson. Implementing remote procedure calls. ACM Transactions on Computer Systems (TOCS), 2(1):39–59, 1984.

Marek Bolanowski, Kamil Żak, Andrzej Paszkiewicz, Maria Ganzha, Marcin Paprzycki, Piotr Sowiński, Ignacio Lacalle Úbeda, and Carlos Palau. Eficiency of REST and gRPC Realizing Communication Tasks in Microservice-Based Ecosystems, pages 97–108. IOS Press, Amsterdam, Netherlands, 2022.

Abhijit Bora and Tulshi Bezboruah. A comparative investigation on implementation of restful versus soap basedweb services. International Journal of Database Theory and Application, 8(3):297–312, 2015.

Russ Cox, Robert Griesemer, Rob Pike, Ian Lance Taylor, and Ken Thompson. The Go programming language and environment. Communications of the ACM, 65(5):70–77, 2022.

Douglas Crockford. The application/json Media Type for JavaScript Object Notation (JSON). RFC 4627, July 2006.

Somnath Datta and Glen A Satten. Rank-sum tests for clustered data. Journal of the American Statistical Association, 100(471):908–915, 2005.

Alan A. A. Donovan and Brian W. Kernighan. The Go Programming Language. Addison-Wesley Professional, Boston, MA, 2012.

R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee. Hypertext transfer protocol – http/1.1. Internet Requests for Comments, 1999.

Roy Thomas Fielding. Architectural styles and the design of networkbased software architectures. PhD thesis, University of California, Irvine, 2000.

Google. grpc: A high performance, open source universal rpc framework. [link], 2015.

F. Habibzadeh. Data distribution: Normal or abnormal? Journal of Korean Medical Science, 39(e35):1–8, 2024.

Olena S. Holovnia, Natalia O. Shchur, I. A. Sverchevska, Yelyzaveta M. Bailiuk, and O. Pokotylo. Interactive surveys during online lectures for it students. Contemporary Educational Technology, 13(1):ep56, 2023.

Raj Jain. The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling. Wiley-Interscience, New York, NY, USA, 1991.

Lukasz Kamiński, Maciej Kozłowski, Daniel Sporysz, Katarzyna Wolska, Patryk Zaniewski, and Radosław Roszczyk. Comparative review of selected internet communication protocols. Foundations of Computing and Decision Sciences, 48(1):39–56, 2023.

Kamal Kumar, Anuj Kumar Jain, Raj Gaurang Tiwari, Nitin Jain, Vinay Gautam, and Naresh Kumar Trivedi. Analysis of api architecture: A detailed report. In 12th International Conference on Communication Systems and Network Technologies (CSNT), pages 880–884, 2023.

Yunhyeok Lee and Yi Liu. Using refactoring to migrate rest applications to grpc. In ACM Southeast Conference, page 219–223, 2022.

Robin Marx, Maarten Wijnants, Peter Quax, Axel Faes, and Wim Lamotte. Web performance characteristics of http/2 and comparison to http/1.1. In Web Information Systems and Technologies, pages 87–114, 2018.

Hélio Amante Miot. Avaliação da normalidade dos dados em estudos clínicos e experimentais. Jornal Vascular Brasileiro, 16(2):88–91, 2017.

F. Pokropp. A note on conditional wilcoxon tests with natural and mid-ranks. Biometrical Journal, 34(8):859–863, 1992.

R Core Team. R: A language and environment for statistical computing, 2019.

S. Singhal and B. Q. Nguyen. The java factor. ACM, 41(6):34–37, 1998.

The Chromium Projects. Spdy protocol. [link], 2012. Acessado em 13 de fevereiro de 2024.

TIOBE Software. Tiobe index for may 2024. [link], 2024.

Mariusz Śliwa and Beata Pańczyk. Performance comparison of programming interfaces on the example of rest api, graphql and grpc. Journal of Computer Sciences Institute, 21(21):356–361, 2021.
Publicado
30/09/2024
SOARES, Luiz Otávio; TERRA, Ricardo. Go x Java e gRPC x REST: Um estudo empírico. In: SIMPÓSIO BRASILEIRO DE LINGUAGENS DE PROGRAMAÇÃO (SBLP), 28. , 2024, Curitiba/PR. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2024 . p. 62-70.