Kuidas Tokopedia-Lite kasutab GraphQL-i

https://www.bram.us/2017/06/27/full-stack-react-graphql-tutorial/

Tokopedias rakendame kliendirahulolu saavutamiseks palju nutikaid tehnoloogiaid. GraphQL on üks tehnoloogiaid, mida me sel eesmärgil rakendasime.

GraphQL

Enne kui selgitame, kuidas seda Tokopedias rakendasime, selgitame, mis on GraphQL. Meil on järgmine kokkuvõte GraphQL ametlikul veebisaidil.

https://graphql.org/
GraphQL on API-de päringkeel ja käitusaeg nende päringute täitmiseks teie olemasolevate andmetega. GraphQL pakub teie API-s sisalduvate andmete täielikku ja arusaadavat kirjeldust, annab klientidele õiguse küsida täpselt seda, mida nad vajavad, ja mitte midagi muud, lihtsustab API-de arendamist aja jooksul ja võimaldab võimsaid arendajariistu.

Põhimõtteliselt on GraphQL Facebookis pakutav uus paradigma andmete serverist kliendile toomiseks. GraphQL saab kombineerida olemasoleva REST API-ga. GraphQL eksisteerib mitte REST asendamiseks, vaid probleemide lahendamiseks, mida REST ei saa lahendada.

GraphQL koos olemasoleva API-ga

Tokopedia-Lite

Tokopedia-Lite on tokopedia mobiililehe kerge versioon. Alguses ehitati koos Perliga tokopedia mobiilisait. Kliendirahulolu saavutamiseks otsustasime oma mobiilisaiti uuendada ja selle ReactJS-iga uuesti üles ehitada. Järgnev on Tokopedia-Lite'i kasutatud tehnoloogiapakk:

  1. ReactJS
  2. Veebipakett
  3. GraphQL (kliendi ja serveri jaoks kasutame Apollo)
  4. EmotsioonJS
  5. Paabel
  6. jne

* NB! Veel üks artikkel selgitab Tokopedia-Lite'i kohta põhjalikumalt

Tokopedia-Lite teekond

GraphQL - Tokopedia-Lite

Tokopedias on meil mitu hõimu, kellel kõigil on oma fookuspiirkond. Näiteks on Tribe Discovery keskendunud kasutaja abistamisele turul hõlpsalt toodete leidmisel. Tribe Digital keskendub selliste digitaalsete toodete müümisele nagu laadimine (pulsa), rongipilet, ürituse pilet jne. Seetõttu peame võib-olla ühel lehel ühele lehele helistama mitmest erinevast API-st erinevatest meeskondadest.

Tokopedia-Lite & GraphQL arhitektuur

Kodujuhtum

Kodu Tokopedia-Lite

Kui vaatame seda pilti, peame kodulehel Tokopedia-Lite vähemalt helistama viiest erinevast API-st. Kui Tokopedia-Lite poleks GraphQL-i kasutanud, oleks kliendi ja serveri vahel 5 edasi-tagasi võrku, mis muudaks meie kodulehe aeglaseks ja paneks kasutaja ootama liiga kaua, et meie koduleht täielikult renderdataks. Kuna aga me kasutame GraphQL-i Tokopedia-Lite'is, vajab meie klient ainult ühte API-kõne serverisse ja ülejäänu teeb GraphQL-server (tehke 5x API-kõne 5-le erinevale API-le). See muudab Tokopedia Lite kiiremaks ja tõhusamaks.

Vahemälu

Mõnel juhul ei pea andmete hankimiseks kõik päringud helistama teistele API-dele. Tokopedias on meil API, mis pakub andmeid meie turul olevate tootekategooriate kohta. Kuna neid andmeid ei värskendata sageli, otsustasime need vahemällu salvestada meie GraphQL-serverisse.

Iga mainCategoriesQueries päring lahendatakse kõigepealt meie vahemälu kontrollimisega. Puhverdatud andmete olemasolu korral tagastab GraphQL väärtuse vahemälust kohe. Küsimus on selles, kuidas me seda teeme? Tegelikult kasutame vahemäluserverina ainult redist

RedisVahemälu mehhanism

Tokopedias on meil palju hämmastavaid ja ütlemata lugusid. Oleme oma klientide rahuldamiseks alati valmis proovima erinevaid meetodeid. Kas teil on mingeid soovitusi selle järgmisele tasemele viimiseks? Kirjutage julgelt kommentaaridesse või võite meiega liituda! Lisateavet leiate meie karjäärilehelt.