Date post: | 29-Oct-2014 |
Category: |
Technology |
Upload: | miteshisheth |
View: | 991 times |
Download: | 1 times |
Services OrientationServices Orientation
<Presenter><Presenter><Presenter><Presenter>
Goal of Today
Discuss Strategy and build consensusfor the continued evolution of a flexibleEnterprise Architecture.
Agenda
Flexible IT, Better Strategy Designing for Business Processes Developing for Business Solutions Challenges Ahead
Agenda
Flexible IT, Better Strategy Designing for Business Processes Developing for Business Solutions Challenges Ahead
Flexible IT, Better StrategyThe McKinsey Quarterly, 2003 Number 4
IT architecture determines the agility with which companies can carry out strategy The difficulty and cost of modifying today's IT
architectures can be so high that some companies would rather abandon new strategic initiatives than make a single change to the applications they already have in place.
Service-Oriented Architectures promise to reduce if not remove the current obstacles.
Information technology, far from lacking strategic worth, determines strategic value
Business Processes RuleThis is the Fundamental Assumption
Everything Enterprise IT does is in the service of some business process
Service-Oriented Architecture (SOA) is about making business processes: Better Easier to change Cheaper to create Faster to Assemble
David Chappell: Service Oriented Architecture: What’s Next (www.davidchappell.com)
Service Oriented Architecture Defining the Term
Flexible software providing Services leading to agile business processes.
Services are a technology agnostic
end point that either answers a question or raises a notification when a meaningful event occurs.
What does SOA mean: To the CIO
means for protecting existing IT investments without inhibiting the deployment of new capabilities.
To the Business Analyst means of bringing information technology investments
more in line with business strategy. To the Developer
Means for creating dynamic collaborative applications. To the IT Manager
means for effectively integrating the diverse systems typical of modern enterprise data centers.
To Microsoft a crucial prerequisite to creating connected systems.
SQLSQL
AppAppInternalsInternals
Service OrientationBasic Consumer/Provider view
ServiceServiceFaçadeFaçade
Service ConsumersService Consumers Service ProviderService Provider
How the application is constructed and hosted is How the application is constructed and hosted is independent of the service implementationindependent of the service implementation
Shift To Service Orientation
Integrations = cost Function oriented Build to last Prolonged
development
FromFrom ToTo Integrations = value Process oriented Build for change Incrementally
deployed
Application silos Tightly coupled Object oriented
Orchestrated solutions
Loosely coupled Message oriented
Enterprise Flexibility
Packaged Application
s
Custom Applications
Aggregation
Business Process Management
Identity and Access Mgmt
Web Services Management
Application Monitoring
Testing and Performance
Presentation Services
Data and Capabilities exposed as Services…
…customized via shared middle-tier middleware…
…are aggregated to fit user needs
Legacy
Warehouse
Process Aggregation
Single Sign On
Two-way integration
User Specific Experiences
Operations Executive Marketing
Infrastructure
Integration
Management
Key Attributes
Flexible Sourcing Legacy Rationalization
Hidden from users Service Reuse Customization in Middle-Tier
Services remain Generic Process and Data Integration
SOA is all about ROI
BillingOrder Mgmt
Custom Apps
PeopleSoft
Point to Point Integrations Point to Point Integrations are costly to develop and are costly to develop and
maintainmaintain
… … Services Services Integrations add Integrations add
Value by enabling Value by enabling FlexibilityFlexibility
Why SOA Makes Sense: Business Benefits
Services are a Language to Discuss Business Processes So IT people can talk with them more
easily about solutions Business processes become explicit
So they can more easily be understoodand improved
Applications or business processes mightbe more easily replaced
Because they’re well-defined and discrete
Why SOA Makes Sense: Technical Benefits
Deployment is explicit Bridges Infrastructure and Development
Building business processes is faster and cheaper Services can more easily be reused Applications can expose their services in
a standard way Applications can be exposed more
easily to diverse clients Windows clients, Web Clients, Host-based
clients, External Clients, etc…
Agenda
Flexible IT, Better Strategy Designing for Business Processes Developing for Business Solutions Challenges Ahead
Designing for Business ProcessesThinking in Services Orientation Business Services Conceptual Shifts Capabilities Analysis Enterprise Services Scenarios
Designing Business ProcessesIdentify Business Services
BeginBegin
SuccessSuccess
FailFail
Business ServicesSteps in the Larger Business Process Enterprises Need Business-Services
Projects One or More Services to the World Outside Business Process for a specific aspect Encapsulates Some Database Resident Data Implemented with Business-Logic
DataDataSQLSQL
BusinessBusinessServiceService
ServicesServices
Composite Business-ServicesProcesses define Solutions A Business-Service May Be Implemented
by Many Business-Services Must Look Like a Single Business-Service
Can’t Tell from the Outside
Business-ServiceBusiness-Service
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Biz-SvcBiz-Svc
Communication withCommunication withthe world outsidethe world outside
Capabilities AnalysisExternalizing the Capabilities and Data
SQLSQL
AppAppInternalsInternals
Please Do Please Do this on my this on my
behalfbehalf
Please Please provide me provide me some data.some data.
Everyone! Everyone! This data This data changed.changed.OK, I’ll get OK, I’ll get
back to you back to you when it’s when it’s
done.done.
OK, here’s OK, here’s what I’ve what I’ve
got.got.
I completed I completed successfullysuccessfully
Four Tenets of SOARules to Design By
Boundaries are explicit Services are autonomous Services share schema and contract,
not class Service compatibility is determined
based on policy
Conceptual Shift: DataQuestions to Consider What system is Authoritative for this data?
How does this version over time? Is this data Idempotent?
What external data is needed by which systems? What is the SLA for this data of this data and why?
How often does external data change? What aspects of that change are meaningful? How fresh does this need to be in other systems?
At what level of detail? What relationships exist between data?
What happens when not everything can be changed? What happens when changes fail?
Conceptual Shift: CapabilitiesQuestions to Consider
What are the discrete steps that make up this Business Solution?
What are the most important things an application does?
What are the scenarios where other applications might request another app to perform an action?
What are the most reusable capabilities an application provides?
On whose behalf do these actions need to take place?
Why might a request be rejected? What SLA is required for the activity?
Business Services ImpactEnables Agility
Solutions Focus Flexible and Composable Applications Ability to rapidly Adapt systems to the
needs of the Business Compose new ways of doing things by
assembling new processes over existing services
Enterprise Services Scenarios:Integration Patterns Policy and Business Interest Manager Business Entities and PeopleSoft Policy and Business Entities Publishing Endorsable Events
Policy and Business InterestsRequest Response Pattern
BusinessInterest
Manager
A
PolicyA
<Message id=‘<Message id=‘200200’>’>
<Request Contract=‘<Request Contract=‘LocationListLocationList’ Version=‘’ Version=‘2.2’>2.2’>
<Customer Id=‘AllPeril’/><Customer Id=‘AllPeril’/>
</Request></Request>
</Message></Message>
Service Manager
<Message id=‘761’><Message id=‘761’>
<Response To=‘<Response To=‘200200’ Contract=‘’ Contract=‘LocationListLocationList’ Version=‘’ Version=‘2.22.2’>’>
<Customer Id=‘AllPeril’/><Customer Id=‘AllPeril’/>
</Response></Response>
</Message></Message>
<Body><Body>
<LocationList><LocationList>
<Location Id=‘1231’ Name = ‘HQ’ … /><Location Id=‘1231’ Name = ‘HQ’ … />
<Location Id=‘5377’ Name = ‘Div’ … /><Location Id=‘5377’ Name = ‘Div’ … />
<Location Id=‘9621’ Name = ‘Site’ … /><Location Id=‘9621’ Name = ‘Site’ … />
</LocationList></LocationList>
</Body></Body>
Stored Procedures
User Interface
Business Facade
Business Logic
Common Services
Data Storage
Typed Datasets
Business Entities and PeopleSoft Publish Subscribe Pattern
PeopleSoft
A
BusinessEntities
A
<Message id=‘279’><Message id=‘279’>
<Notify Contract=‘ContactInfo’ Version=‘<Notify Contract=‘ContactInfo’ Version=‘1.71.7’>’>
<Action Type=‘Update’ Id=‘1990124’ EntityId=‘197811’/><Action Type=‘Update’ Id=‘1990124’ EntityId=‘197811’/>
</Notify></Notify>
<Body><Body>
<ContactInfo Type=‘Original’ Version=‘281’ …. /><ContactInfo Type=‘Original’ Version=‘281’ …. />
<ContactInfo Type=‘New’ Version=‘282’ …. /><ContactInfo Type=‘New’ Version=‘282’ …. />
</Body></Body>
</Message></Message>
OtherOtherServiceService
OtherOtherServiceService
BizTalkBizTalk
<Message id=‘507’><Message id=‘507’>
<Notify Contract=‘ContactInfo’ Version=‘<Notify Contract=‘ContactInfo’ Version=‘1.21.2’>’>
<Action Type=‘Update’ Id=‘1990124’ EntityId=‘197811’/><Action Type=‘Update’ Id=‘1990124’ EntityId=‘197811’/>
</Notify></Notify>
<Body><Body>
<ContactInfo Type=‘Original’ Version=‘281’ …. /><ContactInfo Type=‘Original’ Version=‘281’ …. />
<ContactInfo Type=‘New’ Version=‘282’ …. /><ContactInfo Type=‘New’ Version=‘282’ …. />
</Body></Body>
</Message></Message>
OtherOtherServiceService
OtherOtherServiceService
Policy and Business Entities Notification and Conversation Pattern
Policy
ABusinessEntities
A<Message id=‘381’><Message id=‘381’>
<Notify Contract=‘AddressInfo’ Version=‘1.8’><Notify Contract=‘AddressInfo’ Version=‘1.8’>
<Action Type=‘Add’ Id=‘<Action Type=‘Add’ Id=‘171021171021’ EntityId=‘’ EntityId=‘197811197811’/>’/>
</Notify></Notify>
</Message></Message>
<Message id=‘<Message id=‘200200’>’>
<Request Contract=‘AddressInfo’ Version=‘2.2’><Request Contract=‘AddressInfo’ Version=‘2.2’>
<EntityId=‘<EntityId=‘197811197811’/>’/>
<Add Id=‘<Add Id=‘171021171021’/>’/>
</Request></Request>
</Message></Message>
<Message id=‘761’><Message id=‘761’>
<Response To=‘<Response To=‘200200’ Contract=‘AddressInfo’ Version=‘2.2’>’ Contract=‘AddressInfo’ Version=‘2.2’>
<EntityId=‘<EntityId=‘197811197811’/>’/>
<Add Id=‘<Add Id=‘171021171021’/>’/>
</Response></Response>
<Body><Body>
<AddressInfo Id=‘<AddressInfo Id=‘197811197811’ LocationName = ‘HQ’>’ LocationName = ‘HQ’>
<Street Id=‘5377’>201 Jones Road</Street><Street Id=‘5377’>201 Jones Road</Street>
……..
<Country Id=‘<Country Id=‘712712’/>’/>
<AddressInfo/><AddressInfo/>
</Body></Body>
</Message></Message>
<Message id=‘<Message id=‘201201’>’>
<Request Contract=‘CountryInfo’ Version=‘4.5’><Request Contract=‘CountryInfo’ Version=‘4.5’>
<CountryInfo Id=‘<CountryInfo Id=‘712712’/>’/>
</Request></Request>
</Message></Message>
<Message id=‘762’><Message id=‘762’>
<Response To=‘<Response To=‘201201’ Contract=‘CountryInfo’ Version=‘4.5’>’ Contract=‘CountryInfo’ Version=‘4.5’>
<CountryInfo Id=‘<CountryInfo Id=‘712712’/>’/>
</Response></Response>
<Body><Body>
<CountryInfo Id=‘<CountryInfo Id=‘712712’ Name = ‘<Name>’>’ Name = ‘<Name>’>
<GPSInfo Latitude=’48.17’ Longitude=’91.44’ /><GPSInfo Latitude=’48.17’ Longitude=’91.44’ />
<Capital Name=‘<Name> City’ …/><Capital Name=‘<Name> City’ …/>
</CountryInfo></CountryInfo>
</Body></Body>
</Message></Message>
BizTalkBizTalk
RATS
Publishing Endorsable Events Database Isolation Pattern
CSS Database
Policy
Se
rvice In
terfa
ce
Stored Procedures
Data Storage
Models
Common Framework
Commands
A
User Interface
Agenda
Flexible IT, Better Strategy Designing for Business Processes Developing for Business Solutions Challenges Ahead
Developing for Business Solutions CSS Application Architecture 1.0 CSS Application Architecture 2.0
CSS Application Architecture 1.0
Separated the layers of an application internally
Designed for potential reuse Façade provides security
Stored Procedures
User Interface
Business Facade
Business Logic
Common Services
Data Storage
Typed Datasets
Dataset changes rippled through the layers
Significant amount of code in stored procedures
Issues with Architecture 1.0Appropriate for your Initial Implementations Tight coupling across layers
Results in brittle code that is not tolerant to data changes Security is Developer Dependent No clear enforcement of Business Rules with Data Business processes are not dynamic Database-centric architecture
Significant amount of Code inside the Database Significant amount of SQL-oriented Code in the UI/BL
Bound to a delivery (Web or Windows) Significant amount of Code in the UI
Deployment is a complex operation
Design Principles for 2.0Targeted at Where You are Going
Promote Object Oriented Design Patterns Encapsulate Business Data within Rules Focus on Modeling the Domain Isolate dependencies per Layer
Reduce Code Duplication Create class hierarchies with inheritance to share
implementations – one place to fix Design Interfaces for extensibility
Integrate Infrastructure Build in Security, Instrumentation, Logging, etc.
XML-centric architecture Allows for DataSource agnostic approach Adds richness of Xml family (XPath, XSL, etc.)
Design for reuse: Web, Windows, Services Simplifies Packaging and Deployment
CSS Application Architecture 2.0
Data Storage
Models
Common Framework
Domain Models
Underlying Domain Model implements the local business processes of an application
Designed for Reuse Designed to be independent of physical storage
User Interface
Web Framework
External Services Interfaces
Services Framework
Models
Application Building Blocks
Models and Commands CommonFramework abstracts Storage
Data Storage
Models
Commands
MSMQ
XMLXML
Web Services
ICommand
Model
ModelCollection
Model
Model
ModelCollection
Model
IBehaviour
Model
ModelCollection
Model
IBehaviour
Model
Model
Domain Domain ModelsModels
Persistence Persistence ModelsModels
Service ModelsService Models
Contract Model
ID
Version
Schema Fields
Contract Model
ID
Version
Schema Fields
UI ModelsUI Models
Domain Driven Design
UI Model
ID
UI Fields
UI Behaviors
UI Model
ID
UI Fields
UI Behaviors
Conceptual Shift: DevelopersQuestions to Consider
What Responsibilities does this application have? What Entities do I need to work with? How do I model these things and their
relationships? What Business Process is this application
supporting? Is it a part of a larger Process? What happens when the larger process fails?
Design for the Business Processes Stop designing from the Database Stop designing from the UI
Conceptual Shift: BAs, BSLsQuestions to Consider
Why does the Business need this application?
Where are the Business processes evolving? i.e. where might change be inevitable?
How can a Business Process be automated What steps to be taken? What already exists?
Stop recreating Screens from other Systems…
Agenda
Flexible IT, Better Strategy Designing for Business Processes Developing for Business Solutions Challenges Ahead
Design Artifacts High level to Low Level
Enterprise View Application View Feature View
Enterprise ViewOverall Solution
Analyze the impact on the Enterprise What is the organizational impact of… Define the steps of the Solution in an
abstract manner Identify the capabilities expected of
each Service Provider Determine failure paths What are the expected inputs and
outputs in each Business Process Step
Enterprise Business ProcessOverall Solution View
BeginBegin
SuccessSuccess
FailFail
Application ViewCapabilities Definitions
Design the local business process as series of small abstract steps
What is the responsibility of this application or service?
What features are required to process the inputs into the outputs Work backward from the outputs What abstract objects (responsibilities) are
required to execute this process? How does this fit or not fit with the overall
domain model Focus on abstract types (Interfaces, Abstract
base classes) Identify the relationships and dependencies
within the Domain and within each layer
Model
ModelCollection
Model
Model
ModelCollection
Model
IBehaviour
Model
ModelCollection
Model
IBehaviour
Model
Model
Domain Domain ModelsModels
Persistence Persistence ModelsModels
Service ModelsService Models
Contract Model
ID
Version
Schema Fields
Contract Model
ID
Version
Schema Fields
UI ModelsUI Models
Application Level Processes
UI Model
ID
UI Fields
UI Behaviors
UI Model
ID
UI Fields
UI Behaviors
Feature ViewLow Level Implementation Details
Low level design of the internals of the steps of a local business process
Design the specifics methods and properties of the objects involved
Detailed definition of the Contracts required to support the services
Design of the concrete classes that support the abstractions What factories are needed? How will a sub-type be defined?
Leverage the Artifacts
GEA Model Business Process Models
Stems from the Business Activities Business Component Model High level view Take it to the next level of detail
Challenges Ahead
Aspects of Change Adopting an SOA Adopting the Common Framework Change Issues
Summary
Evolution of existing Architecture Architectural Solution for integrating
Authoritative Sources Actionable patterns to move the
Automation Plan forward