DOI QR코드

DOI QR Code

Performance evaluation of API Gateway in GraalVM and Virtual Thread environment

GraalVM 및 Virtual Thread 환경에서 API Gateway의 성능 평가

  • Dong-il Cho (Division of It Software, Shingu College)
  • 조동일
  • Received : 2024.03.29
  • Accepted : 2024.07.10
  • Published : 2024.08.31

Abstract

An API gateway is a high-availability component that provides a single entry point for API clients outside the cloud to connect with services inside the cloud. It has a high risk of creating bottlenecks and requires redeployment when services change. The Java language, in which several API gateways are implemented, announced technologies called GraalVM Native Image and Virtual Thread to overcome problems with deployment and operational performance. Applying these technologies to Java applications requires changes to the source code and deployment procedures. In this study, the performance of the API gateway was measured and analyzed when it operated based on GraalVM Native Image and Java Virtual Machine(JVM) and between Virtual Thread and Reactive thread processing methods. In this study, evaluation indicators were selected to evaluate deployment performance and operational performance, and the performance of the evaluation indicators was measured and evaluated in four environments.

API 게이트웨이는 클라우드 외부의 API 클라이언트가 클라우드 내부 서비스와 통신할 수 있는 단일 진입점을 제공하는 고가용성 구성요소로서 병목 현상을 발생시킬 위험이 크고 서비스 변경 시 재배포가 필요하다. 여러 API 게이트웨이가 구현되고 있는 Java 언어는 배포와 운영 성능의 문제를 극복하기 위해 GraalVM Native Image와 Virtual Thread라는 기술을 발표하였다. Java 애플리케이션에 이들 기술을 적용하기 위해서는 소스 코드 및 배포 절차를 변경해야 한다. 본 연구에서는 API 게이트웨이가 GraalVM Native Image와 Java Virtual Machine(JVM) 기반으로 동작했을 때와 Virtual Thread와 Reactive 스레드 처리 방식 간의 성능을 측정하고 분석하였다. 본 연구에서는 배포 성능과 운영 성능의 평가를 위해 평가지표를 선정하였고 네 가지 환경에서 평가지표의 성능을 측정하고 평가하였다.

Keywords

References

  1. C. Richardson, "Microservices Patterns," Manning, pp.152-160, 253-291, 2018.
  2. Q. Xiong and W. Li, "Design and Implementation of Microservices Gateway Based on Spring Cloud Zuul," in Proc. of 3rd International Conference on Computer Information and Big Data Applications, pp.1-5, 2022. https://ieeexplore.ieee.org/document/9899125
  3. X. Gao, R. Liu and X. Lin, "API Gateway Optimization Architecture Based on Heterogeneous Hardware Acceleration," in Proc. of IEEE 3rd International Conference on Information Technology and Big Data and Artificial Intelligence, Vol.3, pp.863-868, 2023. https://doi.org/10.1109/ICIBA56860.2023.10165387
  4. A. Sharma, K. Tahiliani and G. P. Dubey, "Reactive-Optimized Sentence Detection In Kubernetes Using OpenNLP And Native GraalVM Image With Framework Metric Comparison," in Proc. of 2023 4th International Conference for Emerging Technology, pp.1-9, 2023. https://doi.org/10.1109/INCET57972.2023.10170347
  5. H. D. Long, T. Vergilio and A. Kor, "Comparative Performance and Energy Efficiency Analysis of Jvm Variants and Graalvm in Java Applications," SSRN, 2023. http://dx.doi.org/10.2139/ssrn.4373169
  6. GraalVM Native Image Support. Available online: https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html
  7. R. Pressler and A. Bateman, "JEP 444: Virtual Threads," 2023. Available online: https://openjdk.org/jeps/444
  8. C. Wimmer, C. Stancu, P. Hofer, V. Jovanovic, P. Wogerer, P. B. Kessler, O. Pliss, and T. Wurthinger, "Initialize once, start fast: application initialization at build time," Proceedings of the ACM on Programming Languages, Vol. 3, Article 184, pp.1-29, 2019. https://doi.org/10.1145/3360610
  9. M. Deinum, D. Rubio, J. Long, "Spring 6 Recipes A Problem-Solution Approach to Spring Framework fifth Edition," pp.205-240, Apress,
  10. B. Evans, "Going inside Java's Project Loom and virtual threads," Java magazine, 2021. Available online: https://blogs.oracle.com/javamagazine/post/going-inside-javas-project-loom-and-virtual-threads
  11. D. Beronic, P. Pufek, B. Mihaljevic and A. Radovan, "On Analyzing Virtual Threads - a Structured Concurrency Model for Scalable Applications on the JVM," in Proc. of 2021 44th International Convention on Information, Communication and Electronic Technology, pp.1684-1689, 2021. https://doi.org/10.23919/MIPRO52101.2021.9596855
  12. M. Sipek, B. Mihaljevic, and A. Radovan, "Exploring Aspects of Polyglot High-Performance Virtual Machine GraalVM," in Proc. of 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics, pp.1671-1676, 2019. https://doi.org/10.23919/MIPRO.2019.8756917
  13. G. Duboscq, L. Stadler, T. Wurthinger, D. Simon, C. Wimmer and H. Mossenbock, "Graal IR: An Extensible Declarative Intermediate Representation," in Proc. of the Asia-Pacific Programming Languages and Compilers Workshop, pp.1-9, 2013. https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=6688214dab5456c75c99f8171846242e09d4f5e3
  14. Why GraalVM?. Available online: https://www.graalvm.org/why-graalvm/
  15. J. D. C. Little, "Little's Law as Viewed on Its 50th Anniversary," Operations Research, Vol.59, No.3, pp.536-549, 2011. https://doi.org/10.1287/opre.1110.0940
  16. D. I. Cho, "Stream-based API composition for stable API Gateway," Journal of Internet Computing and Services, Vol.25, No.1, pp.1-8, 2024. http://dx.doi.org/10.7472/jksii.2024.25.1.1
  17. A. Ismail, A. Y. Ananta, S. N. Arief and E. N. Hamdana, "Performance Testing Sistem Ujian Online Menggunakan Jmeter Pada Lingkungan Virtual," Jurnal Informatika Polinema, Vol.9. No.2, pp.159-164, 2023. https://doi.org/10.33795/jip.v9i2.1190
  18. M. Sipek, D. Muharemagic, B. Mihaljevic and A. Radovan, "Enhancing Performance of Cloud-based Software Applications with GraalVM and Quarkus," in Proc. of 2020 43rd International Convention on Information, Communication and Electronic Technology, pp.1746-1751, 2020. https://doi.org/10.23919/MIPRO48935.2020.9245290
  19. O. Selajev, "Pedal to the metal: High-performance Java with GraalVM Native Image,", Java Magazine, 2021. Available online: https://blogs.oracle.com/javamagazine/post/pedal-to-the-metal-high-performance-java-with-graalvm-native-image
  20. Project Reactor. Available online: https://projectreactor.io/
  21. Netty Project. Available online: https://netty.io/