Nowadays when REST is popping out everywhere and every single API is a REST service, a single mention to RPC seems like a time travel into the past. In the shadows of REST's glory, Google has quietly made and open sourced it's RPC framework (intuitively) called gRPC under the slogan "boilerplate to high-performance scalable APIs". Considering popular names already using it, looks like there's much more to a story than it seems. What's it all about? What's wrong with JSON and REST? And why does HTTP matter?
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Need for seamless communication between web browser and back-end server has resulted in technology called WebSocket. In this presentation we will see what is WebSocket and how can we leverage Spring framework and STOMP (Streaming Text Oriented Messaging Protocol) to display GPS coordinates on OpenLayers map in real time.
Log, or historical storage of system events, has always occupied central place in architectures of all traditional databases and analytical systems, but nowadays it serves more and more as backbone of modern distributed systems. Some of architectures and tools which use this type of data storage will be presented – Kafka message broker, Datomic database, CQRS/Event-sourcing architecture …
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
Sa najnovijom generacijom pametnih tehnologija, sve više i više uredjaja ima potrebu za podacima neophodnim za njihovu osnovnu funkcionalnost. Pametni satovi, frižideri, garažna vrata su samo neki od njih.
Razvoj i održavanje API backend aplikacije za usluživanje nekoliko generacija uređaja i njihovih specifičnih potreba postalo je veoma teško i skupo.
GraphQL pruža alternativu i promenu u paradigmi izmeštanjem odgovornosti za strukturu podataka u API pozivima ka samom klijentu. Ovo obezbedjuje optimizaciju u prenosu podataka isključujući nepotrebne podatke i u isto vreme, smanjuje kompleksnost API poziva i metoda što ujedno ubrzava i olakšava održavanje istih.
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
Description and analysis of MEAN stack and underlying technologies (Mongo DB, Express, Angular and Node JS). Review of development tools & techniques. Performance, best practices. Common usage scenarios, pros and cons. How to use it, when to use it, when not to use it.
Need for seamless communication between web browser and back-end server has resulted in technology called WebSocket. In this presentation we will see what is WebSocket and how can we leverage Spring framework and STOMP (Streaming Text Oriented Messaging Protocol) to display GPS coordinates on OpenLayers map in real time.
Log, or historical storage of system events, has always occupied central place in architectures of all traditional databases and analytical systems, but nowadays it serves more and more as backbone of modern distributed systems. Some of architectures and tools which use this type of data storage will be presented – Kafka message broker, Datomic database, CQRS/Event-sourcing architecture …
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
Sa najnovijom generacijom pametnih tehnologija, sve više i više uredjaja ima potrebu za podacima neophodnim za njihovu osnovnu funkcionalnost. Pametni satovi, frižideri, garažna vrata su samo neki od njih.
Razvoj i održavanje API backend aplikacije za usluživanje nekoliko generacija uređaja i njihovih specifičnih potreba postalo je veoma teško i skupo.
GraphQL pruža alternativu i promenu u paradigmi izmeštanjem odgovornosti za strukturu podataka u API pozivima ka samom klijentu. Ovo obezbedjuje optimizaciju u prenosu podataka isključujući nepotrebne podatke i u isto vreme, smanjuje kompleksnost API poziva i metoda što ujedno ubrzava i olakšava održavanje istih.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
Predavanje iz Dinamičkih web aplikacija, 10. predavanje
Video: https://www.youtube.com/watch?v=9Nx_yF9BMOM&index=11&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L
Tema: AJAX
Datum snimanja: 12.5.2016
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
Prezentacija pokriva sljedeće teme:
- Što je REST Web API?
- Resursi i njihove reprezentacije
- Dizajn API-ja baziranih na hipermediji (strategije, hipermedija formati, semantika, procedura)
- HTTP i REST
- Primjer(i) RESTful Web API-ja
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Javantura, Zagreb, 2014.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
Predavanje iz Dinamičkih web aplikacija, 10. predavanje
Video: https://www.youtube.com/watch?v=9Nx_yF9BMOM&index=11&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L
Tema: AJAX
Datum snimanja: 12.5.2016
Panel diskusija - usporedba Web frameworka (IT Showoff)IT Showoff
Kod izrade web projekta postoje razne mogućnosti odabira frameworka na kojem će se projekt bazirati. Mi smo odlučili izdvojili pet glavnih frameworka te oko njih izgraditi kvalitetnu panel diskusiju.
Vjerujemo da većina developera koji će sudjelovati na IT Showoff konferenciji su barem u jednom trenutku svoje karijere radili web site ili web aplikaciju na nekom od odabranih frameworka. Isto tako, vjerojatnost da su koristili, i temeljito isprobali sve njih, je vrlo mala. Zato nam je cilj putem kompetentnih stručnjaka pokušati publici prenijeti iskustva vezana za pojedine tehnologije, njihova osnovna svojstva, prednosti i mane.
Panelisti su svi od reda pravi majstori svog zanata, te će usporedno proći važna svojstva svakog frameworka i usporediti ga s drugima.
Zašto je REST stil programske arhitekture tako popularan za realizaciju otvorenih informacijskih sustava? Temeljem iskustava stečenih kroz implementaciju ISVU REST API-ja (https://www.isvu.hr/api/) pokazan je postupak kako se REST API može realizirati te na koje detalje treba posebno paziti.
Auditing of business applications is very important especially in online banking because we are working with monetary transactions. Privredna banka Zagreb had an requirement
to implement a flexible system to audit user activity in our online banking for SME clients especialy since are authorization model was rather complex, for that we decided to use api with Java filters and intereceptors on are web application and for storage system we choosed MongoDB NoSQL database. In this presentation we are going to show you how we did it.
Prezentacija pokriva sljedeće teme:
- Što je REST Web API?
- Resursi i njihove reprezentacije
- Dizajn API-ja baziranih na hipermediji (strategije, hipermedija formati, semantika, procedura)
- HTTP i REST
- Primjer(i) RESTful Web API-ja
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Javantura, Zagreb, 2014.
Konferencija Javantura Zagreb 2014 by HUJAK
Vert.x – asinkroni, skalabilni i poliglotni framework nove generacije by Mihovil Rister
Vert.x (vertx.io) je relativno novi, asinkroni, poliglotni framework uvjetovan događajima te baziran na JVM-u, a svojevremeno jedan od najpraćenijih projekata na GitHubu. Također, bio je i razlog ozbiljnih napetosti između Red Hata i VMwarea, koje su umalo zaustavile projekt. Cilj ovog predavanja je predstaviti Vert.x svijet, pokazati osnove, te ponuditi najbolja iskustva, prakse i preporuke pri njegovoj uporabi.
Konferencija Javantura Zagreb 2014 by HUJAK
Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat
Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.
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
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
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
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
Ja sam Karlo, danas ćemo pričati o.. Bla bla
Što je API i kako funkcionira?Što se smatra API-em?Zašto se uz API automatski veže i REST...?Ima li alternative?
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
Objasniti što je REST- kompleksan, mnogo zahtjeva, klijenti se teško pišu
- decoupling, nema contracta
većina vjerojatno ne piše REST API
REST preko HTTP-a koristi razne metode kao glagole tj. akcije nad resursima, fokus su resursi, kod RPC-a... (next slide)
Objasniti i usporediti s REST-om
Slack ima svoj RPC API koji koristi JSON, radi se o custom implementaciji (nije JSON-RPC)
Objasniti što je gRPC, otkud Googleu motivacija da ga napravi i na koje se 3 stvari temelji (RPC – HTTP2 – Protobuf)
Objasniti dodatno gRPC, objasniti da se klijenti generiraju za razne platforme, klijent i server su povezani. Kako bi REST ovdje izgledao?
Što su protobuf, prednosti i mane
Objasniti HTTP1, usporediti ga s HTTP2-om (objasniti slabosti i stvari koje ispravlja, čini boljima)
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)
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