Up in the Cloud: ��Service-Oriented Architecture �and the Future of Computing
A Data-Centric Approach
A presentation to DAMA
By David Lawrence
June 22, 2010
SOA Components
����Page
BPM
Virtualization
Virtual Data Centers
SaaS
Reusability
Service
Stateless
Loose Coupling
HTTP/SOAP
Web Service
Internet
Service�Contract
Actions
On Demand�Computing
Govern
Choreograph
Enqueue
Listen
Event Driven Architecture
Interoperability
Robustness
EAI
Legacy Migration
XML
Abstraction
Transactions
Workflows
Object-Oriented
Open Standards
Open Architecture
Enterprise Service Bus
Distributed�Computing
Metadata
WSDL
Registry
Components
Encapsulation
Discoverability
Provide Service
Consume Service
UDDI
RPC
JAVA
.Net
Open Source
JMS
Authenticate
Open Interfaces
Web 2.0
Messaging Systems
Technologies
Architectures
Patterns
Publish
Integration
Service-Oriented Architecture
Principles
Communicate Asynchronously
Subscribe
Communicate Synchronously
Dequeue
WS-Reliability
Introduction
Key Insights:
����Page
Key Terms
����Page
Presentation Outline
Part I: What is the data cloud?
Part II: What are key concepts in the data cloud?
Part III: The data cloud: An example
����Page
Part I: What is the data cloud?�
����Page
What is a service?
����Page
What is a Web service?
Different Camps – focused on technical terminology
My view – based on an architectural approach
����Page
Aside: Frameworks
Framework: consists of a software framework used by software developersconsists of a software framework used by software developers to implement the standard structure of an application for a specific development environment
Spring Framework: Spring is a leading open source, POJO framework providing a one stop shop for all your enterprise application development needs. The flexibility of configuring the service assembly and its ease of use in test-driven development is, perhaps, one of its biggest selling features
����Page
Spring Framework
����Page
Industry Trends: Frameworks
����Page
What is a service-oriented architecture
SOA = Pub/Sub Message bus?
����Page
How does it compare to a Distributed Component Architecture?
����Page
N-tier vs service-oriented applications
Why is an n-tier architecture considered application distribution and not application integration?
In contrast, service-oriented applications are independent applications, but coordinate in a loosely coupled way
����Page
Fundamental Problems of SOA
����Page
What is an event-driven architecture?
����Page
Event model
����Page
Event-sourced system: Capture all changes to application state as a sequence of events
����Page
(messages)
What are defining qualities of an EDA?
����Page
What is a cloud?
Data Driven Cloud:
Compare to other types of clouds (not pure data exchanges)
����Page
Why will the data cloud change the nature of software development
����Page
Part II: What are key concepts in the data cloud? �
����Page
What are key principles for the data cloud?
����Page
Deep dive on important principles
����Page
What is a transaction?
Transaction: The key concept of the data cloud
ACID
����Page
How transactions work with queues
����Page
Server
Reply queue
Request queue
Transaction 2:
�Start
Dequeue
process request
Enqueue
Commit
Client
Transaction 1:
�Start
get input
construct request
Enqueue
Commit
Transaction 3:
�Start
Dequeue
decode reply
process output
Commit
Stateful
Device
Log
Transaction 1
Transaction 2
Transaction 3
Transaction
(Business level)
Workflow (Conversation)
����Page
Check Travel Costs
Book Reservation
Find Reservation
Find
Make Tentative Reservation
Compute Cost
Still
Available ?
Cost > Budget
No
Cancel Previous Selection
Cost ≤ Budget
Complete Reservation
Compensating Transaction
Yes
Independent Systems
Possible
Delay
Messaging: The Poster Child of Loose Coupling
����Page
Asynchronous messages
����Page
Tightly Coupled Architecture
����Page
Loosely Coupled
Avoids:
����Page
Loosely Coupled
����Page
Web Services: Tightly coupled to loosely coupled (Stateful messages)
����Page
Advantages of Loose Coupling
����Page
Abstraction (Example 1)
����Page
Abstraction (Example 2)
����Page
Part III: The data cloud: An example �
����Page
Loan Quote with Broker
����Page
Event Cloud
����Page
Event:
Ask for Quote
Event:
Get Credit Score Select Best Rate Return Quote
Event:
Provide Rate Quote Bank 1
Consumer
Loan Broker
Credit Bureau
Bank 1
Bank 2
Bank 3
Event:
Return Credit Score
Event:
Provide Rate Quote Bank 2
Event:
Provide Rate Quote Bank 3
Event Cloud with Enterprise Service Bus
����Page
Event JMS/HTML/XSLT, etc:
GetQuote
Event Web Service:
GetCreditScore GetLoanQuote SelectBestRate
Event Web Service:
RateQuote
Consumer
Loan Broker
Credit Bureau
Bank 1
Bank 2
Bank 3
Event Web Service:
ReturnCreditScore
ESB
Event Web Service:
RateQuote
Event Web Service:
RateQuote
Workflow (aka Conversation) example
����Page
Compensating Transaction:
Re-verify Credit Score
Event JMS:
GetQuote
Event Web Service:
GetCreditScore GetLoanQuote SelectBestRate
Event Web Service:
RateQuote
Consumer
Loan Broker
Credit Bureau
Bank 1
Bank 2
Bank 3
Event Web Service:
ReturnCreditScore
ESB
Event Web Service:
RateQuote
Event Web Service:
RateQuote
Time Delay
Canonical Data Model
����Page
Consumer
Loan Broker
Credit Bureau
Bank 1
Bank 2
Bank 3
Canonical Data Model
Stateless Message
<QuotedCustomer>
<FirstName>Jim</FirstName>
<LastName>Phillips</LastName>
<Address>151 Main Street</Address>
<City>Cambridge</City>
<State>MA</State>
<ZipCode>02139</ZipCode>
<PhoneNumber>617-555-1212</PhoneNumber>
<SSN>xxx-xx-xxxx</SSN>
<QuotedCustomer>
<FirstName>Jim</FirstName>
<LastName>Phillips</LastName>
<Address>151 Main Street</Address>
<City>Cambridge</City>
<State>MA</State>
<ZipCode>02139</ZipCode>
<PhoneNumber>617-555-1212</PhoneNumber>
<SSN>xxx-xx-xxxx</SSN>
<AppState>???</AppState>
Stateful Message (Type1)
Initial After Loan Broker After Credit Bureau After Bank 1 After Bank 2 etc
Possible States:
<QuotedCustomer>
<FirstName>Jim</FirstName>
<LastName>Phillips</LastName>
<Address>151 Main Street</Address>
<City>Cambridge</City>
<State>MA</State>
<ZipCode>02139</ZipCode>
<PhoneNumber>617-555-1212</PhoneNumber>
<SSN>xxx-xx-xxxx</SSN>
<RateQuote1>0.0525</RateQuote1>
etc.
Stateful Message (Type2)
Asynchronous Messaging
����Page
Consumer
Loan Broker
Credit Bureau
Bank 1
Bank 2
Bank 3
GetQuote
GetCreditScore
GetLoanQuote
RateQuote
ComputeRate
ReturnCreditScore
ComputeCreditScore
RateQuote
ComputeRate
RateQuote
ComputeRate
SelectBestRate
RateQuote
Synchronous
GetQuote
GetCreditScore
GetLoanQuote
RateQuote
ReturnCreditScore
ComputeCreditScore
GetLoanQuote
GetLoanQuote
ComputeRate
ComputeRate
ComputeRate
RateQuote
RateQuote
SelectBestRate
RateQuote
Asynchronous
Lessons Learned
����Page
The Future of the Cloud:�Business Operations Platform
����Page
My Company’s Business Processes
D
Development
Team
Data Professional
Questions?
����Page
What is a Cloud
����Page
What is a Service
����Page
What is a Web Service
����Page
What does SOA Mean
����Page
Why SOA Changes the nature of application development
����Page
Synchronous vs Asynchronous
����Page
State: Active
State: Waiting
State: Active
Processing Response
Request for Data
Response
State: Active
State: Active with
Other Processes
State: Active
Processing Response
Request for Data
Response
����Page
����Page
����Page
����Page
����Page
����Page
1-1
����Page
1-2
����Page
1-3
����Page
1-4
����Page
2
����Page
2
����Page
2
����Page
2
����Page
2
����Page
2
����Page
3-2
����Page
3-1
����Page
3-4
����Page
3-4
����Page
3-5
����Page
3-8
����Page
3-14
����Page
����Page
����Page
����Page
Messaging: The Poster Child of Loose Coupling
����Page