5. We see that a lot One programming language One framework One
build system One type of runtime unit One data store One type of
database access One application server One ... One communication
paradigm
6. Why are we doing it?
7. Reducing complexity Avoid intellectual overload Easier to
understand Easier to change Faster to change Easier to operate Less
error-prone Cheaper
8. These are valid and important reasons
9. ... but that is just one side of the coin
10. The complexity of a solution must match the complexity of
the problem to solve
11. If your task is to build a box from pre-cut boards, only
using a hammer might be adequate
12. If your task is also to paint the box you just built, only
having a hammer might be a problem
13. Now imagine building a whole house just with a hammer
14. Yet, in IT we often tend to build whole houses just with a
hammer because boxes can be built with a hammer
15. Complexity mismatch means Increased accidental complexity
Harder to understand Harder to change Slower to change Harder to
operate More error-prone More expensive
16. Complexity Essential complexity Adds direct accidental
complexity Problem complexity Ideal solution complexity Adds
indirect accidental complexity
17. Complexity Problem complexity Overly complex solution
Increased accidental complexity More tooling than needed to get the
job done well
18. Complexity Problem complexity Over- simplified solution
Increased accidental complexity Not enough tooling to get the job
done well
19. Overall Solution Complexity :=Essential Problem Complexity
+Solution Complexity Mismatch Solution Complexity Mismatch a.k.a.
Accidental ComplexityBe aware that mismatch in both directions adds
to overall solution complexity
20. Complexity Essential complexity Problem complexity Aim for
the least complex solution with respect to the problem you have to
solve(Yes, it is about trade-offs as always in architecture)
21. Communication paradigms
22. Communication paradigms Dimensions of communication
Synchronous vs. asynchronous Request/response vs. message passing
Commands, Events and Documents Sender/Receiver dependency
23. Communication paradigms Typical communication patterns
Synchronous request/response Asynchronous commands (with known
receiver) Asynchronous events (without known receiver)
24. The synchronous request/response everywhere trap
25. Why are we doing it?
26. Remember the one-size-fits-all trap?
27. Yes, but why this paradigm?
28. Why synchronous R/R? Its how the internet works The library
support is better It is easier to reason about Matches the way we
consciously think Matches the way we learned to do design
29. Do not forget the other side of the coin
30. The flipside of the coin HTTP was designed for a specific
use case Access hypermedia content Not an ubiquitous communication
solution The world outside a process is different Non-determinism
kills easy reasoning Latency creep kills easy reasoning Solution
mismatch adds complexity Compromises functional encapsulation
Changes and extensions become more complicated Longer activation
paths compromise robustness
31. Designing communication
32. An (invidious) example
33. Order fulfillment
34. Let us begin with the well-known synchronous
request/response design ...
35. Order fulfillmentInitial version with limited functionality
Order includes Items Amounts Price per item Total price Credit card
payment Only non-digital items
36. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Credit Card
Coordinate Warehouse
37. Order fulfillmentAdd coupons Order additionally includes
Optional coupon ID Optional remaining coupon value Coupon is
already charged against total price Validate coupon
38. Order Fulfillment Service Online Shop Payment Service
Shipment Service Warehouse System Coupon Management CouponCredit
Card Coordinate Warehouse Coordinate Credit Card Provider
39. Order fulfillmentAdd promotions Order additionally includes
Optional promotion ID Promotion is already applied to order Notify
Campaign Management System about promotion usage
40. Order Fulfillment Service Online Shop Payment Service
Shipment Service Warehouse System Coupon Management Coupon Campaign
Management Promotion Credit Card Coordinate Warehouse Coordinate
Credit Card Provider
41. Order fulfillmentAdd customer accounts Order additionally
includes Payment type (Credit card/Account) Charge customer
account
42. Order Fulfillment Service Online Shop Payment Service
Shipment Service Warehouse System Coupon Management Campaign
Management Account service Accounts Receivables Coordinate
Warehouse Credit Card Provider Coupon Promotion Credit Card
Coordinate
43. Order fulfillmentAdd PayPal Order additionally includes
More payment types (Credit card/PayPal/Account) Payment via
PayPal
44. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Account service Payment
provider PayPal Accounts Receivables Coupon Credit Card Coordinate
Warehouse PayPal Coordinate
45. Order fulfillmentAdd digital music library New shipment
method Activate music assets in digital music library Notify
customer via email including access link Digital music library has
its own API
46. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Account service Payment
provider PayPal Accounts Receivables Music Library E-Mail Server
Coupon Credit Card Coordinate Warehouse Coordinate Music Notify
Cust. PayPal Coordinate
47. Order fulfillmentAdd digital video library New digital
shipment channel Activate video assets in digital video library
Notify customer via email including access link Digital video
library has its own API Different from the music library API
48. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Account service Payment
provider PayPal Accounts Receivables Music LibraryVideo Library
E-Mail Server Coupon Credit Card Coordinate Warehouse Coordinate
Assets Notify Cust. PayPal Coordinate
49. Order fulfillmentAdd e-book library New digital shipment
channel Activate e-books in e-book library Notify customer via
email including access link E-Book library has its own API
Different from the other asset library APIs
50. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Account service Payment
provider PayPal Accounts Receivables Music Library E-Book Library
Video Library E-Mail Server Coupon Credit Card Coordinate Warehouse
Coordinate Assets Notify Cust. PayPal Coordinate
51. Order fulfillmentAdd bonus card Order additionally includes
Optional bonus card ID Potential discount is already applied to
order Notify Loyalty Management System about customer purchase
52. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Loyalty Account service
Payment provider PayPal Loyalty Management Accounts Receivables
Music Library E-Book Library Video Library E-Mail Server Coupon
Credit Card Coordinate Warehouse Coordinate Assets Notify Cust.
PayPal Coordinate
53. Order fulfillmentMore requirements to come
54. Order Fulfillment Service Online Shop Payment Service
Credit Card Provider Shipment Service Warehouse System Coupon
Management Promotion Campaign Management Loyalty Account service
Payment provider PayPal Loyalty Management Accounts Receivables
Music Library E-Book Library Video Library E-Mail Server Coupon
Credit Card Coordinate Warehouse Coordinate Assets Notify Cust.
PayPal Coordinate Synchronous request/response findingsDivide and
conquer design Tight service coupling including cross-domain
coupling Long activation paths Latency creep Availability erosion
Underlying design assumption is 100% availability of all services
used Complex orchestration logic in services including
cross-service transactions New downstream services require changes
of upstream services including knowledge about how to access
downstream services in upstream services
55. Let us repeat the design using asynchronous events ...
56. Order fulfillment
57. Order fulfillmentInitial version with limited functionality
Order includes Items Amounts Price per item Total price Credit card
payment Only non-digital items
58. Order confirmed Online Shop Credit Card Provider Warehouse
System Credit Card Service Warehouse Service Payment authorized
Payment failed
59. Order fulfillmentAdd coupons Order additionally includes
Optional coupon ID Optional remaining coupon value Coupon is
already charged against total price Validate coupon
60. Order confirmed Online Shop Credit Card Provider Warehouse
System Credit Card Service Warehouse Service Payment authorized
Payment failed Coupon Management Coupon Service
61. Order fulfillmentAdd promotions Order additionally includes
Optional promotion ID Promotion is already applied to order Notify
Campaign Management System about promotion usage
62. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Credit Card Service
Warehouse Service Promotion Service Coupon Service Payment
authorized Payment failed
63. Order fulfillmentAdd customer accounts Order additionally
includes Payment type (Credit card/Account) Charge customer
account
64. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Accounts Receivables Warehouse Service Promotion
Service Coupon Service Payment authorized Payment failed
65. Order fulfillmentAdd PayPal Order additionally includes
More payment types (Credit card/PayPal/Account) Payment via
PayPal
66. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Accounts Receivables PayPal PayPal Service Warehouse
Service Promotion Service Coupon Service Payment authorized Payment
failed
67. Order fulfillmentAdd digital music library New shipment
method Activate music assets in digital music library Notify
customer via email including access link Digital music library has
its own API
68. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Accounts Receivables Music Library E-Mail Server
PayPal PayPal Service Warehouse Service Promotion Service Coupon
Service Music Library Service Notification Service Payment
authorizedDigital asset provisioned Payment failed
69. Order fulfillmentAdd digital video library New digital
shipment channel Activate video assets in digital video library
Notify customer via email including access link Digital video
library has its own API Different from the music library API
70. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Accounts Receivables Music Library Video LibraryE-Mail
Server PayPal PayPal Service Warehouse Service Promotion Service
Coupon Service Music Library Service Video Library Service
Notification Service Payment authorizedDigital asset provisioned
Payment failed
71. Order fulfillmentAdd e-book library New digital shipment
channel Activate e-books in e-book library Notify customer via
email including access link E-Book library has its own API
Different from the other asset library APIs
72. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Accounts Receivables Music Library E-Book Library
Video LibraryE-Mail Server PayPal PayPal Service Warehouse Service
Promotion Service Coupon Service Music Library Service Video
Library Service E-Book Library Service Notification Service Payment
authorizedDigital asset provisioned Payment failed
73. Order fulfillmentAdd bonus card Order additionally includes
Optional bonus card ID Promotion is already applied to order Notify
Loyalty Management System about customer purchase
74. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Loyalty Management Accounts Receivables Music Library
E-Book Library Video LibraryE-Mail Server PayPal PayPal Service
Warehouse Service Promotion Service Bonus Card Service Coupon
Service Music Library Service Video Library Service E-Book Library
Service Notification Service Payment authorizedDigital asset
provisioned Payment failed
75. And how do we figure out if a business transaction
eventually completes?
76. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Loyalty Management Accounts Receivables Music Library
E-Book Library Video LibraryE-Mail Server PayPal PayPal Service
Warehouse Service Promotion Service Bonus Card Service Coupon
Service Music Library Service Video Library Service E-Book Library
Service Notification Service Order fulfillment supervisor Payment
authorizedDigital asset provisioned Payment failed Track flow of
events. Reschedule events in case of failure Services are
responsible to eventually succeed or fail for good, usually
incorporating a supervision/escalation hierarchy for that
77. Order confirmed Online Shop Credit Card Provider Warehouse
System Coupon Management Campaign Management Account service Credit
Card Service Loyalty Management Accounts Receivables Music Library
E-Book Library Video LibraryE-Mail Server PayPal PayPal Service
Warehouse Service Promotion Service Bonus Card Service Coupon
Service Music Library Service Video Library Service E-Book Library
Service Notification Service Payment authorizedDigital asset
provisioned Payment failed Order fulfillment supervisor Track flow
of events Reschedule events in case of failure Services are
responsible to eventually succeed or fail for good, usually
incorporating a supervision/escalation hierarchy for that
Asynchronous events findingsGo with the flow design Services and
domains decoupled Very short activation paths High responsiveness
High availability No design assumptions about availability of
services Coordination via choreography No central coordination and
cross-service transactions Instead functional compensation logic in
external supervision service New services can be integrated without
touching existing services Services only focus on their task (no
knowledge about other services required)
78. Didnt we miss any special cases that would lead to very
different findings?
79. Some special casesSynchronous request/response design
Current order status E.g., pass status through call chain Maybe
additionally extend order fulfillment service to store status in an
status information database Payment failed E.g., stop processing in
fulfillment service and send back appropriate status to online shop
Cashing coupon failed E.g., extend payment service to place task in
desk officers inbox Integrate new video library (different API)
Adapt shipment service to new API Make sure not to disrupt other
service aspects
80. Some special casesAsynchronous events design Current order
status E.g., track events with a new service and store them in an
status information database Payment failed E.g., track dedicated
event with a new service that notifies customer and/or online shop
Cashing coupon failed E.g., send out dedicated event that a new
service subscribes to New service then places task in desk officers
inbox Integrate new video library (different API) Implement new
service Replace existing service with new service
81. Feels a lot like recurring patterns
82. What did we learn so far?
83. Comparing the paradigms Decomposition Vertically
divide-and-conquer vs. horizontally go-with-the-flow Coordination
Coordination logic/services and orchestration vs. event chains and
choreography Transactions Built-in transaction handling vs.
external supervision Error handling Built into service vs.
escalation/supervision strategy Separation of concerns Multiple
responsibilities service vs. single responsibility services
Encapsulation Domain logic distributed across services vs. domain
logic in one place Complexity A draw
84. Different communication paradigms lead to very different
service designs which means different options to address a given
problem
85. Related areas and limitations
86. Mixing communication paradigms
87. Mixing paradigms Always an option Note the trade-off
between design purity and solution mismatch complexity A (very)
simple heuristic Single functionality All-or-nothing characteristic
Single domain Synchronous request/response Multiple functionalities
Flow/Process characteristic Multiple domains Asynchronous
messaging
88. What if the paradigm is fixed?
89. Fixed paradigm You can simulate other paradigms E.g.,
simulate sync. r/r with async. messaging E.g., simulate async.
commands with sync. r/r Will support the service design topic Apart
from that it is a (lame) compromise
90. What about user interaction?
91. User interaction Interaction with user client is usually
r/r Use web sockets if available Use the mediator pattern with
timeouts Could be implemented via a BFF service Complement with
processing status page
92. Can we apply the same patterns inside process
boundaries?
93. Inside process boundaries Have the process context in mind
Without threads If your downstream call dies, you are also dead
Usually synchronous r/r is appropriate Otherwise single-threaded
scheduler is needed With threads Multi-process light Better
multi-threading resilience possible More design options
94. Wrap-up The one-size-fits-all trap Communication paradigms
The synchronous-r/r-everywhere trap Designing communication
Influence on service design Different communication paradigms lead
to very different service designs