Kako Tokopedia-Lite koriste GraphQL

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

U Tokopediji implementiramo puno pametne tehnologije kako bismo postigli zadovoljstvo kupaca. GraphQL je jedna od tehnologija koje smo implementirali u tu svrhu.

GraphQL

Prije nego što objasnimo kako smo ga implementirali u Tokopediju, objasnit ćemo što je GraphQL. Sljedeći sažetak imamo sa službenog web mjesta GraphQL-a.

https://graphql.org/
GraphQL je jezik upita za API-je i vrijeme izvršavanja tih upita s postojećim podacima. GraphQL pruža cjelovit i razumljiv opis podataka u vašem API-ju, omogućuje klijentima da traže upravo ono što im je potrebno i ništa više, olakšava evoluciju API-ja tijekom vremena i omogućuje moćne alate za razvojne programere.

U osnovi, GraphQL je nova paradigma koju pruža Facebook za dohvaćanje podataka s poslužitelja na klijenta. GraphQL se može kombinirati s postojećim REST API-jem. GraphQL ne zamjenjuje REST, već rješava probleme koje REST ne može riješiti.

GraphQL u kombinaciji s postojećim API-jem

Tokopedia-Lite

Tokopedia-Lite lagana je verzija s mobilnog web mjesta tokopedia. U početku je s Perlom izgrađena mobilna stranica tokopedia. Da bismo postigli zadovoljstvo kupaca, odlučili smo obnoviti našu mobilnu stranicu i obnoviti je s ReactJS-om. Slijedi tehnološki paket koji koristi Tokopedia-Lite:

  1. ReactJS
  2. Webpack
  3. GraphQL (Apollo koristimo za klijenta i poslužitelja)
  4. EmotionJS
  5. Babel
  6. itd

* NB: Drugi članak će objasniti dublje o Tokopedia-Lite

Putovanje Tokopedia-Lite

GraphQL - Tokopedia-Lite

Na Tokopediji imamo više Plemena koja imaju svoje područje fokusa. Na primjer, Tribe Discovery fokusiran je na pomaganju korisniku da lakše pronađe proizvode na tržištu. Tribe Digital fokusiran je na prodaju digitalnih proizvoda poput punjenja (pulsa), karte za vlak, ulaznice za događaje itd. Stoga ćemo na jednoj stranici možda trebati nazvati više različitih API-ja iz različitih timova.

Tokopedia-Lite & GraphQL arhitektura

Kućni slučaj

Početna Tokopedia-Lite

Ako pogledamo sliku, na početnoj stranici Tokopedia-Lite, potrebno je najmanje nazvati 5 različitih API-ja. Da Tokopedia-Lite ne upotrebljava GraphQL, tada bi postojala mreža s pet obilazaka između klijenta i poslužitelja, a to bi usporilo našu početnu stranicu i učinilo da korisnik predugo čeka da potpuno u potpunosti postane naša početna stranica. Međutim, zato što koristimo GraphQL u Tokopedia-Lite, našem klijentu je potreban samo jedan API poziv poslužitelju, a GraphQL poslužitelj čini ostalo (radi 5x API poziv na 5 različitih API-ja). To Tokopedia Lite čini bržim i učinkovitijim.

Cache

U nekim slučajevima ne moraju svi upiti pozvati druge API-je da bi dobili podatke. U Tokopediji imamo API za pružanje podataka o kategorijama proizvoda na našem tržištu. Kako se ovi podaci često ne ažuriraju, pa smo ih odlučili spremiti u predmemoriju na našem GraphQL poslužitelju.

Svaki upit za mainCategoriesQueries riješit ćemo prvo provjerom predmemorije. Ako postoje predmemorirani podaci, GraphQL će odmah vratiti vrijednost iz predmemorije. Pitanje je, kako to učiniti? Zapravo koristimo samo redis kao naš predmemorijski poslužitelj

RedisMehanizam predmemorije

U Tokopediji imamo mnogo nevjerojatnih i neispričanih priča. Uvijek smo spremni isprobati različite metode kako bismo udovoljili našim kupcima. Imate li neki prijedlog da to prebacimo na višu razinu? Slobodno pišite u komentarima ili nam se možete pridružiti! Pogledajte našu stranicu o karijeri za više informacija.