GraphQL- ja REST-rajapintojen performanssien vertailu
Kujanen, Jussi (2021)
Kujanen, Jussi
2021
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
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ä
2021-05-10
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202104193135
https://urn.fi/URN:NBN:fi:tuni-202104193135
Tiivistelmä
Tässä työssä vertaillaan kahta saman toiminnallisuuden toteuttavaa web-rajapintaa (engl. application programming interface, API). Ensimmäinen API on toteutettu noudattaen Roy Fieldingin määrittelemää Representational State Transfer-arkkitehtuuria (REST). Toinen rajapinta on toteutettu käyttäen Facebookin kehittämää GraphQL-querykieltä. Työssä vertaillaan rajapintojen viivettä ja palautettujen tavujen määrää kahdessa eri tehtävässä.
Työssä esitellään ensin REST-periaatteet, sekä REST-rajapinnan käyttöä ja sen heikkouksia. Työssä todetaan REST-rajapinnan aiheuttavan tietyissä tilanteissa käyttäjälle rasitusta viiveen ja latenssin osa-alueella. Tämän jälkeen esitellään GraphQL-querykielen periaatteellinen toiminta ja käyttö, sekä GraphQL-palvelimen toiminta. Osiossa tuodaan esille GraphQL:n ominaispiirre: vastuun siirtäminen palvelimelta asiakkaalle.
Teoriaosuuden jälkeen työssä tarkastellaan aiempia tutkimuksia, joissa REST- ja GraphQL-rajapintoja on vertailtu. Aiempien tutkimusten pohjalta havaitaan GraphQL:n suoriutuvan paremmin kuin REST-rajapinta, kun palvelimelta haetaan pieniä määriä dataa.
Tutkimusosuudessa esitellään tutkittava järjestelmä, tutkimuksessa käytetyt mittarit ja työkalut, sekä rajapinnoille suoritettavien tehtävien määritelmät. Vertailussa havaitaan GraphQL:n suoriutuvan paremmin kaikilla mittareilla molemmissa tapauksissa. GraphQL:n viive ensimmäisessä tehtävässä oli noin 7.7 \%, ja toisessa tehtävässä noin 2.5 \% pienempi kuin REST-rajapinnan. Tavuja GraphQL palautti ensimmäisessä tehtävässä 11.7 \%, ja toisessa tehtävässä 96 \% vähemmän kuin REST-rajapinta.
Suurimmat vaikuttajat tämän vertailun tulosten kannalta arvioidaan olevan vertailussa käytetyn palvelimen tehottomuus sekä asiakkaan ja palvelimen pieni round-trip time (RTT). Jos palvelimella käytetty laskenta-aika on suuri, RTT:n merkitys korostuu. Aiemmissa tutkimuksissa tilanne on pääsääntöisesti ollut päinvastainen: palvelimet ovat olleet tehokkaampia kuin tässä vertailussa käytetty palvelin, ja aiemmissa tutkimuksissa asiakkaan ja palvelimen RTT on ollut korkeampi.
Työssä esitellään ensin REST-periaatteet, sekä REST-rajapinnan käyttöä ja sen heikkouksia. Työssä todetaan REST-rajapinnan aiheuttavan tietyissä tilanteissa käyttäjälle rasitusta viiveen ja latenssin osa-alueella. Tämän jälkeen esitellään GraphQL-querykielen periaatteellinen toiminta ja käyttö, sekä GraphQL-palvelimen toiminta. Osiossa tuodaan esille GraphQL:n ominaispiirre: vastuun siirtäminen palvelimelta asiakkaalle.
Teoriaosuuden jälkeen työssä tarkastellaan aiempia tutkimuksia, joissa REST- ja GraphQL-rajapintoja on vertailtu. Aiempien tutkimusten pohjalta havaitaan GraphQL:n suoriutuvan paremmin kuin REST-rajapinta, kun palvelimelta haetaan pieniä määriä dataa.
Tutkimusosuudessa esitellään tutkittava järjestelmä, tutkimuksessa käytetyt mittarit ja työkalut, sekä rajapinnoille suoritettavien tehtävien määritelmät. Vertailussa havaitaan GraphQL:n suoriutuvan paremmin kaikilla mittareilla molemmissa tapauksissa. GraphQL:n viive ensimmäisessä tehtävässä oli noin 7.7 \%, ja toisessa tehtävässä noin 2.5 \% pienempi kuin REST-rajapinnan. Tavuja GraphQL palautti ensimmäisessä tehtävässä 11.7 \%, ja toisessa tehtävässä 96 \% vähemmän kuin REST-rajapinta.
Suurimmat vaikuttajat tämän vertailun tulosten kannalta arvioidaan olevan vertailussa käytetyn palvelimen tehottomuus sekä asiakkaan ja palvelimen pieni round-trip time (RTT). Jos palvelimella käytetty laskenta-aika on suuri, RTT:n merkitys korostuu. Aiemmissa tutkimuksissa tilanne on pääsääntöisesti ollut päinvastainen: palvelimet ovat olleet tehokkaampia kuin tässä vertailussa käytetty palvelin, ja aiemmissa tutkimuksissa asiakkaan ja palvelimen RTT on ollut korkeampi.
Kokoelmat
- Kandidaatintutkielmat [8453]