composite user interfaces for service oriented systems without exercises
DESCRIPTION
Slides for my Composite User Interfaces for Service Oriented Systems workshop.TRANSCRIPT
![Page 1: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/1.jpg)
Composite UIfor Service Oriented Systems
Daniel Marbach @danielmarbachbbv Software Services AG
![Page 2: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/2.jpg)
De CompositionW
hy
How
Why
How
![Page 3: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/3.jpg)
SystemApplication
Fancy 1.0
![Page 4: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/4.jpg)
SystemApplication
Fancy 1.0
![Page 5: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/5.jpg)
The network is reliable
Latency isn’t a problem
Bandwidth isn’t a problem
The network is secure
Topology won’t change
The administrator will know what to do
Transport cost isn’t a problem
The network is homogeneous
The system is atomic/monolithic
The system is finished
Business logic can and should be centralized
![Page 6: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/6.jpg)
The network is reliable
var svc = new MyService();var result = svc.Process(data);
![Page 7: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/7.jpg)
Risk analysisInfrastructure and software redundancyReliable messaging
![Page 8: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/8.jpg)
Latency isn’t a problem
Network
In-Memory
Serialization
![Page 9: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/9.jpg)
Don’t cross the networkTake all data you might needMinimize chit-chat
![Page 10: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/10.jpg)
Bandwidth isn’t a problemBigData
Congestion
![Page 11: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/11.jpg)
Balance eager fetch vs. lazy loadingBalance bandwidth vs. latencySeparate networks
![Page 12: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/12.jpg)
The network is secure
100% Safety is not possible
![Page 13: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/13.jpg)
Threat model analysisBalance costs against risksTalk about it
![Page 14: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/14.jpg)
Topology won’t changeServer down
Server moved
![Page 15: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/15.jpg)
Don’t hard-codeResilient protocolsDiscoveryChaos Monkey
![Page 16: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/16.jpg)
The administrator will know what to do Bus factor
Updates
![Page 17: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/17.jpg)
Automate & Test deploymentDesign for multiple versions runningconcurrentlyAllow part of the system to be takendown
![Page 18: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/18.jpg)
Transport cost isn’t a problemSerialization
Hardware
![Page 19: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/19.jpg)
Reduce chit-chatInfrastructure versus development costs
![Page 20: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/20.jpg)
The network is homogeneous.NET/Java
NoSQL, REST
![Page 21: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/21.jpg)
Interop is hardBudget for it
![Page 22: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/22.jpg)
The system is atomic/monolithicNot scalable
Single DB
Ripple effects
![Page 23: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/23.jpg)
Internal loose couplingModularizeDesign for scale out in advance
![Page 24: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/24.jpg)
The system is finishedEffort ($/T) “Finished” Rewrite
Original date “never”finished
![Page 25: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/25.jpg)
Design for maintenanceDesign for upgradesVersioning is hard
![Page 26: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/26.jpg)
Business logic can and should be centralized
![Page 27: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/27.jpg)
Logic is distributed, live with itGroup by feature
![Page 28: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/28.jpg)
Big Ball of MudMonolithic
![Page 29: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/29.jpg)
CouplingX depends on Y
![Page 30: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/30.jpg)
Afferent Efferent
who depends on you on who you depend
![Page 31: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/31.jpg)
Platform Temporal Spatial
![Page 32: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/32.jpg)
Platform
Interoperability
Using platform dependent protocols- Remoting- Enterprise Services- Datasets over Webservices
![Page 33: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/33.jpg)
PlatformXML / XSD, JSON, Protocol BufferHTTPWSDL…
![Page 34: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/34.jpg)
TemporalX depends on Y and processing time of Y directlyinfluences the processing time of X.
![Page 35: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/35.jpg)
Temporalseparate the inter-service communication in time with pub/sub
![Page 36: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/36.jpg)
A
MakeCustomerPreferred()
B
Publish updated customer info
Store data
Save customer as preferred
Publish Customer made preferred
![Page 37: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/37.jpg)
SpatialWhen location not available the system cannotoperate
![Page 38: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/38.jpg)
SpatialIntroduce logical destinationsLoadbalancingRoute to logical destinations
![Page 39: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/39.jpg)
MessagingReduces coupling
Addresses some of the fallaciesNo silver bullet
![Page 40: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/40.jpg)
Use Messaging to transfer packets of data frequently, immediately, reliably, and
asynchronously, using customizable formats.
Asynchronous messaging is fundamentally a pragmatic reaction to the problems of
distributed systems. Sending a message does not require both systems to be up and ready
at the same time. Furthermore, thinking about the communication in an asynchronous
manner forces developers to recognize that working with a remote application is slower,
which encourages design of components with high cohesion (lots of work locally) and low
adhesion (selective work remotely).
![Page 41: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/41.jpg)
MessagingReduces coupling
(platform, temporal, afferent and efferent)Addresses some of the fallacies
![Page 42: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/42.jpg)
Throughput
Load
RPC
Messaging
![Page 43: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/43.jpg)
Receiver
Sends, and keeps on working
Sender
Id
![Page 44: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/44.jpg)
Id
Receiver
Sender
Id
Outgoing
Incoming
![Page 45: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/45.jpg)
DBApp
[HTTP] $$ Order
TxCall 1 of 3
Call 2 of 3
Crash
Rollback
Where’s the order!?
![Page 46: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/46.jpg)
Infra$$ Order
Your code
TX Receive
DBCall 1 of 3
Rollback
Call 2 of 3
Rollback
The order is back in the queue
Invokes
DTC
Enlists
Q
Retry
![Page 47: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/47.jpg)
DTC is a timebomb
![Page 48: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/48.jpg)
Bus$$ Order
Your code
Receive
DBCall 1 of 3
Rollback
Call 2 of 3
Rollback
The order is back in the queue
Invokes
Q
Retry
![Page 49: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/49.jpg)
MessagePayload (Body)
Metadata (Header)%like% HTTP
![Page 50: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/50.jpg)
Receiver
Return Address Some time in the future
Sender
Return Address
![Page 51: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/51.jpg)
Receiver
Some time in the future
Sender
Correlation ID
Message ID
![Page 52: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/52.jpg)
ReceiverSenderReceiver
Receiver
![Page 53: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/53.jpg)
Ordering
![Page 54: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/54.jpg)
Messaging Buy-in
![Page 55: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/55.jpg)
Service
Function, WebService, Class or Database
Set of technologies
Reuse strategy
Of-the-shelve solution
Way to align IT and business
![Page 56: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/56.jpg)
Business capability
Data &Business Rules
Everythingis contained
Nothing leftover
![Page 57: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/57.jpg)
Autonomous
Explicit Boundaries
Contract& Schema
Policy Policy
![Page 58: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/58.jpg)
Data Outside vs. Inside
![Page 59: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/59.jpg)
Outside Inside
![Page 60: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/60.jpg)
Unique ID (UUID or with human readable with version)OK to cache
ImmutableValid rangesStable
Rules for sending messages
![Page 61: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/61.jpg)
Unique ID (UUID or with human readable with version)OK to cache
ImmutableValid rangesStable
Rules for sending messages
![Page 62: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/62.jpg)
Then Now
![Page 63: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/63.jpg)
Command Event
![Page 64: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/64.jpg)
Mashup
![Page 65: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/65.jpg)
Bringing it together
![Page 66: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/66.jpg)
Composite Front End
Client/Server/Service
![Page 67: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/67.jpg)
Portlet
Layout
Inter-portletcommunication
Shell
Single sign-on
UI Logic
Agent
Host
![Page 68: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/68.jpg)
Other legacy systems
UI
Business Logic
Adaptors
Server logic
Agent
![Page 69: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/69.jpg)
Challenges you’ll face
![Page 70: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/70.jpg)
Queries
Responses
Messages to UI
Deployment
Contract sharing
Dependencies
Status bars Dynamic
![Page 71: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/71.jpg)
QueriesDon’t use messagingUse read modelsDatabases scale well when readonlyJust query it
![Page 72: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/72.jpg)
ResponsesNever block the UIEvent AggregatorsForget callbacks, they suck!
![Page 73: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/73.jpg)
Messages to UIDoesn’t need to be 1:1 mappingTask based UI
![Page 74: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/74.jpg)
Status barsThey never tell the truthTrick the user with some educated guessesUse indeterminate progress bars
![Page 75: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/75.jpg)
DeploymentKeep it simpleAutomate itVisualize and monitor itConfiguration can be hard, design for it
![Page 76: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/76.jpg)
Contract sharingFavor loose contracts over interfaces and classesBe pragmatic for compositionIT/OPS defines interfaces, services implement them
![Page 77: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/77.jpg)
DependenciesSemantic VersioningNuget
![Page 78: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/78.jpg)
DynamicDon’t go overboard with fancy techniquesSometimes hard-wiring is just fine
![Page 79: Composite user interfaces for service oriented systems without exercises](https://reader035.vdocuments.net/reader035/viewer/2022081404/559a2de41a28abf9758b47c0/html5/thumbnails/79.jpg)
Daniel Marbach [email protected]
twitter: @danielmarbachblog: www.planetgeek.ch
www.bbv.ch/blogOSS lead: Appccelerate / MSpec
user group: www.dotnet-zentral.ch