resource oriented esb
TRANSCRIPT
Resource Oriented Enterprise Service Bus
Jeremy Deane http://jeremydeane.net
There are over 1500 pages of specifications
Vendor support and interpretation of the specifications is not universal
Standards Organizations certify vendor interoperability which in turn create more specifications
WS-* Specifications & Vendors & Standards! Oh My!
To the RESTcue
Simple Integration
REST is simple…but is not a complete enterprise solution
Standards-based
REST is based on a small set of widely-accepted standards such as HTTP URI, and XML
REST requires far fewer development steps, toolkits and execution engines than SOAP
Fewer requirements
Resource-Oriented Architecture (ROA)
URI
HTTP Methods
A service provides access to a resource, identified by a Universal Resource Indicator (URI), over HTTP
HTTP methods (e.g. GET, PUT, POST, and DELETE) define a uniform interface
Consumer and provider exchange immutable representations of a resource that may itself contain links to other resources
Resources & Representations
• Resource-Oriented Architecture extends the REST architectural style
• Resource-Oriented Architecture is similar to Web Oriented Architecture (WOA)
ROA Key Concepts
<scheme name>:<authority><path>
http://host/context/employee/1234
A resource is an abstraction of informationResource
Immutable representations of a resource are exposed using a relative URIRepresentations
A relative URI does not contain the scheme name or authority informationRelative URI
A resource provider allows transport-independent stateless C.R.U.D access to a resource
Resource provider
ROA Conceptual Model
Execution Context
Service
Resource
Resource Representation
Resource Provider
Relative URI
Policies and Contracts
Service Consumer
Real-World Effect
part of
use
represents
seeks
part of
provide access to
returns
constrains
limits use of
hosts
identifies
OASIS SOA Concepts
Resource Oriented Concepts
Key
ROA Services
HTTP PUT GET POST DELETE
Action Create Retrieve Update Delete
A resource-oriented service provides an extensible transport-independent foundation
Relative URI - /noun/{ID}
Actions - Create, Retrieve, Update, Delete
Transports, such as HTTP and JMS, reside at the edge of the system and map external requests to resource-oriented services
http://host:8080/employee/1234 --> /employee/12345
ROA Services
Property Value
RelativeURI /noun/{ID}
Action Create, Retrieve, Update Delete
JMSReplyTo Response destination
ContentType Mime Type
A JMS transport uses a message’s properties to map the request to a resource-oriented service
The JMSReplyTo property is used if the action is retrieve or if some other response is required (e.g. confirmation or error)
The Type property is used to determine if the payload (resource representation) is binary or text
ROA Service Example
«execution environment»Resource Oriented Platform
Resource-Oriented Service
HTTP Transport
JMS Transport
URI
Consumer A
Consumer B
HTTP GET
JMS Retrieve
8080
443
Queue
Response Queue
Both consumers request and receive a resource representation
The Request Reply Enterprise Integration pattern enables the interaction between Consumer B and the resource provider
ROA Service Security
Authentication - assurance of consumer identity
•HTTP Basic Authentication or HTTP Digest
•Encrypted credentials in JMS Property
Authorization - unauthorized resource access is prevented
•A privilege is comprised of a relative URI and an action (C.R.U.D)
•Accounts are associated with privileges or roles (sets of privileges)
Auditing - a change to the state of a resource is logged
Confidentiality - securing resource representations
Create, Update or Delete actions are audited
Encryption of resource representations
P2P Hidden Costs
Bottom Line SOA by Marc Rix
Web services
A web service does NOT truly decouple the consumer and provider
P2P Messaging
P2P asynchronous messaging also does NOT decouple the consumer and provider since they both must maintain queue locations
P2P Integrations
The cost of maintaining P2P integrations increases exponentially as the number of the connections increases
# of connections
$
gain
value
cost
loss
Enterprise Service Bus (ESB)
Enterprise Service Bus (ESB)
An Enterprise Service Bus (ESB) is middleware that provides a platform for service provisioning and decouples consumers from service providers
Enterprise Integration Design Patterns
An ESB implements several key Enterprise Integration Design Patterns
Service Gateway Pipes and Filters
Content Based Router Process Manager
Point-to-Point vs. Service Bus
ESB Key Concepts
The core capabilities that enable service provisioning across an enterprise include:
Addressing specifies the location of a service regardless of transport
And the main benefits of an ESB include:
Standards-based Enterprise Integration
Framework
Enterprise Architectural Agility
Service Reuse (e.g. Composition & Orchestration)
Routing defines a message path from service provider to consumer
Transformations provides consumer representation transformations
Resource Oriented ESB (ROA + EI Patterns)
«execution environment»Resource Oriented Platform
Resource-Oriented Service
HTTP Transport
JMS Transport
URI
8080
443Resource-Oriented ServiceURI
Resource-Oriented ServiceURI
Enterprise Integration Patterns
Resource Oriented Computing Platform
ROC platform
Netkernel is a Resource-Oriented Computing (ROC) platform that runs within a Java Virtual Machine (JVM)
Transports
Transports are used to• Capture external request or events•Map request or event data to a logical
address (URI) and action (C.R.U.D)• Issue sub-request to a RESTful
Microkernel
RESTful microkernel
The RESTful microkernel• Resolves requests to the address space to
physical code• Schedules request to run on available
core allowing processing to scale linearly
NetKernel Middleware Server
TransportsHTTP, JMS, FTP
Logical Address SpaceURI
RESTfulMicrokernel
Physical Code(Java, Ruby, Python)
Resource Oriented ESB Demo: Content Based Router
«execution environment»NetKernel Server
JMS Transport
Active MQ
Vendor App
Create: Employee XML
Queue
HTTP Transport
8080
443
Employee/employee/{id}
JMeter
Vendor App
Update: Employee XML
Benefits Route Department Route DW Route
Enrollment XML
Employee XML
Employee XML
/route/benefits/employee{id} /department/{id}employee{id} /route/dw/employee{id}
Active MQ
HRS
DW
DW
JMS: Enrollment XML FILE: Employee XML
Resource Oriented ESB Benefits
Internet Resource Map
Integration functionality
Pushes integration functionality to the edge of the network (as a URI), translating into better service management and scalability
Complexity, cost and time
Reduces integration complexity, lowers cost of entry and decreases time to market
Independent evolution
Decouples consumes from providers allowing each to evolve independently
Questions & Feedback
My Contact information:
Jeremy DeaneChief ArchitectPlymouth Rock Assurancehttp://jeremydeane.net
The source code along with instructions for building, installing and running the demo can be downloaded: http://jeremdeane.net/demos/ResourceOrientedESB.zip