SlideShare uma empresa Scribd logo
1 de 103
Baixar para ler offline
Beautiful APIs
Cesare Pautasso
c.pautasso@ieee.org
Opening Keynote
Fifteenth IEEE International Conference on
Service-Oriented System Engineering (SOSE2021)
August 23, 2021, Virtual Oxford, UK
http://www.pautasso.info/
Contents
• Motivating Example
• Interfaces vs. APIs
• API Tree Structures
• API Tree Structure Evolution
• API Evolution Tree Rings
• Web and APIs
Abstract
Web service APIs are everywhere. In this talk we will show different
visualizations obtained from a collection of real-world APIs,
highlighting some design primitives, patterns and anti-patterns for
API structures. We will also take the audience on a tour of how API
evolve over the years and how the relationship between APIs and
the Web continues to change over the decades.
Beautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 Keynote
Gas Station EV Charge Station
Scan credit card
Fill up tank
Get receipt
Scan customer
loyalty card
Register customer
info
Register payment
details
wait
Receive network id
card
Connect car to plug
(?)
Scan network id card
Charge
wait some more
Every Component has an Interface
Consumer
Provider
Every Architecture has an API
Connect and Separate
Outside
Inside
API
Application Developers
(1998)
Integration Developers
(2013)
Mashup Developers
(2014)
Low Code ''Developers''
(2020)
API Technology
• Local / Remote Deployment
• Programming Language Speci c / Independent
• XML / JSON / String Payloads
• Formal / Informal Description
API Technology
• Local / Remote Deployment
• Programming Language Speci c / Independent
• XML / JSON / String Payloads
• Formal / Informal Description
Beautiful APIs - SOSE2021 Keynote
Operations = Resource Path + Method
Multiple Representations
Read-Only Collection
Read-Only
Read-Only
Read-Only
Read-Write
Read-Write
Read-Write-Delete
Remote Procedure Call
Actions
Actions and HTTP Methods
Structured Read-Write
Deep Structured Read-Write
Collection
G
GE
ET
T /users
/users
2
20
04
4 N
No
o C
Co
on
nt
te
en
nt
t
POST /users
POST /users
201 Created
201 Created
Location: /users/{id}
Location: /users/{id}
G
GE
ET
T /users/{id}
/users/{id}
2
200 OK
00 OK
PUT /users/{id}
PUT /users/{id}
200 OK
200 OK
DELETE /users/{id}
DELETE /users/{id}
200 OK
200 OK
Collection Conversation
CRUMD Collection
CRUMD Collections
Collections Mix
Collection with Commands
GET, POST, DELETE, PUT
GET, POST, DELETE, PUT, PATCH
PUT Setters
POST-less
NoSQL API
CRUD API
SQL API
Beautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 Keynote
SpareMoney
SpareMoney
CarService API
CarService API
OpenTrials API
OpenTrials API
Flat API
Flat API
OpenPAI RESTful API
OpenPAI RESTful API
Clamp Rest API
Clamp Rest API
ID Vault
ID Vault
LibOpenStorage
LibOpenStorage
BMInventory
BMInventory
MADApp API
MADApp API
Beautiful APIs - SOSE2021 Keynote
Welcome to the
guided tour of the
Beautiful API
Evolution virtual
exhibition.
SpareMoney
Welcome to the
guided tour of the
Beautiful API
Evolution virtual
exhibition.
1 month 11 days
Age
27
Paths
45
Commits
Each line represents
an operation.
Its color corresponds
to the HTTP method.
Ingenico Server
Each line represents
an operation.
Its color corresponds
to the HTTP method.
5 days
Age
36
Paths
16
Commits
Multicolored lines
represent paths that
provide multiple
operations with
different HTTP
methods.
Operations are not
always added to a
path at the same
time.
Harbor API
Multicolored lines
represent paths that
provide multiple
operations with
different HTTP
methods.
Operations are not
always added to a
path at the same
time.
3 months 14 days
Age
19
Paths
50
Commits
Time ows outwards.
The oldest API
structures are shown
around the center.
The latest version is
on the outer ring.
eCards API
Time ows outwards.
The oldest API
structures are shown
around the center.
The latest version is
on the outer ring.
1 month 13 days
Age
21
Paths
38
Commits
This API was born as a
read-only API and
later acquired some
POST endpoints.
We can also spot a
rare transition from
GET to POST on the
same endpoint.
CarService API
This API was born as a
read-only API and
later acquired some
POST endpoints.
We can also spot a
rare transition from
GET to POST on the
same endpoint.
1 month 26 days
Age
49
Paths
95
Commits
The circular rings
represent time
intervals.
This read-only API is
more than one year
old.
OpenTrials API
The circular rings
represent time
intervals.
This read-only API is
more than one year
old.
1 year 2 months 16 days
Age
24
Paths
102
Commits
The distance between
the circular rings is
proportional to how
many commits have
been pushed within
the 6 months interval.
This 3.5 year old API
underwent a lot of
changes in the rst 6
months and almost
stabilized afterwards.
Flat API
The distance between
the circular rings is
proportional to how
many commits have
been pushed within
the 6 months interval.
This 3.5 year old API
underwent a lot of
changes in the rst 6
months and almost
stabilized afterwards.
3 years 10 months 16 days
Age
51
Paths
37
Commits
This API is less than
one year old, but it
did already undergo a
radical change once,
when most of its old
paths have been
pruned.
OpenPAI RESTful API
This API is less than
one year old, but it
did already undergo a
radical change once,
when most of its old
paths have been
pruned.
11 months 13 days
Age
73
Paths
36
Commits
If the previous API
changed radically
once, this one
underwent such
transitions regularly.
We can spot at least
three bundles of
paths that have been
replaced together
every six months or
so.
Clamp Rest API
If the previous API
changed radically
once, this one
underwent such
transitions regularly.
We can spot at least
three bundles of
paths that have been
replaced together
every six months or
so.
2 years 7 months 24 days
Age
90
Paths
33
Commits
Welcome to the CRUD
style API, with
endpoints providing
four operations (GET,
DELETE, PUT and
PATCH).
ID Vault
Welcome to the CRUD
style API, with
endpoints providing
four operations (GET,
DELETE, PUT and
PATCH).
1 month 27 days
Age
22
Paths
86
Commits
Here is another one,
with half CRUD
endpoints and half
read-only.
This is also an API
that has been growing
for almost four years
by always adding
more paths along the
way.
Apacta
Here is another one,
with half CRUD
endpoints and half
read-only.
This is also an API
that has been growing
for almost four years
by always adding
more paths along the
way.
3 years 11 months 12 days
Age
81
Paths
28
Commits
The designers of this
API have been
experimenting with
many different styles
over its 2 years of
existence.
Some experiments
were short lived,
while others
withstood the test of
time.
LibOpenStorage
The designers of this
API have been
experimenting with
many different styles
over its 2 years of
existence.
Some experiments
were short lived,
while others
withstood the test of
time.
2 years 19 days
Age
105
Paths
48
Commits
Here we can see that
only one path
introduced with the
rst release has
survived until the
current version.
Most of the current
paths are new, and
most of the original
ones have been
removed.
BMInventory
Here we can see that
only one path
introduced with the
rst release has
survived until the
current version.
Most of the current
paths are new, and
most of the original
ones have been
removed.
5 months 4 days
Age
56
Paths
132
Commits
Here we see a clear
case of API designers
lacking some colors in
their palette.
For some reason,
clients can only GET,
POST and DELETE.
MADApp API
Here we see a clear
case of API designers
lacking some colors in
their palette.
For some reason,
clients can only GET,
POST and DELETE.
3 years 1 month 21 days
Age
90
Paths
75
Commits
This 2.5-years-old API
was born as a Remote
Procedure Call API.
Then it matured to
become RESTful.
OpenStorage SDK
This 2.5-years-old API
was born as a Remote
Procedure Call API.
Then it matured to
become RESTful.
2 years 9 months 23 days
Age
187
Paths
192
Commits
Beautiful API Evolution
Beautiful API Evolution
Web ↔ APIs
Web
as a tunnel
2000
''It's not RESTful
enough''
2010
Web browser
as a tunnel
2020
Beautiful APIs - SOSE2021 Keynote
Beautiful APIs - SOSE2021 Keynote
More Examples
• Cesare Pautasso, , Leanpub, 2020
• Cesare Pautasso, , Leanpub, 2021
Beautiful APIs
Beautiful API Evolution
Microservice API Design Patterns
https://microservice-api-patterns.org
References
• Souhaila Serbout, Cesare Pautasso, Uwe Zdun, Olaf Zimmermann, From OpenAPI Fragments
to API Pattern Primitives and Smells, Proc. of the European Conference on Pattern
Languages of Programs (EuroPLoP 2021), Kloster Irsee, Germany, July 2021
• Fabio Di Lauro, Souhaila Serbout, Cesare Pautasso,
, Proc. 21st International Conference on Web Engineering
(ICWE2021), Biarritz, France, Springer, May 2021 (Best Paper Award)
• Cesare Pautasso, Ana Ivanchikj, Silvia Schreier,
, Proc. of the 21st European Conference on Pattern Languages of Programs
(EuroPLoP 2016), Kloster Irsee, Germany, July 2016, pp. 4:1-4:22
• Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, Mirko Stocker,
,
Proc. of the 24th European Conference on Pattern Languages of Programs (EuroPLoP 2019),
Irsee, Germany, July 2019
• Olaf Zimmermann, Mirko Stocker, Uwe Zdun, Daniel Lübke, Cesare Pautasso,
, Joint Post-proceedings of the First and Second
International Conference on Microservices (Microservices 2017/2019)
• Cesare Pautasso, , Leanpub, 2020
• Cesare Pautasso, , Leanpub, 2021
Towards Large-scale Empirical
Assessment of Web APIs Evolution
A Pattern Language for RESTful
Conversations
Interface
Evolution Patterns - Balancing Compatibility and Flexibility across Microservices Lifecycles
Introduction to
Microservice API Patterns (MAP)
Beautiful APIs
Beautiful API Evolution

Mais conteúdo relacionado

Semelhante a Beautiful APIs - SOSE2021 Keynote

Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinarLibbySchulze
 
introduction about REST API
introduction about REST APIintroduction about REST API
introduction about REST APIAmilaSilva13
 
Getting to Grips with RESTful APIs
Getting to Grips with RESTful APIsGetting to Grips with RESTful APIs
Getting to Grips with RESTful APIsPetko Mikhailov
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST APIstephenbhadran
 
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...apidays
 
apidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays
 
Evaluating and Testing Web APIs
Evaluating and Testing Web APIsEvaluating and Testing Web APIs
Evaluating and Testing Web APIsSmartBear
 
aip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialaip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialMatthew Vaughn
 
Building REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAsBuilding REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAsAbati Adewale
 
The 7 Deadly Sins of API Design
The 7 Deadly Sins of API DesignThe 7 Deadly Sins of API Design
The 7 Deadly Sins of API Designluisw19
 
Encodable: Configurable Grammar for Visualization Components
Encodable: Configurable Grammar for Visualization ComponentsEncodable: Configurable Grammar for Visualization Components
Encodable: Configurable Grammar for Visualization ComponentsKrist Wongsuphasawat
 
Your API is your Product - Arun Ravindran, Unisys
Your API is your Product - Arun Ravindran, UnisysYour API is your Product - Arun Ravindran, Unisys
Your API is your Product - Arun Ravindran, Unisysbaconfblr
 
Connect js nodejs_api_shubhra
Connect js nodejs_api_shubhraConnect js nodejs_api_shubhra
Connect js nodejs_api_shubhraShubhra Kar
 
GraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer toolsGraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer toolsSashko Stubailo
 
REST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookNordic APIs
 
zendframework2 restful
zendframework2 restfulzendframework2 restful
zendframework2 restfultom_li
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopShubhra Kar
 
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...apidays
 
Integration on Force.com Platform
Integration on Force.com PlatformIntegration on Force.com Platform
Integration on Force.com PlatformAmit Jain
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to APIrajnishjha29
 

Semelhante a Beautiful APIs - SOSE2021 Keynote (20)

Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
introduction about REST API
introduction about REST APIintroduction about REST API
introduction about REST API
 
Getting to Grips with RESTful APIs
Getting to Grips with RESTful APIsGetting to Grips with RESTful APIs
Getting to Grips with RESTful APIs
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST API
 
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
 
apidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ngapidays LIVE Paris - The Business of APIs by Jed Ng
apidays LIVE Paris - The Business of APIs by Jed Ng
 
Evaluating and Testing Web APIs
Evaluating and Testing Web APIsEvaluating and Testing Web APIs
Evaluating and Testing Web APIs
 
aip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialaip-workshop1-dev-tutorial
aip-workshop1-dev-tutorial
 
Building REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAsBuilding REST APIs that don't suck for modern day SPAs
Building REST APIs that don't suck for modern day SPAs
 
The 7 Deadly Sins of API Design
The 7 Deadly Sins of API DesignThe 7 Deadly Sins of API Design
The 7 Deadly Sins of API Design
 
Encodable: Configurable Grammar for Visualization Components
Encodable: Configurable Grammar for Visualization ComponentsEncodable: Configurable Grammar for Visualization Components
Encodable: Configurable Grammar for Visualization Components
 
Your API is your Product - Arun Ravindran, Unisys
Your API is your Product - Arun Ravindran, UnisysYour API is your Product - Arun Ravindran, Unisys
Your API is your Product - Arun Ravindran, Unisys
 
Connect js nodejs_api_shubhra
Connect js nodejs_api_shubhraConnect js nodejs_api_shubhra
Connect js nodejs_api_shubhra
 
GraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer toolsGraphQL: Enabling a new generation of API developer tools
GraphQL: Enabling a new generation of API developer tools
 
REST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical LookREST vs. GraphQL: Critical Look
REST vs. GraphQL: Critical Look
 
zendframework2 restful
zendframework2 restfulzendframework2 restful
zendframework2 restful
 
Ibm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshopIbm_interconnect_restapi_workshop
Ibm_interconnect_restapi_workshop
 
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...
apidays LIVE LONDON - OpenAPI-driven API development lifecycle at Adyen by Al...
 
Integration on Force.com Platform
Integration on Force.com PlatformIntegration on Force.com Platform
Integration on Force.com Platform
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to API
 

Mais de Cesare Pautasso

How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?Cesare Pautasso
 
Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Cesare Pautasso
 
Disaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremDisaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremCesare Pautasso
 
The Blockchain as a Software Connector
The Blockchain as a Software ConnectorThe Blockchain as a Software Connector
The Blockchain as a Software ConnectorCesare Pautasso
 
Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Cesare Pautasso
 
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...Cesare Pautasso
 
Push-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesPush-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesCesare Pautasso
 
Atomic Transactions for the REST of us
Atomic Transactions for the REST of usAtomic Transactions for the REST of us
Atomic Transactions for the REST of usCesare Pautasso
 
Service Oriented Architectures and Web Services
Service Oriented Architectures and Web ServicesService Oriented Architectures and Web Services
Service Oriented Architectures and Web ServicesCesare Pautasso
 
Exploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionExploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionCesare Pautasso
 
Real-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiReal-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiCesare Pautasso
 
Towards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresTowards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresCesare Pautasso
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful ServicesCesare Pautasso
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOperaCesare Pautasso
 
USI SCUBE Associate Member
USI SCUBE Associate MemberUSI SCUBE Associate Member
USI SCUBE Associate MemberCesare Pautasso
 
Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Cesare Pautasso
 

Mais de Cesare Pautasso (20)

How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?How do you back up and consistently recover your microservice architecture?
How do you back up and consistently recover your microservice architecture?
 
Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?Microservices: An Eventually Inconsistent Architectural Style?
Microservices: An Eventually Inconsistent Architectural Style?
 
Disaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC TheoremDisaster Recovery and Microservices: The BAC Theorem
Disaster Recovery and Microservices: The BAC Theorem
 
The Blockchain as a Software Connector
The Blockchain as a Software ConnectorThe Blockchain as a Software Connector
The Blockchain as a Software Connector
 
Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...Team Situational Awareness and Architectural Decision Making with the Softwar...
Team Situational Awareness and Architectural Decision Making with the Softwar...
 
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
JOpera - Eclipse-based Visual Composition Environment featuring a general lan...
 
Push-Enabling RESTful Business Processes
Push-Enabling RESTful Business ProcessesPush-Enabling RESTful Business Processes
Push-Enabling RESTful Business Processes
 
BPMN for REST
BPMN for RESTBPMN for REST
BPMN for REST
 
SOA with REST
SOA with RESTSOA with REST
SOA with REST
 
Atomic Transactions for the REST of us
Atomic Transactions for the REST of usAtomic Transactions for the REST of us
Atomic Transactions for the REST of us
 
Service Oriented Architectures and Web Services
Service Oriented Architectures and Web ServicesService Oriented Architectures and Web Services
Service Oriented Architectures and Web Services
 
Exploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process ExecutionExploiting Multicores to Optimize Business Process Execution
Exploiting Multicores to Optimize Business Process Execution
 
Real-time Mashups di Web Service Geografici
Real-time Mashups di Web Service GeograficiReal-time Mashups di Web Service Geografici
Real-time Mashups di Web Service Geografici
 
Towards Scalable Service Composition on Multicores
Towards Scalable Service Composition on MulticoresTowards Scalable Service Composition on Multicores
Towards Scalable Service Composition on Multicores
 
BPM with REST
BPM with RESTBPM with REST
BPM with REST
 
WS-* vs. RESTful Services
WS-* vs. RESTful ServicesWS-* vs. RESTful Services
WS-* vs. RESTful Services
 
RESTful Service Composition with JOpera
RESTful Service Composition with JOperaRESTful Service Composition with JOpera
RESTful Service Composition with JOpera
 
SOA2010 SOA with REST
SOA2010 SOA with RESTSOA2010 SOA with REST
SOA2010 SOA with REST
 
USI SCUBE Associate Member
USI SCUBE Associate MemberUSI SCUBE Associate Member
USI SCUBE Associate Member
 
Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)Lighweight Collaboration Management (Mashups09@OOPSLA)
Lighweight Collaboration Management (Mashups09@OOPSLA)
 

Último

UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 

Último (20)

201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 

Beautiful APIs - SOSE2021 Keynote

  • 1. Beautiful APIs Cesare Pautasso c.pautasso@ieee.org Opening Keynote Fifteenth IEEE International Conference on Service-Oriented System Engineering (SOSE2021) August 23, 2021, Virtual Oxford, UK http://www.pautasso.info/
  • 2. Contents • Motivating Example • Interfaces vs. APIs • API Tree Structures • API Tree Structure Evolution • API Evolution Tree Rings • Web and APIs
  • 3. Abstract Web service APIs are everywhere. In this talk we will show different visualizations obtained from a collection of real-world APIs, highlighting some design primitives, patterns and anti-patterns for API structures. We will also take the audience on a tour of how API evolve over the years and how the relationship between APIs and the Web continues to change over the decades.
  • 6. Gas Station EV Charge Station Scan credit card Fill up tank Get receipt Scan customer loyalty card Register customer info Register payment details wait Receive network id card Connect car to plug (?) Scan network id card Charge wait some more
  • 7. Every Component has an Interface Consumer Provider
  • 14. API Technology • Local / Remote Deployment • Programming Language Speci c / Independent • XML / JSON / String Payloads • Formal / Informal Description
  • 15. API Technology • Local / Remote Deployment • Programming Language Speci c / Independent • XML / JSON / String Payloads • Formal / Informal Description
  • 17. Operations = Resource Path + Method
  • 28. Actions and HTTP Methods
  • 32. G GE ET T /users /users 2 20 04 4 N No o C Co on nt te en nt t POST /users POST /users 201 Created 201 Created Location: /users/{id} Location: /users/{id} G GE ET T /users/{id} /users/{id} 2 200 OK 00 OK PUT /users/{id} PUT /users/{id} 200 OK 200 OK DELETE /users/{id} DELETE /users/{id} 200 OK 200 OK Collection Conversation
  • 38. GET, POST, DELETE, PUT, PATCH
  • 67. Welcome to the guided tour of the Beautiful API Evolution virtual exhibition.
  • 68. SpareMoney Welcome to the guided tour of the Beautiful API Evolution virtual exhibition. 1 month 11 days Age 27 Paths 45 Commits
  • 69. Each line represents an operation. Its color corresponds to the HTTP method.
  • 70. Ingenico Server Each line represents an operation. Its color corresponds to the HTTP method. 5 days Age 36 Paths 16 Commits
  • 71. Multicolored lines represent paths that provide multiple operations with different HTTP methods. Operations are not always added to a path at the same time.
  • 72. Harbor API Multicolored lines represent paths that provide multiple operations with different HTTP methods. Operations are not always added to a path at the same time. 3 months 14 days Age 19 Paths 50 Commits
  • 73. Time ows outwards. The oldest API structures are shown around the center. The latest version is on the outer ring.
  • 74. eCards API Time ows outwards. The oldest API structures are shown around the center. The latest version is on the outer ring. 1 month 13 days Age 21 Paths 38 Commits
  • 75. This API was born as a read-only API and later acquired some POST endpoints. We can also spot a rare transition from GET to POST on the same endpoint.
  • 76. CarService API This API was born as a read-only API and later acquired some POST endpoints. We can also spot a rare transition from GET to POST on the same endpoint. 1 month 26 days Age 49 Paths 95 Commits
  • 77. The circular rings represent time intervals. This read-only API is more than one year old.
  • 78. OpenTrials API The circular rings represent time intervals. This read-only API is more than one year old. 1 year 2 months 16 days Age 24 Paths 102 Commits
  • 79. The distance between the circular rings is proportional to how many commits have been pushed within the 6 months interval. This 3.5 year old API underwent a lot of changes in the rst 6 months and almost stabilized afterwards.
  • 80. Flat API The distance between the circular rings is proportional to how many commits have been pushed within the 6 months interval. This 3.5 year old API underwent a lot of changes in the rst 6 months and almost stabilized afterwards. 3 years 10 months 16 days Age 51 Paths 37 Commits
  • 81. This API is less than one year old, but it did already undergo a radical change once, when most of its old paths have been pruned.
  • 82. OpenPAI RESTful API This API is less than one year old, but it did already undergo a radical change once, when most of its old paths have been pruned. 11 months 13 days Age 73 Paths 36 Commits
  • 83. If the previous API changed radically once, this one underwent such transitions regularly. We can spot at least three bundles of paths that have been replaced together every six months or so.
  • 84. Clamp Rest API If the previous API changed radically once, this one underwent such transitions regularly. We can spot at least three bundles of paths that have been replaced together every six months or so. 2 years 7 months 24 days Age 90 Paths 33 Commits
  • 85. Welcome to the CRUD style API, with endpoints providing four operations (GET, DELETE, PUT and PATCH).
  • 86. ID Vault Welcome to the CRUD style API, with endpoints providing four operations (GET, DELETE, PUT and PATCH). 1 month 27 days Age 22 Paths 86 Commits
  • 87. Here is another one, with half CRUD endpoints and half read-only. This is also an API that has been growing for almost four years by always adding more paths along the way.
  • 88. Apacta Here is another one, with half CRUD endpoints and half read-only. This is also an API that has been growing for almost four years by always adding more paths along the way. 3 years 11 months 12 days Age 81 Paths 28 Commits
  • 89. The designers of this API have been experimenting with many different styles over its 2 years of existence. Some experiments were short lived, while others withstood the test of time.
  • 90. LibOpenStorage The designers of this API have been experimenting with many different styles over its 2 years of existence. Some experiments were short lived, while others withstood the test of time. 2 years 19 days Age 105 Paths 48 Commits
  • 91. Here we can see that only one path introduced with the rst release has survived until the current version. Most of the current paths are new, and most of the original ones have been removed.
  • 92. BMInventory Here we can see that only one path introduced with the rst release has survived until the current version. Most of the current paths are new, and most of the original ones have been removed. 5 months 4 days Age 56 Paths 132 Commits
  • 93. Here we see a clear case of API designers lacking some colors in their palette. For some reason, clients can only GET, POST and DELETE.
  • 94. MADApp API Here we see a clear case of API designers lacking some colors in their palette. For some reason, clients can only GET, POST and DELETE. 3 years 1 month 21 days Age 90 Paths 75 Commits
  • 95. This 2.5-years-old API was born as a Remote Procedure Call API. Then it matured to become RESTful.
  • 96. OpenStorage SDK This 2.5-years-old API was born as a Remote Procedure Call API. Then it matured to become RESTful. 2 years 9 months 23 days Age 187 Paths 192 Commits
  • 98. Web ↔ APIs Web as a tunnel 2000 ''It's not RESTful enough'' 2010 Web browser as a tunnel 2020
  • 101. More Examples • Cesare Pautasso, , Leanpub, 2020 • Cesare Pautasso, , Leanpub, 2021 Beautiful APIs Beautiful API Evolution
  • 102. Microservice API Design Patterns https://microservice-api-patterns.org
  • 103. References • Souhaila Serbout, Cesare Pautasso, Uwe Zdun, Olaf Zimmermann, From OpenAPI Fragments to API Pattern Primitives and Smells, Proc. of the European Conference on Pattern Languages of Programs (EuroPLoP 2021), Kloster Irsee, Germany, July 2021 • Fabio Di Lauro, Souhaila Serbout, Cesare Pautasso, , Proc. 21st International Conference on Web Engineering (ICWE2021), Biarritz, France, Springer, May 2021 (Best Paper Award) • Cesare Pautasso, Ana Ivanchikj, Silvia Schreier, , Proc. of the 21st European Conference on Pattern Languages of Programs (EuroPLoP 2016), Kloster Irsee, Germany, July 2016, pp. 4:1-4:22 • Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, Mirko Stocker, , Proc. of the 24th European Conference on Pattern Languages of Programs (EuroPLoP 2019), Irsee, Germany, July 2019 • Olaf Zimmermann, Mirko Stocker, Uwe Zdun, Daniel Lübke, Cesare Pautasso, , Joint Post-proceedings of the First and Second International Conference on Microservices (Microservices 2017/2019) • Cesare Pautasso, , Leanpub, 2020 • Cesare Pautasso, , Leanpub, 2021 Towards Large-scale Empirical Assessment of Web APIs Evolution A Pattern Language for RESTful Conversations Interface Evolution Patterns - Balancing Compatibility and Flexibility across Microservices Lifecycles Introduction to Microservice API Patterns (MAP) Beautiful APIs Beautiful API Evolution