GraphQL.cz/Fórum/Jak používat gRPC s GraphQL?

Jak používat gRPC s GraphQL?

Zajímalo by mě, jestli někdo má zkušenosti s kombinací gRPC a GraphQL. Vím, že gRPC je super pro rychlou komunikaci mezi servery a podporuje různé jazyky, zatímco GraphQL nabízí flexibilní dotazování na data. Ale jak to vlastně propojit? Jaké jsou nejlepší postupy, když chci mít API, které využívá gRPC pro backendové služby a GraphQL pro frontend? Mám pocit, že bych mohl využít výhod obou technologií, ale nějak se mi to nezdá úplně jasné. Měl jsem pár myšlenek, jako třeba vytvoření gRPC serveru, který by sloužil jako zdroj dat pro GraphQL server. Je to vůbec proveditelné? Jak na to? Jaké knihovny nebo frameworky byste doporučili? Máte nějaké tipy ohledně architektury nebo designu takového systému? A co výkon? Bude to mít nějaký vliv na latenci nebo zátěž serveru? Předem díky za jakékoli rady a postřehy.

133 slov
1.3 minut čtení
4. 9. 2023
Emil Rozsypal

Propojení gRPC s GraphQL je fakt zajímavý nápad a určitě proveditelný. Můžes vytvořit gRPC server, co bude poskytovat backendové služby a pak mít GraphQL server, co z toho tahá data. Takže ten GraphQL server se prostě napojí na gRPC pomocí nějakýho klienta, což ti umožní posílat dotazy na gRPC endpointy.

Když to děláš, tak se ujisti, že máš dobře navržený schéma pro GraphQL, aby bylo efektivní a splnilo potřeby frontendový aplikace. Můžeš použít knihovny jako Apollo Server pro GraphQL a třeba gRPC-Web nebo grpc-node pro komunikaci s gRPC.

Co se týče výkonu, tak můžeš mít mírný zpoždění, když to všechno spojíš dohromady, protože musíš projít víc vrstev (GraphQL -> gRPC -> databáze). Ale pokud to dobře optimalizuješ, tak bys to měl zvládnout bez velkých problémů. Je dobrý mít nějaký caching na straně GraphQL, aby ses vyhnul nadměrným voláním gRPC.

Takže shrnutí: gRPC jako backend pro služby, GraphQL jako front-end API a mezitím nějaká logika pro dotazy. Drž to modularizovaný a uvidíš, jak ti to poběží.

164 slov
1.6 minut čtení
14. 1. 2024
Dana Krejčíková

Spojení gRPC a GraphQL je určitě zajímavý přístup, jak využít výhody obou technologií. V podstatě bys mohl mít gRPC server, který obsluhuje backend logiku a pak GraphQL server, který funguje jako API pro frontend. Můžeš to udělat tak, že GraphQL server bude posílat požadavky na gRPC služby, což ti umožní efektivněji získávat data.

Co se týče knihoven, koukni na Apollo Server pro GraphQL, ten je docela populární a snadno se integruje. Pokud jde o gRPC, jestli používáš Node.js, zkus gRPC-js nebo grpc-node. Tyhle ti umožní rychle vytvořit gRPC konektory a integrovat je s tvým GraphQL serverem.

Asi nejdůležitější věc je správně navrhnout architekturu. Můžeš mít GraphQL jako gateway, která agreguje data z různých gRPC služeb. To ti pomůže udržet flexibilitu dotazování. Jen si dej pozor na latenci - každý gRPC call může přidat nějakou dobu navíc k celkovému času odpovědi, takže optimalizace volání a caching může být klíčové.

Jako bonus můžeš implementovat batching dotazů v GraphQL, aby ses vyhnul přílišnému počtu jednotlivých volání na gRPC. Každopádně to zní jako dobrý projekt, pokud chceš kombinovat rychlost a flexibilitu.

175 slov
1.8 minut čtení
14. 10. 2023
Karel Tichý

Jo, kombinace gRPC a GraphQL vypadá celkem rozumně. Můžeš to udělat tak, že si postavíš gRPC server, kde budeš mít všechny svoje backendové služby a pak k tomu přidáš GraphQL server, který bude fungovat jako fronta pro tyhle gRPC volání. Takže dotazy z frontendové aplikace půjdou nejdřív na GraphQL, ten se zeptá gRPC serveru a pak už jen vrátí data zpátky.

Doporučuji použít nějaké knihovny jako Apollo Server pro GraphQL a třeba gRPC lib pro tvé RPC volání. Výkon by měl být docela ok, i když mezi tím může být trošku latence kvůli dalšímu kroku. Ale pokud máš dobře nastavený gRPC s protobufy, tak by to nemělo být tak hrozné.

Z pohledu architektury je dobrý nápad mít GraphQL jako jediný vstup pro frontend a skrze něj volat různý backendové služby pomocí gRPC. Tím se ti ujednoduší správa API a frontend může snadno měnit, jaké data potřebuje bez zásahů do backendu. Jen si dej pozor na to, aby ses nezamotal do složitých dotazů na GraphQL, protože to může vést k výkonovým problémům.

Celkově je to proveditelný a můžeš z toho vytěžit pozitivní věci z obou světů.

184 slov
1.8 minut čtení
16. 4. 2024
Karel Tesař
GraphQL.cz/Články/Mixování API přístupů
Využití gRPC společně s GraphQL: Co potřebujete vědětPodívejte se na to, jak kombinace gRPC a GraphQL může transformovat vývoj moderních aplikací a zvýšit jejich efektivitu a výkon. Přinášíme vám komplet...
1000 slov
10 minut čtení
1. 4. 2020
Richard Kolář
Přečíst článek
Podobné otázky