SlideShare a Scribd company logo
1 of 127
Download to read offline
@kgd_net @VladimirD_42
REST API vs gRPC
Which One Should You Use
in Breaking a Monolith
Vladimir Dejanović
26 September 2018
@VladimirD_42
Vladimir Dejanović
Let’s Meet
@VladimirD_42
vladimir@itshark.xyz
http://itshark.xyz
@kgd_net
@VladimirD_42
Vladimir Dejanović
Let’s Meet
http://itshark.xyz
@kgd_net
@VladimirD_42
Vladimir Dejanović
Let’s Meet
@kgd_net
@VladimirD_42
Vladimir Dejanović
Let’s Meet
and Others...
@kgd_net
@VladimirD_42@kgd_net
Agenda
@VladimirD_42@kgd_net
Agenda
REST
@VladimirD_42@kgd_net
Agenda
gRPC
REST
@VladimirD_42@kgd_net
Agenda
gRPC
REST vs gRPC in breaking Monolith
REST
@VladimirD_42@kgd_net
Agenda
gRPC
Questions
REST vs gRPC in breaking Monolith
REST
@VladimirD_42@kgd_net
What is REST?
@VladimirD_42@kgd_net
REST
@VladimirD_42@kgd_net
REST
http://www.ics.uci.edu/~fielding/pubs/di
ssertation/rest_arch_style.htm
@VladimirD_42@kgd_net
REST
Client-Server Architecture
@VladimirD_42@kgd_net
REST
Statelessness
Client-Server Architecture
@VladimirD_42@kgd_net
REST
Cacheability
Statelessness
Client-Server Architecture
@VladimirD_42@kgd_net
REST
Cacheability
Layered System
Statelessness
Client-Server Architecture
@VladimirD_42@kgd_net
REST
Cacheability
Code on Demand (Optional)
Layered System
Statelessness
Client-Server Architecture
@VladimirD_42@kgd_net
REST
Cacheability
Code on Demand (Optional)
Layered System
Statelessness
Uniform Interface
Client-Server Architecture
@VladimirD_42@kgd_net
REST in Real Life
@VladimirD_42@kgd_net
REST in Real Life
@VladimirD_42@kgd_net
REST in Real Life
@VladimirD_42@kgd_net
REST in Real Life
@VladimirD_42@kgd_net
REST in Real Life
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource(collectionResourceRel = "people",
path = "people")
public interface PersonRepository
extends MongoRepository<Person, String> {
List<Person> findByLastName(@Param("name") String name);
}
@VladimirD_42@kgd_net
REST in Real Life
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
@RepositoryRestResource(collectionResourceRel = "people",
path = "people")
public interface PersonRepository
extends MongoRepository<Person, String> {
List<Person> findByLastName(@Param("name") String name);
}
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
What is gRPC?
@VladimirD_42@kgd_net
gRPC
gRPC Remote Procedure Call
@VladimirD_42@kgd_net
Remote Procedure Call
@VladimirD_42@kgd_net
Remote Procedure Call
RMI
@VladimirD_42@kgd_net
Remote Procedure Call
RMI
CORBA
@VladimirD_42@kgd_net
https://grpc.io/img/landing-2.svg
@VladimirD_42@kgd_net
https://grpc.io/img/landing-2.svg
@VladimirD_42@kgd_net
https://grpc.io/img/landing-2.svg
@VladimirD_42@kgd_net
https://grpc.io/img/landing-2.svg
@VladimirD_42@kgd_net
https://grpc.io/img/landing-2.svg
@VladimirD_42@kgd_net
gRPC
C++
@VladimirD_42@kgd_net
gRPC
C++ Java
@VladimirD_42@kgd_net
gRPC
C++ Java Python
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go Ruby
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go Ruby C#
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
Android Java
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
Objective-CAndroid Java
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
Objective-CAndroid Java
PHP
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
Objective-CAndroid Java
PHP Dart
@VladimirD_42@kgd_net
gRPC
C++ Java Python
Go
Node.js
Ruby C#
Objective-CAndroid Java
PHP Dart
@VladimirD_42@kgd_net
REST vs gRPC
in breaking Monolith
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
ref:http://assets.bonappetit.com/photos/57d32e45bd794aa9132639a4/master/w_625,c_limit/lernert-sander-cubes-crop2.jpg
@VladimirD_42@kgd_net
REST vs gRPC
@VladimirD_42@kgd_net
REST vs gRPC
@VladimirD_42@kgd_net
REST vs gRPC
@VladimirD_42@kgd_net
REST vs gRPC
Both support multiple Languages
@VladimirD_42@kgd_net
REST vs gRPC
Both support multiple Languages
REST support much more
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
REST vs gRPC
https://grpc.io/
@VladimirD_42@kgd_net
REST vs gRPC
https://grpc.io/
https://github.com/grpc/grpc-java
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
REST vs gRPC
REST support more than 4 types
@VladimirD_42@kgd_net
gRPC
@VladimirD_42@kgd_net
gRPC
IDL
@VladimirD_42@kgd_net
REST vs gRPC
Schema is “optional” in REST
@VladimirD_42@kgd_net
REST vs gRPC
Schema is “optional” in REST
REST code or schema first
@VladimirD_42@kgd_net
REST vs gRPC
Schema is “optional” in REST
REST code or schema first
gRPC is schema first
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
...
message TransferMoney {
int32 trans_id = 1;
int32 from_account_number = 2;
int32 to_account_number = 3;
double ammount = 4;
string message = 5;
}
service Bank {
rpc Transfer(TransferMoney) returns (TransferConfirmation);
rpc ListenToNotifications(Account) returns (stream AccountNotification);
rpc RequestTransfer(stream RequestMoney) returns (stream RequestStatus);
}
...
@VladimirD_42@kgd_net
gRPC
IDL
HTTP/2
@VladimirD_42@kgd_net
REST vs gRPC
HTTP2 backed into gRPC
@VladimirD_42@kgd_net
REST vs gRPC
HTTP2 backed into gRPC
Extra work “needed” for REST
@VladimirD_42@kgd_net
gRPC
IDL
HTTP/2
Protobuf 3
@VladimirD_42@kgd_net
Protocol Buffers
http://itshark.xyz/posts/2018/7/11/Proto
col_Buffers_basic_stuff_you_need_to_kn
ow
@VladimirD_42@kgd_net
Protocol Buffers
http://itshark.xyz/posts/2018/7/11/Proto
col_Buffers_basic_stuff_you_need_to_kn
ow
https://www.youtube.com/watch
?v=oDIkgNchrVY
@VladimirD_42@kgd_net
REST vs gRPC
REST is not JSON over HTTP
@VladimirD_42@kgd_net
REST vs gRPC
JSON Proto
@VladimirD_42@kgd_net
REST vs gRPC
JSON Proto ProtoJSON
@VladimirD_42@kgd_net
REST vs gRPC
JSON Proto
@VladimirD_42@kgd_net
REST vs gRPC
JSON Proto ProtoJSON
@VladimirD_42@kgd_net
REST vs gRPC
Protocol Buffer with REST
@VladimirD_42@kgd_net
Big Difference
@VladimirD_42@kgd_net
Big Difference
REST is about Resources
@VladimirD_42@kgd_net
Big Difference
REST is about Resources
RPC is about Remote Procedure Calls
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
@VladimirD_42@kgd_net
gRPC code example
https://github.com/vladimir-dejanovic/g
rpc-bank-example
@VladimirD_42@kgd_net
REST vs gRPC
@VladimirD_42@kgd_net
REST vs gRPC
@VladimirD_42@kgd_net
REST vs gRPCWildWest
@VladimirD_42@kgd_net
REST vs gRPCWildWest
Law&Order
@VladimirD_42@kgd_net
REST vs gRPCWildWest
Law&Order
REST
@VladimirD_42@kgd_net
REST vs gRPCWildWest
Law&Order
REST
@VladimirD_42@kgd_net
REST vs gRPCWildWest
Law&Order
gRPCREST
@VladimirD_42@kgd_net
Some Questions
@VladimirD_42@kgd_net
Some Questions
Who will be consumers?
@VladimirD_42@kgd_net
Some Questions
Who will be consumers?
Mobile / Web / Other?
@VladimirD_42@kgd_net
Some Questions
What is the use case?
@VladimirD_42@kgd_net
Some Questions
What is the use case?
CRUD or Other?
@VladimirD_42@kgd_net
Some Questions
What are internal policies and rules?
@VladimirD_42@kgd_net
Some Questions
What are internal policies and rules?
Toward frameworks, protocols & others
@VladimirD_42@kgd_net
Some Questions
What is the problem
that you are solving?
@VladimirD_42@kgd_net
Thank You
@VladimirD_42
Questions
@VladimirD_42
vladimir@itshark.xyz
http://itshark.xyz
@kgd_net

More Related Content

Similar to REST API vs gRPC, which one should you use in breaking a monolith [Kdg.net 2018]

How to be a smart contract engineer
How to be a smart contract engineerHow to be a smart contract engineer
How to be a smart contract engineerOded Noam
 
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t... Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...AboutYouGmbH
 
GraphQL vs Traditional Rest API [GeeCon Prague 2018]
GraphQL vs Traditional Rest API [GeeCon Prague 2018]GraphQL vs Traditional Rest API [GeeCon Prague 2018]
GraphQL vs Traditional Rest API [GeeCon Prague 2018]Vladimir Dejanovic
 
Samza at LinkedIn
Samza at LinkedInSamza at LinkedIn
Samza at LinkedInVenu Ryali
 
Cadence: The Only Workflow Platform You'll Ever Need
Cadence: The Only Workflow Platform You'll Ever NeedCadence: The Only Workflow Platform You'll Ever Need
Cadence: The Only Workflow Platform You'll Ever NeedMaxim Fateev
 
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...Chris Richardson
 
stream-processing-at-linkedin-with-apache-samza
stream-processing-at-linkedin-with-apache-samzastream-processing-at-linkedin-with-apache-samza
stream-processing-at-linkedin-with-apache-samzaAbhishek Shivanna
 
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...CODE BLUE
 
GraphQL vs Traditional Rest API
GraphQL vs Traditional Rest APIGraphQL vs Traditional Rest API
GraphQL vs Traditional Rest APIVladimir Dejanovic
 
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)Michał Kruczek
 
Microservices Communication Patterns with gRPC
Microservices Communication Patterns with gRPCMicroservices Communication Patterns with gRPC
Microservices Communication Patterns with gRPCWSO2
 
eProsima RPC over DDS - Connext Conf London October 2015
eProsima RPC over DDS - Connext Conf London October 2015 eProsima RPC over DDS - Connext Conf London October 2015
eProsima RPC over DDS - Connext Conf London October 2015 Jaime Martin Losa
 
Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...
 Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ... Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...
Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...Big Data Spain
 
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...InfluxData
 
Oracle Goldengate for Big Data - LendingClub Implementation
Oracle Goldengate for Big Data - LendingClub ImplementationOracle Goldengate for Big Data - LendingClub Implementation
Oracle Goldengate for Big Data - LendingClub ImplementationVengata Guruswamy
 

Similar to REST API vs gRPC, which one should you use in breaking a monolith [Kdg.net 2018] (20)

How to be a smart contract engineer
How to be a smart contract engineerHow to be a smart contract engineer
How to be a smart contract engineer
 
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t... Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 
ql.io at NodePDX
ql.io at NodePDXql.io at NodePDX
ql.io at NodePDX
 
Make gRPC great again
Make gRPC great againMake gRPC great again
Make gRPC great again
 
GraphQL vs Traditional Rest API [GeeCon Prague 2018]
GraphQL vs Traditional Rest API [GeeCon Prague 2018]GraphQL vs Traditional Rest API [GeeCon Prague 2018]
GraphQL vs Traditional Rest API [GeeCon Prague 2018]
 
Samza at LinkedIn
Samza at LinkedInSamza at LinkedIn
Samza at LinkedIn
 
Cadence: The Only Workflow Platform You'll Ever Need
Cadence: The Only Workflow Platform You'll Ever NeedCadence: The Only Workflow Platform You'll Ever Need
Cadence: The Only Workflow Platform You'll Ever Need
 
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...
 
WCM Transfer Services
WCM Transfer Services WCM Transfer Services
WCM Transfer Services
 
stream-processing-at-linkedin-with-apache-samza
stream-processing-at-linkedin-with-apache-samzastream-processing-at-linkedin-with-apache-samza
stream-processing-at-linkedin-with-apache-samza
 
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM ...
 
Tribeflow on bitcoin data
Tribeflow on bitcoin dataTribeflow on bitcoin data
Tribeflow on bitcoin data
 
GraphQL vs Traditional Rest API
GraphQL vs Traditional Rest APIGraphQL vs Traditional Rest API
GraphQL vs Traditional Rest API
 
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
 
Microservices Communication Patterns with gRPC
Microservices Communication Patterns with gRPCMicroservices Communication Patterns with gRPC
Microservices Communication Patterns with gRPC
 
eProsima RPC over DDS - Connext Conf London October 2015
eProsima RPC over DDS - Connext Conf London October 2015 eProsima RPC over DDS - Connext Conf London October 2015
eProsima RPC over DDS - Connext Conf London October 2015
 
Testable Code
Testable CodeTestable Code
Testable Code
 
Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...
 Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ... Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...
Dataflows: The abstraction that powers Big Data by Raul Castro Fernandez at ...
 
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...
InfluxDB 101 – Concepts and Architecture by Michael DeSa, Software Engineer |...
 
Oracle Goldengate for Big Data - LendingClub Implementation
Oracle Goldengate for Big Data - LendingClub ImplementationOracle Goldengate for Big Data - LendingClub Implementation
Oracle Goldengate for Big Data - LendingClub Implementation
 

More from Vladimir Dejanovic

What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]
What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]
What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]Vladimir Dejanovic
 
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...Vladimir Dejanovic
 
GraphQL in Java World [Workshop RivieraDev 2019]
GraphQL in Java World [Workshop RivieraDev 2019]GraphQL in Java World [Workshop RivieraDev 2019]
GraphQL in Java World [Workshop RivieraDev 2019]Vladimir Dejanovic
 
What Users Want, A/B testing explained [CodeteCon 2018]
What Users Want, A/B testing explained [CodeteCon 2018]What Users Want, A/B testing explained [CodeteCon 2018]
What Users Want, A/B testing explained [CodeteCon 2018]Vladimir Dejanovic
 
GeeCON 2018 GraphQL vs Traditional REST API
GeeCON 2018 GraphQL vs Traditional REST APIGeeCON 2018 GraphQL vs Traditional REST API
GeeCON 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
 
Java Day Istanbul 2018 GraphQL vs Traditional REST API
Java Day Istanbul 2018 GraphQL vs Traditional REST APIJava Day Istanbul 2018 GraphQL vs Traditional REST API
Java Day Istanbul 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
 
Devoxx France 2018 GraphQL vs Traditional REST API
Devoxx France 2018 GraphQL vs Traditional REST APIDevoxx France 2018 GraphQL vs Traditional REST API
Devoxx France 2018 GraphQL vs Traditional REST APIVladimir Dejanovic
 
Java land What Users Want, A/B testing explained
Java land What Users Want, A/B testing explainedJava land What Users Want, A/B testing explained
Java land What Users Want, A/B testing explainedVladimir Dejanovic
 
Java One Secret of developing high performance website, with no budget
Java One Secret of developing high performance website, with no budgetJava One Secret of developing high performance website, with no budget
Java One Secret of developing high performance website, with no budgetVladimir Dejanovic
 
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...Vladimir Dejanovic
 
Secret of developing high performance website, with no budget in small amount...
Secret of developing high performance website, with no budget in small amount...Secret of developing high performance website, with no budget in small amount...
Secret of developing high performance website, with no budget in small amount...Vladimir Dejanovic
 
Changing wheels on moving car, from monolith to microservices by using api's V2
Changing wheels on moving car, from monolith to microservices by using api's V2Changing wheels on moving car, from monolith to microservices by using api's V2
Changing wheels on moving car, from monolith to microservices by using api's V2Vladimir Dejanovic
 
Changing wheels on moving car, from monolith to microservices by using api's
Changing wheels on moving car, from monolith to microservices by using api'sChanging wheels on moving car, from monolith to microservices by using api's
Changing wheels on moving car, from monolith to microservices by using api'sVladimir Dejanovic
 
Pain of growing up, and moving to large scale
Pain of growing up, and moving to large scalePain of growing up, and moving to large scale
Pain of growing up, and moving to large scaleVladimir Dejanovic
 

More from Vladimir Dejanovic (16)

What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]
What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]
What limitations & problems of REST API can be solved with GraphQL [jPrime 2019]
 
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...
Micronaut, Dragon-Slayer (Spring/boot) or just another framework [GeeCON Krak...
 
GraphQL in Java World [Workshop RivieraDev 2019]
GraphQL in Java World [Workshop RivieraDev 2019]GraphQL in Java World [Workshop RivieraDev 2019]
GraphQL in Java World [Workshop RivieraDev 2019]
 
What Users Want, A/B testing explained [CodeteCon 2018]
What Users Want, A/B testing explained [CodeteCon 2018]What Users Want, A/B testing explained [CodeteCon 2018]
What Users Want, A/B testing explained [CodeteCon 2018]
 
GeeCON 2018 GraphQL vs Traditional REST API
GeeCON 2018 GraphQL vs Traditional REST APIGeeCON 2018 GraphQL vs Traditional REST API
GeeCON 2018 GraphQL vs Traditional REST API
 
Java Day Istanbul 2018 GraphQL vs Traditional REST API
Java Day Istanbul 2018 GraphQL vs Traditional REST APIJava Day Istanbul 2018 GraphQL vs Traditional REST API
Java Day Istanbul 2018 GraphQL vs Traditional REST API
 
Devoxx France 2018 GraphQL vs Traditional REST API
Devoxx France 2018 GraphQL vs Traditional REST APIDevoxx France 2018 GraphQL vs Traditional REST API
Devoxx France 2018 GraphQL vs Traditional REST API
 
Java land What Users Want, A/B testing explained
Java land What Users Want, A/B testing explainedJava land What Users Want, A/B testing explained
Java land What Users Want, A/B testing explained
 
Java One Secret of developing high performance website, with no budget
Java One Secret of developing high performance website, with no budgetJava One Secret of developing high performance website, with no budget
Java One Secret of developing high performance website, with no budget
 
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...
Voxxed Days Belgrade - Changing wheels on moving car, from monolith to micros...
 
What users want [DevoxxPL]
What users want [DevoxxPL]What users want [DevoxxPL]
What users want [DevoxxPL]
 
Secret of developing high performance website, with no budget in small amount...
Secret of developing high performance website, with no budget in small amount...Secret of developing high performance website, with no budget in small amount...
Secret of developing high performance website, with no budget in small amount...
 
Changing wheels on moving car, from monolith to microservices by using api's V2
Changing wheels on moving car, from monolith to microservices by using api's V2Changing wheels on moving car, from monolith to microservices by using api's V2
Changing wheels on moving car, from monolith to microservices by using api's V2
 
Changing wheels on moving car, from monolith to microservices by using api's
Changing wheels on moving car, from monolith to microservices by using api'sChanging wheels on moving car, from monolith to microservices by using api's
Changing wheels on moving car, from monolith to microservices by using api's
 
Pain of growing up, and moving to large scale
Pain of growing up, and moving to large scalePain of growing up, and moving to large scale
Pain of growing up, and moving to large scale
 
What users want
What users wantWhat users want
What users want
 

Recently uploaded

Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 

Recently uploaded (20)

Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 

REST API vs gRPC, which one should you use in breaking a monolith [Kdg.net 2018]