SlideShare a Scribd company logo
1 of 21
Download to read offline
Resource Oriented Architecture
Sep-15-2015
Nuwan Bandara
@nuwanbando
Solutions Architect, WSO2
Software/Computer Systems & Humans
➡ Single most connected artificial entity to
humans at present
➡ Rapidly changing and progressing
➡ Increasingly becoming a ubiquitous
entity to consume information and act
on it
➡ Rules are rapidly changing: Industrial
revolution for the software industry is
yet to happen
Human Interaction
➡ With Humans: People are Identified by a
name and can be associated to a location,
place of work/study, a profession etc.
➡ With objects: People identify objects by a
name and can be associated to a location,
type, use of, owned by etc.
➡ The interaction: Change of state -
“become a friend” or “buy a caramel latte”
The Common Factor
➡ Any kind of an interaction is defined by a simple protocol
➡ You identify something (i.e: name)
➡ You associate it to something to derive meaning (i.e: location)
➡ You change the state (aka interact)
Building A Connected Information System
➡ If interaction is the key thing in any system
➡ We need to define the entities, their associations and interactions
➡ In an HR system employee is an entity, “department”, “salary”,
“bio” are descriptors or associations to that entity
➡ In an abstract sense we interact with a resource based ecosystem
➡ Every entity and a descriptor can be represented as a resource
Resource Orientation Is Not A Leapfrog
➡ Object Oriented Architecture
‣ Every entity is defined as an object
‣ Objects have attributes and actions
‣ Objects have a state
➡ Service Oriented Architecture
‣ Entities are services
‣ Service has a description and a contract
‣ Interacts over the network with a defined location (address)
Resource Oriented Architecture (ROA)
➡ The rest of “REST”
➡ Foundations of the Semantic Web
➡ Building a ubiquitous computing ecosystem
➡ Describing a system as a self discoverable entity
➡ Modeling a system based on its logical form (as oppose to the
technical form)
ROA Fundamentals
➡ Uses Representational State Transfer (REST) as the primary design
pattern
➡ Data is independent of the server and the client - The server
implementation can change over time and there can be many
clients.
➡ Loose coupling is one of the objectives of the architecture
➡ “State” is treated as actions performed against the resource
URLs Are The Identifiers Of Resources
➡ Resources are uniquely identifiable
‣ Uniform Resource Name (URN) is a good example
of a uniquely identifiable resource name
‣ ISBN is a classic example
➡ URN alone cannot identify a resource, there needs
to be a discovery mechanism
urn:isbn:9780345376596
https://library.org/books/9780345376596
http://wso2.com/customer/fin23324
or
How A URL Should Look Like In ROA
➡ Has to be a logical representation of the resource
‣ The only requirement: A resource identifier has to be an indefinite
constant
From following patterns which creates an indefinite constant ?
http://wso2.com/customer.jsp?id=fin233245
http://wso2.com/customer/v1/fin233245
http://wso2.com/customer/fin233245
Lets Examine
➡ {.jsp} is implantation detail
➡ Implementations change over time
http://wso2.com/customer.jsp?id=fin233245
http://wso2.com/customer/v1/fin233245
➡ {v1} is a contractual detail
➡ The resource format (structure) should not define the resource identifier
➡ However the version is an important detail, hence
http://wso2.com/customer/fin233245?version:v1
Identifier Information & Meta Information
➡ URL parameters as meta information
➡ Meta information do not identify the resource but add more
context/flexibility for the consumer
http://wso2.com/customer/fin233245?version:v1
http://wso2.com/report/sales/2009/qtr/3?sort=ascending
Freedom Of Form
➡ The format of the resource can be of many forms
http://wso2.com/customer/fin233245/book.xml
http://wso2.com/customer/fin233245/book.json
http://wso2.com/customer/fin233245/book.html
http://wso2.com/customer/fin233245
Accept: application/json
curl -H "Accept: application/json" -O http://wso2.com/customer/fin233245
vs
Late Binding
➡ Named references (aka “Pointers” in ROA)
‣ Actual resource is not retrieved unless its explicitly asked for
‣ A reference to the resource is passed in an orchestration
curl -H "Accept: application/json" -O http://wso2.com/customers
[“http://wso2.com/customer/fin233245”, “http://wso2.com/customer/ecom233246”]
➡ This methodology allows a system built with ROA enforce granular
level of entitlement
Loosely Coupled & Logically Connected
➡ Resources are identified by it’s logical meaning - URL construction (ROA
101)
‣ Independent of the server implementation - Greater flexibility for change
‣ Clients are intact - Clients are wired to the resource
➡ Following Postel's Law - Be strict in what you provide (Resource identifier,
data formats etc) but be flexible when receiving (different clients should be
able to send data in different formats)
Hypermedia As The Engine Of Application State
(HATEOAS)
➡ Client does not have any meaningful idea about the data sent by the
server
➡ Client can only render it
➡ Client interact with the server only via hypermedia
➡ No prior contract, client will discover possible actions by understating
the resource representation sent by the server
➡ The resource representation is state-full and sent across the hypermedia
Understanding HATEOAS
➡ Listing a book in the library
GET /book/9780345376596 HTTP/1.1
Host: library.org
Accept: application/json
..
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: …
{
"name": "the pale blue dot",
"ISBN": "9780345376596",
"author": "carl sagan",
"borrow": "http://library.org/book/9780345376596/borrow"
}
GET /book/9780345376596 HTTP/1.1
Host: library.org
Accept: application/json
..
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: …
{
"name": "the pale blue dot",
"ISBN": "9780345376596",
"author": "carl sagan",
"return": "http://library.org/book/9780345376596/return"
}
➡ Listing a book after its been
borrowed
Semantic Web & ROA
➡ Defines a structured relationship of resources (over the web)
➡ Defines the means of querying an exact resource vs arbitrary
discovery
➡ Identifies resources as edges and nodes
‣ An edge represent a data element
‣ A node describe more nodes & edges
Micro-Services & ROA
➡ “Micro-Services Architecture” is properly Implements SOA
➡ Micro Services complements ROA
➡ Micro service in essence is a service with the right level of granularity
performing a specific business task
➡ In a high level a “micro service” is the implementation of a resource with its
contextual details
‣ The library example: The book is a resource in the library, you can borrow
and return a book and that encapsulate the logical book in a library which
can be implemented as a micro service
References
➡ http://www.infoq.com/articles/roa-rest-of-rest#anch50927
➡ https://www.ics.uci.edu/~fielding/pubs/dissertation/
rest_arch_style.htm#sec_5_1
➡ https://www.ics.uci.edu/~fielding/pubs/dissertation/
rest_arch_style.htm#sec_5_2
➡ http://www.w3.org/standards/semanticweb/
Image References
➡ https://www.bestthinking.com/articles/computers_and_technology/
software/software_architecture/designed-for-humans
➡ http://www.socialsongbird.com/2014/08/social-media-and-human-
interaction.html
➡ https://jlmhenson20xs.wordpress.com/2013/10/22/a-great-
interaction/
➡ http://theviewinside.me/if-you-want-peace-of-mind-defeat-your-
past-by-climbing-your-own-mount-everest/

More Related Content

What's hot

Web Development on Web Project Report
Web Development on Web Project ReportWeb Development on Web Project Report
Web Development on Web Project ReportMilind Gokhale
 
Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture Ravindra Dastikop
 
Collaborating Using Cloud Services
Collaborating Using Cloud ServicesCollaborating Using Cloud Services
Collaborating Using Cloud ServicesDr. Sunil Kr. Pandey
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specificationAman Adhikari
 
Cloud Resource Management
Cloud Resource ManagementCloud Resource Management
Cloud Resource ManagementNASIRSAYYED4
 
SRS(software requirement specification)
SRS(software requirement specification)SRS(software requirement specification)
SRS(software requirement specification)Akash Kumar Dhameja
 
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...Edureka!
 
Microservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | EdurekaMicroservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | EdurekaEdureka!
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices Bozhidar Bozhanov
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and viewsDr Reeja S R
 

What's hot (20)

Web Development on Web Project Report
Web Development on Web Project ReportWeb Development on Web Project Report
Web Development on Web Project Report
 
Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture
 
Collaborating Using Cloud Services
Collaborating Using Cloud ServicesCollaborating Using Cloud Services
Collaborating Using Cloud Services
 
Servlet life cycle
Servlet life cycleServlet life cycle
Servlet life cycle
 
Case study-the next gen pos
Case study-the next gen posCase study-the next gen pos
Case study-the next gen pos
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Software testing axioms
Software testing axiomsSoftware testing axioms
Software testing axioms
 
Event-driven Architecture
Event-driven ArchitectureEvent-driven Architecture
Event-driven Architecture
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specification
 
Web Application Security 101
Web Application Security 101Web Application Security 101
Web Application Security 101
 
Cloud Resource Management
Cloud Resource ManagementCloud Resource Management
Cloud Resource Management
 
Domain Modeling
Domain ModelingDomain Modeling
Domain Modeling
 
Application of Cloud Computing
Application of Cloud ComputingApplication of Cloud Computing
Application of Cloud Computing
 
SRS(software requirement specification)
SRS(software requirement specification)SRS(software requirement specification)
SRS(software requirement specification)
 
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...
Azure Interview Questions And Answers | Azure Tutorial For Beginners | Azure ...
 
Microservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | EdurekaMicroservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | Edureka
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and views
 
Web services
Web servicesWeb services
Web services
 

Similar to Resource-Oriented Architecture (ROA)

Events and microservices
Events and microservicesEvents and microservices
Events and microservicesSaul Caganoff
 
Events & Microservices
Events & MicroservicesEvents & Microservices
Events & MicroservicesYamen Sader
 
Design And Implementation Of Web Service Testing Framework Mit Template
Design And Implementation Of Web Service Testing Framework Mit TemplateDesign And Implementation Of Web Service Testing Framework Mit Template
Design And Implementation Of Web Service Testing Framework Mit Templatereswin
 
Web of things introduction
Web of things introductionWeb of things introduction
Web of things introduction承翰 蔡
 
Towards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LDTowards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LDJosé Manuel Cantera Fonseca
 
REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)Sascha Wenninger
 
OrientDB Intro & HTTP REST API Tutorial
OrientDB Intro & HTTP REST API TutorialOrientDB Intro & HTTP REST API Tutorial
OrientDB Intro & HTTP REST API TutorialAnthony Blatner
 
Pattern Driven Enterprise Architecture
Pattern Driven Enterprise ArchitecturePattern Driven Enterprise Architecture
Pattern Driven Enterprise ArchitectureWSO2
 
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers Program
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers ProgramSession 2 - NGSI-LD primer & Smart Data Models | Train the Trainers Program
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers ProgramFIWARE
 
Events on the outside, on the inside and at the core (jaxlondon)
Events on the outside, on the inside and at the core (jaxlondon)Events on the outside, on the inside and at the core (jaxlondon)
Events on the outside, on the inside and at the core (jaxlondon)Chris Richardson
 
Events on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonEvents on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonJAXLondon_Conference
 
One Ontology, One Data Set, Multiple Shapes with SHACL
One Ontology, One Data Set, Multiple Shapes with SHACLOne Ontology, One Data Set, Multiple Shapes with SHACL
One Ontology, One Data Set, Multiple Shapes with SHACLConnected Data World
 
Persistently identifying website content
Persistently identifying website contentPersistently identifying website content
Persistently identifying website contentAndy Powell
 
Introduction to Linked Data and Web Payments
Introduction to Linked Data and Web Payments Introduction to Linked Data and Web Payments
Introduction to Linked Data and Web Payments Brent Shambaugh
 
REST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesREST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesPaul Fremantle
 
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...FIWARE
 
JSON-LD and NGSI-LD
JSON-LD and NGSI-LDJSON-LD and NGSI-LD
JSON-LD and NGSI-LDFIWARE
 
FIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LDFIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LDFIWARE
 

Similar to Resource-Oriented Architecture (ROA) (20)

Events and microservices
Events and microservicesEvents and microservices
Events and microservices
 
Events & Microservices
Events & MicroservicesEvents & Microservices
Events & Microservices
 
Design And Implementation Of Web Service Testing Framework Mit Template
Design And Implementation Of Web Service Testing Framework Mit TemplateDesign And Implementation Of Web Service Testing Framework Mit Template
Design And Implementation Of Web Service Testing Framework Mit Template
 
Web of things introduction
Web of things introductionWeb of things introduction
Web of things introduction
 
Introduction To REST
Introduction To RESTIntroduction To REST
Introduction To REST
 
Towards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LDTowards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LD
 
REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)REST: So What's It All About? (SAP TechEd 2011, MOB107)
REST: So What's It All About? (SAP TechEd 2011, MOB107)
 
OrientDB Intro & HTTP REST API Tutorial
OrientDB Intro & HTTP REST API TutorialOrientDB Intro & HTTP REST API Tutorial
OrientDB Intro & HTTP REST API Tutorial
 
Pattern Driven Enterprise Architecture
Pattern Driven Enterprise ArchitecturePattern Driven Enterprise Architecture
Pattern Driven Enterprise Architecture
 
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers Program
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers ProgramSession 2 - NGSI-LD primer & Smart Data Models | Train the Trainers Program
Session 2 - NGSI-LD primer & Smart Data Models | Train the Trainers Program
 
Events on the outside, on the inside and at the core (jaxlondon)
Events on the outside, on the inside and at the core (jaxlondon)Events on the outside, on the inside and at the core (jaxlondon)
Events on the outside, on the inside and at the core (jaxlondon)
 
Events on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonEvents on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris Richardson
 
One Ontology, One Data Set, Multiple Shapes with SHACL
One Ontology, One Data Set, Multiple Shapes with SHACLOne Ontology, One Data Set, Multiple Shapes with SHACL
One Ontology, One Data Set, Multiple Shapes with SHACL
 
Persistently identifying website content
Persistently identifying website contentPersistently identifying website content
Persistently identifying website content
 
Introduction to Linked Data and Web Payments
Introduction to Linked Data and Web Payments Introduction to Linked Data and Web Payments
Introduction to Linked Data and Web Payments
 
REST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and LiesREST vs WS-*: Myths Facts and Lies
REST vs WS-*: Myths Facts and Lies
 
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...
FIWARE Global Summit - The Way Towards Interoperability between Web Of Things...
 
JSON-LD and NGSI-LD
JSON-LD and NGSI-LDJSON-LD and NGSI-LD
JSON-LD and NGSI-LD
 
FIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LDFIWARE Training: JSON-LD and NGSI-LD
FIWARE Training: JSON-LD and NGSI-LD
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
 

More from WSO2

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in ChoreoWSO2
 
Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023WSO2
 
Platform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzurePlatform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzureWSO2
 
GartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfGartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfWSO2
 
[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in MinutesWSO2
 
Modernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityModernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityWSO2
 
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...WSO2
 
CIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfCIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfWSO2
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoWSO2
 
Fueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsFueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsWSO2
 
A Reference Methodology for Agile Digital Businesses
 A Reference Methodology for Agile Digital Businesses A Reference Methodology for Agile Digital Businesses
A Reference Methodology for Agile Digital BusinessesWSO2
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)WSO2
 
Lessons from the pandemic - From a single use case to true transformation
 Lessons from the pandemic - From a single use case to true transformation Lessons from the pandemic - From a single use case to true transformation
Lessons from the pandemic - From a single use case to true transformationWSO2
 
Adding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesAdding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesWSO2
 
Building a Future-ready Bank
Building a Future-ready BankBuilding a Future-ready Bank
Building a Future-ready BankWSO2
 
WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2
 
[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIsWSO2
 
[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native DeploymentWSO2
 
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”WSO2
 

More from WSO2 (20)

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
How to Create a Service in Choreo
How to Create a Service in ChoreoHow to Create a Service in Choreo
How to Create a Service in Choreo
 
Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023Ballerina Tech Talk - May 2023
Ballerina Tech Talk - May 2023
 
Platform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on AzurePlatform Strategy to Deliver Digital Experiences on Azure
Platform Strategy to Deliver Digital Experiences on Azure
 
GartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdfGartnerITSymSessionSlides.pdf
GartnerITSymSessionSlides.pdf
 
[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes[Webinar] How to Create an API in Minutes
[Webinar] How to Create an API in Minutes
 
Modernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos IdentityModernizing the Student Journey with Ethos Identity
Modernizing the Student Journey with Ethos Identity
 
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
Choreo - Build unique digital experiences on WSO2's platform, secured by Etho...
 
CIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdfCIO Summit Berlin 2022.pptx.pdf
CIO Summit Berlin 2022.pptx.pdf
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing Choreo
 
Fueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected ProductsFueling the Digital Experience Economy with Connected Products
Fueling the Digital Experience Economy with Connected Products
 
A Reference Methodology for Agile Digital Businesses
 A Reference Methodology for Agile Digital Businesses A Reference Methodology for Agile Digital Businesses
A Reference Methodology for Agile Digital Businesses
 
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
Workflows in WSO2 API Manager - WSO2 API Manager Community Call (12/15/2021)
 
Lessons from the pandemic - From a single use case to true transformation
 Lessons from the pandemic - From a single use case to true transformation Lessons from the pandemic - From a single use case to true transformation
Lessons from the pandemic - From a single use case to true transformation
 
Adding Liveliness to Banking Experiences
Adding Liveliness to Banking ExperiencesAdding Liveliness to Banking Experiences
Adding Liveliness to Banking Experiences
 
Building a Future-ready Bank
Building a Future-ready BankBuilding a Future-ready Bank
Building a Future-ready Bank
 
WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021WSO2 API Manager Community Call - November 2021
WSO2 API Manager Community Call - November 2021
 
[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs[API World ] - Managing Asynchronous APIs
[API World ] - Managing Asynchronous APIs
 
[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment[API World 2021 ] - Understanding Cloud Native Deployment
[API World 2021 ] - Understanding Cloud Native Deployment
 
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
[API Word 2021] - Quantum Duality of “API as a Business and a Technology”
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

Resource-Oriented Architecture (ROA)

  • 1. Resource Oriented Architecture Sep-15-2015 Nuwan Bandara @nuwanbando Solutions Architect, WSO2
  • 2. Software/Computer Systems & Humans ➡ Single most connected artificial entity to humans at present ➡ Rapidly changing and progressing ➡ Increasingly becoming a ubiquitous entity to consume information and act on it ➡ Rules are rapidly changing: Industrial revolution for the software industry is yet to happen
  • 3. Human Interaction ➡ With Humans: People are Identified by a name and can be associated to a location, place of work/study, a profession etc. ➡ With objects: People identify objects by a name and can be associated to a location, type, use of, owned by etc. ➡ The interaction: Change of state - “become a friend” or “buy a caramel latte”
  • 4. The Common Factor ➡ Any kind of an interaction is defined by a simple protocol ➡ You identify something (i.e: name) ➡ You associate it to something to derive meaning (i.e: location) ➡ You change the state (aka interact)
  • 5. Building A Connected Information System ➡ If interaction is the key thing in any system ➡ We need to define the entities, their associations and interactions ➡ In an HR system employee is an entity, “department”, “salary”, “bio” are descriptors or associations to that entity ➡ In an abstract sense we interact with a resource based ecosystem ➡ Every entity and a descriptor can be represented as a resource
  • 6. Resource Orientation Is Not A Leapfrog ➡ Object Oriented Architecture ‣ Every entity is defined as an object ‣ Objects have attributes and actions ‣ Objects have a state ➡ Service Oriented Architecture ‣ Entities are services ‣ Service has a description and a contract ‣ Interacts over the network with a defined location (address)
  • 7. Resource Oriented Architecture (ROA) ➡ The rest of “REST” ➡ Foundations of the Semantic Web ➡ Building a ubiquitous computing ecosystem ➡ Describing a system as a self discoverable entity ➡ Modeling a system based on its logical form (as oppose to the technical form)
  • 8. ROA Fundamentals ➡ Uses Representational State Transfer (REST) as the primary design pattern ➡ Data is independent of the server and the client - The server implementation can change over time and there can be many clients. ➡ Loose coupling is one of the objectives of the architecture ➡ “State” is treated as actions performed against the resource
  • 9. URLs Are The Identifiers Of Resources ➡ Resources are uniquely identifiable ‣ Uniform Resource Name (URN) is a good example of a uniquely identifiable resource name ‣ ISBN is a classic example ➡ URN alone cannot identify a resource, there needs to be a discovery mechanism urn:isbn:9780345376596 https://library.org/books/9780345376596 http://wso2.com/customer/fin23324 or
  • 10. How A URL Should Look Like In ROA ➡ Has to be a logical representation of the resource ‣ The only requirement: A resource identifier has to be an indefinite constant From following patterns which creates an indefinite constant ? http://wso2.com/customer.jsp?id=fin233245 http://wso2.com/customer/v1/fin233245 http://wso2.com/customer/fin233245
  • 11. Lets Examine ➡ {.jsp} is implantation detail ➡ Implementations change over time http://wso2.com/customer.jsp?id=fin233245 http://wso2.com/customer/v1/fin233245 ➡ {v1} is a contractual detail ➡ The resource format (structure) should not define the resource identifier ➡ However the version is an important detail, hence http://wso2.com/customer/fin233245?version:v1
  • 12. Identifier Information & Meta Information ➡ URL parameters as meta information ➡ Meta information do not identify the resource but add more context/flexibility for the consumer http://wso2.com/customer/fin233245?version:v1 http://wso2.com/report/sales/2009/qtr/3?sort=ascending
  • 13. Freedom Of Form ➡ The format of the resource can be of many forms http://wso2.com/customer/fin233245/book.xml http://wso2.com/customer/fin233245/book.json http://wso2.com/customer/fin233245/book.html http://wso2.com/customer/fin233245 Accept: application/json curl -H "Accept: application/json" -O http://wso2.com/customer/fin233245 vs
  • 14. Late Binding ➡ Named references (aka “Pointers” in ROA) ‣ Actual resource is not retrieved unless its explicitly asked for ‣ A reference to the resource is passed in an orchestration curl -H "Accept: application/json" -O http://wso2.com/customers [“http://wso2.com/customer/fin233245”, “http://wso2.com/customer/ecom233246”] ➡ This methodology allows a system built with ROA enforce granular level of entitlement
  • 15. Loosely Coupled & Logically Connected ➡ Resources are identified by it’s logical meaning - URL construction (ROA 101) ‣ Independent of the server implementation - Greater flexibility for change ‣ Clients are intact - Clients are wired to the resource ➡ Following Postel's Law - Be strict in what you provide (Resource identifier, data formats etc) but be flexible when receiving (different clients should be able to send data in different formats)
  • 16. Hypermedia As The Engine Of Application State (HATEOAS) ➡ Client does not have any meaningful idea about the data sent by the server ➡ Client can only render it ➡ Client interact with the server only via hypermedia ➡ No prior contract, client will discover possible actions by understating the resource representation sent by the server ➡ The resource representation is state-full and sent across the hypermedia
  • 17. Understanding HATEOAS ➡ Listing a book in the library GET /book/9780345376596 HTTP/1.1 Host: library.org Accept: application/json .. HTTP/1.1 200 OK Content-Type: application/json Content-Length: … { "name": "the pale blue dot", "ISBN": "9780345376596", "author": "carl sagan", "borrow": "http://library.org/book/9780345376596/borrow" } GET /book/9780345376596 HTTP/1.1 Host: library.org Accept: application/json .. HTTP/1.1 200 OK Content-Type: application/json Content-Length: … { "name": "the pale blue dot", "ISBN": "9780345376596", "author": "carl sagan", "return": "http://library.org/book/9780345376596/return" } ➡ Listing a book after its been borrowed
  • 18. Semantic Web & ROA ➡ Defines a structured relationship of resources (over the web) ➡ Defines the means of querying an exact resource vs arbitrary discovery ➡ Identifies resources as edges and nodes ‣ An edge represent a data element ‣ A node describe more nodes & edges
  • 19. Micro-Services & ROA ➡ “Micro-Services Architecture” is properly Implements SOA ➡ Micro Services complements ROA ➡ Micro service in essence is a service with the right level of granularity performing a specific business task ➡ In a high level a “micro service” is the implementation of a resource with its contextual details ‣ The library example: The book is a resource in the library, you can borrow and return a book and that encapsulate the logical book in a library which can be implemented as a micro service
  • 20. References ➡ http://www.infoq.com/articles/roa-rest-of-rest#anch50927 ➡ https://www.ics.uci.edu/~fielding/pubs/dissertation/ rest_arch_style.htm#sec_5_1 ➡ https://www.ics.uci.edu/~fielding/pubs/dissertation/ rest_arch_style.htm#sec_5_2 ➡ http://www.w3.org/standards/semanticweb/
  • 21. Image References ➡ https://www.bestthinking.com/articles/computers_and_technology/ software/software_architecture/designed-for-humans ➡ http://www.socialsongbird.com/2014/08/social-media-and-human- interaction.html ➡ https://jlmhenson20xs.wordpress.com/2013/10/22/a-great- interaction/ ➡ http://theviewinside.me/if-you-want-peace-of-mind-defeat-your- past-by-climbing-your-own-mount-everest/