GraphQL.cz/Fórum/Jak efektivně přejít z REST pollingu na GraphQL subscriptions?

Jak efektivně přejít z REST pollingu na GraphQL subscriptions?

Zajímalo by mě, jak nejlépe přejít z tradičního REST pollingu na GraphQL subscriptions. Naše aplikace v současné době hodně spoléhá na polling, abychom získávali aktuální data, ale začínáme pociťovat nedostatky, zejména co se týče efektivity a zátěže serveru. Uvažujeme tedy o přechodu na GraphQL, protože jsme slyšeli, že subscriptions mohou výrazně snížit zátěž a zajistit real-time aktualizace. Jaké jsou nejlepší praktiky pro tento přechod? Jsou nějaké konkrétní kroky nebo tipy, které bychom měli mít na paměti při implementaci subscriptions? A co je důležité zvážit ohledně správy stavu aplikace během této změny? Měli bychom se zaměřit na určité knihovny nebo rámce, které usnadňují práci s GraphQL? A co třeba podpora různých klientů a jejich interakce s naším API? Budeme potřebovat provést nějaké zásadní změny na úrovni serveru nebo stačí upravit frontend? Rád bych slyšel zkušenosti těch, kdo už tuto transformaci provedli, abychom se vyhnuli běžným chybám a zajistili hladký přechod.

149 slov
1.5 minut čtení
15. 7. 2023
Jitka Karásková

Přejít z REST pollingu na GraphQL subscriptions může být fajn krok, ale je dobré mít na paměti pár věcí. Nejprve je potřeba mít na serveru nastavený WebSocket, protože subscriptions fungují přes něj. Můžeš použít knihovny jako Apollo Server nebo Hasura, který už má podporu pro subscriptions zabudovanou. Na frontendě pak můžeš využít Apollo Client, což ti usnadní práci s daty a správou stavu.

Důležité je taky přemýšlet o tom, jak budeš spravovat stav aplikace. Ujisti se, že máš jasně definované, co se má dít při příjmu nových dat. Subscriptions ti mohou značně ušetřit zátěž, když se zbavíš pollingu, ale musíš si dávat pozor na to, aby klienti pořád nezaplavovali server žádostmi.

Pokud už máš nějaké API a chceš to propojovat, může být potřeba udělat i nějaké změny na serverové straně – přidat logiku pro zpracování subscriptions a možná upravit existující endpointy. Rozhodně doporučuji si prostudovat dokumentaci k GraphQL a podívat se na příklady implementace subscriptions – hodně to pomůže. A nakonec, testuj to pořádně, protože real-time funkce může přinést nové problémy, které nebyly při pollingu vidět.

174 slov
1.7 minut čtení
11. 7. 2024
Daniela Šilhavá

Přechod z REST pollingu na GraphQL subscriptions může být sakra výzva, ale rozhodně to za to stojí. Začněte tím, že si ujasníte, co všechno chcete přes subscriptions pokrýt. Zjistěte, jaká data se mění a jak často. Potom nastavte na serveru GraphQL endpoint s podporou subscriptions – často se používají knihovny jako Apollo Server nebo Hasura. Nebudete potřebovat radikálně měnit server, ale možná budete muset upravit schéma a přidat resolver pro subscriptions.

Na frontendu pak využijte Apollo Client nebo Relay, což vám usnadní práci s real-time daty. Při implementaci subscribers dávejte pozor na to, jak spravujete stav aplikace – může se stát, že budete potřebovat nějaký state management (Redux, MobX apod.), abyste to udrželi v pořádku, když se data změní.

Nesnažte se to převést všechno najednou. Začněte s jedním nebo dvěma typy dat a postupně rozšiřujte. Také nezapomeňte testovat výkon, abyste zjistili, jestli se zátěž serveru opravdu snížila.

Co se týče podpory různých klientů – pamatujte, že pokud máte vícero klientských aplikací, budete potřebovat zajistit jejich kompatibilitu s novým API. Dobrá dokumentace a příklady použití vám hodně pomůžou. A jak říkám – nejdůležitější je postupovat krok za krokem a nesnažit se o dokonalost hned na začátku.

194 slov
1.9 minut čtení
18. 10. 2024
Bedřich Vejvoda

Přechod z REST pollingu na GraphQL subscriptions může být dost zásadní, ale není to nemožný úkol. První věc, co bych doporučil, je zjistit, kde máte v aplikaci největší problém s pollingem. Může být fajn začít s tím, co je nejvíc potřeba v reálném čase. Pak si ujasněte, jaké události chcete sledovat a jak budou fungovat vaše subscriptions.

Na serverové straně budete potřebovat GraphQL server, který podporuje subscriptions. Můžete zvážit Apollo Server nebo některé další alternativy, které to umí. Je dobrý mít websocket implementaci, protože subscriptions většinou používají právě websockets pro real-time komunikaci.

Pokud jde o frontend, tam byste mohli použít Apollo Client nebo Relay, což jsou fajn knihovny pro práci s GraphQL. Tyhle knihovny mají zabudovanou podporu pro subscriptions a usnadňují práci se stavem aplikace. Taky nezapomeňte na správu stavu – budete potřebovat nějaký způsob, jak reagovat na nové data přicházející přes subscriptions a aktualizovat UI.

Důležitý je i testování – zkuste to nasadit na nějaké menší části aplikace a sledujte výkon a chování. Snažte se udělat přechod postupně, aby bylo možné snadno identifikovat problémy. No a nakonec, mějte na paměti, že ne všechny funkce z pollingu budou mít přímou analogii v subscriptions, tak se připravte na nějaké úpravy logiky vaší aplikace.

199 slov
2 minut čtení
18. 12. 2022
Antonín Janoušek
GraphQL.cz/Články/GraphQL vs. REST
GraphQL Subscription vs. REST Polling: Jak zvolit správnou strategii?Zkoumání rozdílů mezi GraphQL Subscription a tradičním pollingem v REST API s praktickými příklady a tipy pro výběr vhodné metody.
1000 slov
10 minut čtení
11. 6. 2020
Lucie Kovářová
Přečíst článek
Podobné otázky