Spring Boot- ja Quarkus-sovelluskehyksien vertailu Camel-integraatioiden ajamiseen Kubernetes-klusterissa
Holja, Hannes (2023)
Holja, Hannes
2023
Tietojenkäsittelyopin maisteriohjelma - Master's Programme in Computer Science
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-05-24
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202304254429
https://urn.fi/URN:NBN:fi:tuni-202304254429
Tiivistelmä
Tässä tutkielmassa selvitetään Quarkus-kehyksen sopivuutta Camel-integraatioiden ajamiseen Docker-konteissa. Apache Camel on Javalla toteutettu integraatiokehys ja Camel Quarkus on sen konversio Quarkukselle. Ongelmana on ollut ajaa integraatioiden eri osia Docker-kontitettuina mikropalveluina, koska Java-pohjaiset ohjelmat tyypillisesti käyttävät melko paljon muistia.
Tutkielman ensimmäisessä osassa esitellään mikropalveluarkkitehtuuria, kontitusta, Kuberne-testa ja tapoja toteuttaa mikropalveluarkkitehtuuria Javalla. Lisäksi esitellään Spring ja Spring Boot. Spring Boot on erittäin käytetty Java-kehys ja voidaan nähdä de facto kehyksenä myös mikropalveluille Javalla. Tämän jälkeen esitellään Oraclen GraalVM-projektia, joka mahdollistaa esimerkiksi Java-tavukoodin kääntämisen natiiviajotiedostoksi, joka käyttää vähemmän muistia ja käynnistyy nopeammin. GraalVM:n tulisi tuoda helpotusta Java-ohjelmien toteutukseen mikropalveluina. Quarkus on Java-kehys, joka pyrkii helpottamaan Javan käyttöä uusien ohjelmis-tokehitystrendien käytössä, kuten kontti ja Kubernetes. Toisin kuin monet muut Java-kehykset, Quarkus pyrkii tekemään mahdollisimman paljon prosessointia jo koontikäännösvaiheessa, tavoitteena parantaa ohjelmien käynnistysaikaa ja resurssienkäyttöä. Quarkus hyödyntää GraalVM:n natiivikääntötyökalua ja helpottaa sen käytössä. Toisessa osassa esitellään järjes-telmäintegraatioiden teoriaa ja Apache Camel -kehystä.
Tutkielman lopussa esitellään Spring Boot ja Quarkus -kehyksen vertailu. Vertailussa on esitelty integraatioskenaario kuvitteelliselle verkkokaupalle. Integraatiot on toteutettu Camelilla ja niitä ajetaan Spring Bootin ja Quarkuksen päällä. Vertailussa on kolme pääkategoriaa: Spring Boot, Quarkus JVM ja Quarkus Native. Lisäksi katsotaan, miten nämä eri versiot käyttäytyvät, kun niille määritellään yhä tiukempia muistirajauksia. Vertailussa katsotaan muistinkäytön lisäksi käynnistysaikaa ja prosessorinkäyttöä.
Tulokset näyttävät, että Quarksen päällä ajettaessa testi-integraatiot käyttävät huomattavasti vähemmän muistia ja käynnistyvät nopeammin kuin Spring Bootin päällä. Varsinkin Quarkus-projektin omalla GraalVM-distribuutio Mandrelilla natiivikuviksi käännetyt integraatiot ovat nopeita käynnistymään ja vaativat vähemmän palvelinresursseja.
Tutkielman ensimmäisessä osassa esitellään mikropalveluarkkitehtuuria, kontitusta, Kuberne-testa ja tapoja toteuttaa mikropalveluarkkitehtuuria Javalla. Lisäksi esitellään Spring ja Spring Boot. Spring Boot on erittäin käytetty Java-kehys ja voidaan nähdä de facto kehyksenä myös mikropalveluille Javalla. Tämän jälkeen esitellään Oraclen GraalVM-projektia, joka mahdollistaa esimerkiksi Java-tavukoodin kääntämisen natiiviajotiedostoksi, joka käyttää vähemmän muistia ja käynnistyy nopeammin. GraalVM:n tulisi tuoda helpotusta Java-ohjelmien toteutukseen mikropalveluina. Quarkus on Java-kehys, joka pyrkii helpottamaan Javan käyttöä uusien ohjelmis-tokehitystrendien käytössä, kuten kontti ja Kubernetes. Toisin kuin monet muut Java-kehykset, Quarkus pyrkii tekemään mahdollisimman paljon prosessointia jo koontikäännösvaiheessa, tavoitteena parantaa ohjelmien käynnistysaikaa ja resurssienkäyttöä. Quarkus hyödyntää GraalVM:n natiivikääntötyökalua ja helpottaa sen käytössä. Toisessa osassa esitellään järjes-telmäintegraatioiden teoriaa ja Apache Camel -kehystä.
Tutkielman lopussa esitellään Spring Boot ja Quarkus -kehyksen vertailu. Vertailussa on esitelty integraatioskenaario kuvitteelliselle verkkokaupalle. Integraatiot on toteutettu Camelilla ja niitä ajetaan Spring Bootin ja Quarkuksen päällä. Vertailussa on kolme pääkategoriaa: Spring Boot, Quarkus JVM ja Quarkus Native. Lisäksi katsotaan, miten nämä eri versiot käyttäytyvät, kun niille määritellään yhä tiukempia muistirajauksia. Vertailussa katsotaan muistinkäytön lisäksi käynnistysaikaa ja prosessorinkäyttöä.
Tulokset näyttävät, että Quarksen päällä ajettaessa testi-integraatiot käyttävät huomattavasti vähemmän muistia ja käynnistyvät nopeammin kuin Spring Bootin päällä. Varsinkin Quarkus-projektin omalla GraalVM-distribuutio Mandrelilla natiivikuviksi käännetyt integraatiot ovat nopeita käynnistymään ja vaativat vähemmän palvelinresursseja.