V roce 2015 představil Google svůj framework gRPC. Jak už název napovídá, jedná se o implementaci RPC neboli Remote Procedure Call.
Než začnu testovat, musím vysvětlit pár zásadních novinek, které gRPC přinesl. Framework je postavený nad HTTP/2 a využívá nemalé množství novinek tohoto protokolu (více o HTTP/2 v RFC nebo na Google Developers). Tak jako REST a json jde dohromady i gRPC a Protocol Buffers. Protocol buffers je nový binární formát pro serializaci rovněž od Googlu.
Každého testera určitě potěší, že gRPC je silně typové. Nemůže se tedy stát, že server očekává číslo a místo toho dostane string. Právě díky tomu je volání rychlejší, jednodušší a kratší. Má ovšem i několik nevýhod, třeba v současnosti chybí podpora různých nástrojů. Pomalu se to ovšem zlepšuje.
Popis a dokumentace API
Pokud jste už někdy narazili na integraci nebo testování REST API, tak víte, že vše začíná sháněním dokumentace. V lepším případě seženete od vývojáře API nějaký Swagger, v horším nějaké PDF nebo nic.
Velkou výhodou gRPC je, že shánění nějakého swagger exportu můžete kompletně hodit za hlavu. Stačí najít proto files a máte všechno co potřebujete. Ty totiž popisují rozhraní jednotlivých zpráv včetně jejich typů.
Jak na testování gRPC?
Nástrojů na testování gRPC je vícero – třeba Kreya, Insomnia, Wombat nebo BloomRPC. V Ackee používáme gRPC na dvou velkých projektech (FlashSport a FlashNews) a k volání a dekódování používáme BloomRPC. Níže popíšu, jak si nástroj zprovoznit a používat.
Také máme postavené performance testy na gRPC a k nim používáme nástroje k6 a ghz. Oba jsou open source a používáme je na trochu jiné účely. K6 na komplikovanější a custom testy a ghz na jednodušší testy. Ale o tom někdy příště.
BloomRPC
Pojďme si spolu lokálně rozjet gRPC v Nodu s pomocí BloomRPC. K tomu, aby vám to lokálně fungovalo, je potřeba mít již nainstalovaný Node.
Až si budete rozjíždět vlastní projekt v BloomRPC, dejte pozor na automatické vyplňování stringů, které je potřeba opravit před spuštěním.
- Nainstalujte si BloomPRC.
- Naklonujte si repozitář
$ git clone -b v1.35.0
- Ve složce dynamic_codegen si nainstalujte npm pomocí
$ npm install
- Rozjeďte si server
$ node greeter_server.js
- V dalším terminálovém okně si spusťte klienta
$ node greeter_client.js
Odpověď by měla být Greeting: Hello World
6. Otevřete si BloomRPC a nastavte si Import Path podle toho, kam jste si naklonovali repozitář.
7. Nyní klikněte na Import protos a přímo ve složce protos vyberte všechny proto dokumenty. Tím se BloomRPC dozví komunikační rozhraní.
8. Nastavte si URL na localhost:50051. Na té nám poběží grpc server.
9. Nyní si můžeme spustit náš server Greeter. Zvolte si SayHello soubor a spusťte ho pomocí ikony play.
10. Hotovo :)
Na závěr
Na gRPC jsem přecházela z RESTu, který jsem testovala přes nástroj Postman. Zpětně musím přiznat, že mi Postman přišel jednodušší. Zároveň disponuje funkcemi, které BloomRPC ani jiné nástroje zatím nemají, jako je skriptování, automatické testy, mockování dat atp. Na tyhle funkce si budeme ještě muset počkat.