SlideShare a Scribd company logo
1 of 20
Odmor za REST uz
Karlo Novak, SV Group d.o.o.
karlo.novak@svgroup.hr
• REST i ostala klasika
• RPC
• gRPC, Protobuf, HTTP2
• gRPC i Java
• The great showdown!
– gRPC, Thrift, Spring MVC, JAX-WS
• ...i mikroservisi
Sadržaj
• Sučelje za pristup podacima ili funkcionalnostima
neke aplikacije/sustava
• API = REST ?
– Bitka za naziv REST je izgubljena! 
API naš svagdašnji
Vrste API-a
REST RPC SOAP
Serijalizacija JSON, XML Binary XML
Tipovi - XML-RPC
JSON-RPC
Custom
Document
RPC
Implementacije JAX-RS
Spring MVC REST
Play Framework
gRPC
Thrift
HttpInvoker
JAX-WS
Spring WS
REST RPC SOAP
Serijalizacija JSON, XML Binary XML
Tipovi - XML-RPC
JSON-RPC
Custom
Document
RPC
Implementacije JAX-RS
Spring MVC REST
Play Framework
gRPC
Thrift
HttpInvoker
JAX-WS
Spring WS
REST
Vi stvarno pišete REST servise?
• Fokus na akcijama, ne resursima
• Contract između klijenta i servera
• Nije nužno vezan uz HTTP
• Najčešće rabi binarne protokole
– Protobuf, TBinary, CBOR
• Postoji dugi niz godina...
– Java RMI, Spring HttpInvoker, NFS, XML-RPC,
CORBA itd.
RPC
• RPC framework iz Google-a
• HTTP/2, Protocol Buffers v3
• Protocol Buffers IDL
• Podržava 10 jezika (Java, C, nodejs...)
• Out of the box security
• Mikroservisi!
gRPC
gRPC
• Google, razni jezici, neovisan o platformi
• Kao XML (samo „kao”!) no brži, manji i jednostavniji
Protobuf
- čitljivost
- podrška
- brz
- shematiziran
- strong typing
Protobuf
Predefinirani tipovi, defaultne vrijednosti verzioniranje, višejezičnost....
• Binaran prijenos
• Multiplexing
HTTP/2
• Kompresija headera
• Bidirectional streaming
• Baziran na Nettyu
• Maven plugin (protoc)
• Blocking, Future, Observer stub
gRPC i Java
The great showdown!
• gRPC vs Thrift vs Spring Boot (MVC - JSON) vs JAX-WS
(CXF)
• Stress test API-a koji prima request:
– Integer requestId, String sender, String greeting
• I vraća response:
– Integer requestId, Boolean success
50 korisnika, 20.000 iteracija, 1.000.000 requestova
https://github.com/karlonovak/grpc-javacro17
Spring MVC REST 217 sec.
Thrift 42 sec.gRPC 44 sec.
JAX –WS, CXF 447 sec.
Obrada 1.000.000 requestova
• Višejezičnost & višeplatformnost
• Odaberite jezik koji odgovara problemu/servisu
• Lagana izmjena i kombiniranje tehnologija
generiranjem klijenata i servera
• Performanse!
– Mikroservisi su teški na HTTP pozivima
– HTTP2 i Protobuf čine razliku
MIKROSERVISI!!!
Zaključak
• (punokrvni) REST je kompliciran
• RPC je fleksibiliniji
• gRPC je brz, jako brz
• Zamjena za REST i JSON?
– Ovisi o veličini throughputa
– Ne podržava browsere (još)
Nije srebni metak
I want YOU to ask a question
karlo.novak@svgroup.hr
Hvala!

More Related Content

Similar to Putting REST to rest with gRPC

[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
 
REST API - iskustva iz prakse
REST API - iskustva iz prakseREST API - iskustva iz prakse
REST API - iskustva iz prakseDenis Kranjčec
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseKristijan Duvnjak
 
eZ Publish intro
eZ Publish introeZ Publish intro
eZ Publish introivrdoljak
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeMihovil Rister
 
Seminarv2 0 090609060123 Phpapp01
Seminarv2 0 090609060123 Phpapp01Seminarv2 0 090609060123 Phpapp01
Seminarv2 0 090609060123 Phpapp01google
 
Linq to Sql vs NHibernate
Linq to Sql vs NHibernateLinq to Sql vs NHibernate
Linq to Sql vs NHibernatepaki_zg
 

Similar to Putting REST to rest with gRPC (16)

[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
 
Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)Panel diskusija - usporedba Web frameworka (IT Showoff)
Panel diskusija - usporedba Web frameworka (IT Showoff)
 
REST API - iskustva iz prakse
REST API - iskustva iz prakseREST API - iskustva iz prakse
REST API - iskustva iz prakse
 
Vb script
Vb scriptVb script
Vb script
 
Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL database
 
eZ Publish intro
eZ Publish introeZ Publish intro
eZ Publish intro
 
eZ publish intro
eZ publish introeZ publish intro
eZ publish intro
 
Dizajn REST Web API-ja
Dizajn REST Web API-jaDizajn REST Web API-ja
Dizajn REST Web API-ja
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil RisterJavantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
Javantura Zagreb 2014 - Vert.x 1.3 - Mihovil Rister
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
 
Seminarv2 0 090609060123 Phpapp01
Seminarv2 0 090609060123 Phpapp01Seminarv2 0 090609060123 Phpapp01
Seminarv2 0 090609060123 Phpapp01
 
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir MuratJavantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
 
Linq to Sql vs NHibernate
Linq to Sql vs NHibernateLinq to Sql vs NHibernate
Linq to Sql vs NHibernate
 
JavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko SirotićJavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko Sirotić
 

Putting REST to rest with gRPC

  • 1. Odmor za REST uz Karlo Novak, SV Group d.o.o. karlo.novak@svgroup.hr
  • 2. • REST i ostala klasika • RPC • gRPC, Protobuf, HTTP2 • gRPC i Java • The great showdown! – gRPC, Thrift, Spring MVC, JAX-WS • ...i mikroservisi Sadržaj
  • 3. • Sučelje za pristup podacima ili funkcionalnostima neke aplikacije/sustava • API = REST ? – Bitka za naziv REST je izgubljena!  API naš svagdašnji
  • 4. Vrste API-a REST RPC SOAP Serijalizacija JSON, XML Binary XML Tipovi - XML-RPC JSON-RPC Custom Document RPC Implementacije JAX-RS Spring MVC REST Play Framework gRPC Thrift HttpInvoker JAX-WS Spring WS REST RPC SOAP Serijalizacija JSON, XML Binary XML Tipovi - XML-RPC JSON-RPC Custom Document RPC Implementacije JAX-RS Spring MVC REST Play Framework gRPC Thrift HttpInvoker JAX-WS Spring WS
  • 5. REST Vi stvarno pišete REST servise?
  • 6.
  • 7. • Fokus na akcijama, ne resursima • Contract između klijenta i servera • Nije nužno vezan uz HTTP • Najčešće rabi binarne protokole – Protobuf, TBinary, CBOR • Postoji dugi niz godina... – Java RMI, Spring HttpInvoker, NFS, XML-RPC, CORBA itd. RPC
  • 8.
  • 9. • RPC framework iz Google-a • HTTP/2, Protocol Buffers v3 • Protocol Buffers IDL • Podržava 10 jezika (Java, C, nodejs...) • Out of the box security • Mikroservisi! gRPC
  • 10. gRPC
  • 11. • Google, razni jezici, neovisan o platformi • Kao XML (samo „kao”!) no brži, manji i jednostavniji Protobuf - čitljivost - podrška - brz - shematiziran - strong typing
  • 12. Protobuf Predefinirani tipovi, defaultne vrijednosti verzioniranje, višejezičnost....
  • 13. • Binaran prijenos • Multiplexing HTTP/2 • Kompresija headera • Bidirectional streaming
  • 14. • Baziran na Nettyu • Maven plugin (protoc) • Blocking, Future, Observer stub gRPC i Java
  • 15. The great showdown! • gRPC vs Thrift vs Spring Boot (MVC - JSON) vs JAX-WS (CXF) • Stress test API-a koji prima request: – Integer requestId, String sender, String greeting • I vraća response: – Integer requestId, Boolean success 50 korisnika, 20.000 iteracija, 1.000.000 requestova https://github.com/karlonovak/grpc-javacro17
  • 16. Spring MVC REST 217 sec. Thrift 42 sec.gRPC 44 sec. JAX –WS, CXF 447 sec. Obrada 1.000.000 requestova
  • 17.
  • 18. • Višejezičnost & višeplatformnost • Odaberite jezik koji odgovara problemu/servisu • Lagana izmjena i kombiniranje tehnologija generiranjem klijenata i servera • Performanse! – Mikroservisi su teški na HTTP pozivima – HTTP2 i Protobuf čine razliku MIKROSERVISI!!!
  • 19. Zaključak • (punokrvni) REST je kompliciran • RPC je fleksibiliniji • gRPC je brz, jako brz • Zamjena za REST i JSON? – Ovisi o veličini throughputa – Ne podržava browsere (još) Nije srebni metak
  • 20. I want YOU to ask a question karlo.novak@svgroup.hr Hvala!

Editor's Notes

  1. Ja sam Karlo, danas ćemo pričati o.. Bla bla
  2. Što je API i kako funkcionira? Što se smatra API-em? Zašto se uz API automatski veže i REST...? Ima li alternative?
  3. Objasniti vrste API-a da se dobije široka slika REST je striktan, nema tipove, uglavnom rabi JSON RPC je fleksibilan, ali uglavnom se da svesti na ove kategorije i binarnu serijalizaciju SOAP se zapravo ne natječe protiv REST i RPC jer se SOAP moze rabit za RPC, ali ga treba spomenuti
  4. Objasniti što je REST - kompleksan, mnogo zahtjeva, klijenti se teško pišu - decoupling, nema contracta većina vjerojatno ne piše REST API
  5. REST preko HTTP-a koristi razne metode kao glagole tj. akcije nad resursima, fokus su resursi, kod RPC-a... (next slide)
  6. Objasniti i usporediti s REST-om
  7. Slack ima svoj RPC API koji koristi JSON, radi se o custom implementaciji (nije JSON-RPC)
  8. Objasniti što je gRPC, otkud Googleu motivacija da ga napravi i na koje se 3 stvari temelji (RPC – HTTP2 – Protobuf)
  9. Objasniti dodatno gRPC, objasniti da se klijenti generiraju za razne platforme, klijent i server su povezani. Kako bi REST ovdje izgledao?
  10. Što su protobuf, prednosti i mane
  11. Objasniti HTTP1, usporediti ga s HTTP2-om (objasniti slabosti i stvari koje ispravlja, čini boljima)
  12. Kako je gRPC implementiran u Javi i zašto ga je super koristiti iz Jave (API je super, jednostavan, podržava blocking i non-blocking, lagana Maven integracija, performanse)
  13. Mikroservisi promoviraju višejezičnost, višeplatformnost (različite baze, serveri ovisno o servisu) gRPC omogućava da se različiti servisi na temelju definicija generiraju u različite klijente servere Performanse jer se kod hrpe poziva HTTP 1 i 2 i JSON i Protobuf razlikuju