SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
Watch your communication
How communication drives design

Uwe Friedrichsen – codecentric AG – 2016
@ufried
Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com
The “one-size-fits-all” trap
Standardization as a virtue
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
Why are we doing it?
Reducing complexity


•  Avoid intellectual overload
•  Easier to understand
•  Easier to change
•  Faster to change
•  Easier to operate
•  Less error-prone
•  Cheaper
These are valid and important reasons …
... but that is just one side of the coin
The complexity of a solution

must match

the complexity of the problem to solve
If your task is to build a box from pre-cut boards,

only using a hammer might be adequate
If your task is also to paint the box you just built,

only having a hammer might be a problem …
Now imagine building a whole house

just with a hammer …
Yet, in IT we often tend to build whole houses

just with a hammer
because boxes can be built with a hammer
Complexity mismatch means


•  Increased accidental complexity
•  Harder to understand
•  Harder to change
•  Slower to change
•  Harder to operate
•  More error-prone
•  More expensive
Complexity
Essential complexity
Adds direct
accidental complexity
Problem complexity
Ideal
solution
complexity
Adds indirect
accidental complexity
Complexity
Problem complexity
Overly
complex
solution
Increased
accidental
complexity
More “tooling” than needed
to get the job done well
Complexity
Problem complexity
Over-
simplified
solution
Increased
accidental
complexity
Not enough “tooling”
to get the job done well
Overall Solution Complexity :=

Essential Problem Complexity +

Solution Complexity Mismatch
Solution Complexity Mismatch a.k.a. Accidental Complexity

Be aware that mismatch in both directions

adds to overall solution complexity
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)
Communication paradigms
Communication paradigms




•  Dimensions of communication
•  Synchronous vs. asynchronous
•  Request/response vs. message passing
•  Commands, Events and Documents
•  Sender/Receiver dependency
Communication paradigms



•  Typical communication patterns
•  Synchronous request/response
•  Asynchronous commands

(with known receiver)
•  Asynchronous events

(without known receiver)
The “synchronous request/response
everywhere” trap
Why are we doing it?
Remember the “one-size-fits-all” trap?
Yes, but why this paradigm?
Why synchronous R/R?



•  “It’s 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
Do not forget the other side of the coin
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
Designing communication
An (invidious) example …
Order fulfillment
Let us begin with the well-known

synchronous request/response design ...
Order fulfillment



Initial version with limited functionality


•  Order includes
•  Items
•  Amounts
•  Price per item
•  Total price
•  Credit card payment
•  Only non-digital items
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Credit Card
Coordinate
Warehouse
Order fulfillment



Add coupons


•  Order additionally includes
•  Optional coupon ID
•  Optional remaining coupon value
•  Coupon is already charged against total price
•  Validate coupon
Order Fulfillment

Service
Online Shop
Payment

Service
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Coupon
 Credit Card
Coordinate
Warehouse
Coordinate
Credit Card
Provider
Order fulfillment



Add promotions


•  Order additionally includes
•  Optional promotion ID
•  Promotion is already applied to order
•  Notify Campaign Management System
about promotion usage
Order Fulfillment

Service
Online Shop
Payment

Service
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Coupon
Campaign
Management
Promotion
Credit Card
Coordinate
Warehouse
Coordinate
Credit Card
Provider
Order fulfillment



Add customer accounts


•  Order additionally includes
•  Payment type (Credit card/Account)
•  Charge customer account
Order Fulfillment

Service
Online Shop
Payment

Service
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Accounts
Receivables
Coordinate
Warehouse
Credit Card
Provider
Coupon
Promotion
Credit Card
Coordinate
Order fulfillment



Add PayPal


•  Order additionally includes
•  More payment types (Credit card/PayPal/Account)
•  Payment via PayPal
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Promotion
Campaign
Management
Account
service
Payment
provider
PayPal
Accounts
Receivables
Coupon
Credit Card
Coordinate
Warehouse
PayPal
Coordinate
Order fulfillment



Add 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
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
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
Order fulfillment



Add 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
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Promotion
Campaign
Management
Account
service
Payment
provider
PayPal
Accounts
Receivables
Music Library
 Video Library
E-Mail Server
Coupon
Credit Card
Coordinate
Warehouse
Coordinate
Assets
Notify Cust.
PayPal
Coordinate
Order fulfillment



Add 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
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
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
Order fulfillment



Add bonus card


•  Order additionally includes
•  Optional bonus card ID
•  Potential discount is already applied to order
•  Notify Loyalty Management System about
customer purchase
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
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
Order fulfillment



More requirements to come …
Order Fulfillment

Service
Online Shop
Payment

Service
Credit Card
Provider
Shipment

Service
Warehouse
System
<Foreign Service>
<Own Service>
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 – findings

“Divide 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
Let us repeat the design

using asynchronous events ...
Order fulfillment
Order fulfillment



Initial version with limited functionality


•  Order includes
•  Items
•  Amounts
•  Price per item
•  Total price
•  Credit card payment
•  Only non-digital items
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Credit Card
Service
Warehouse
Service
Payment authorized
<Event>
Payment failed
Order fulfillment



Add coupons


•  Order additionally includes
•  Optional coupon ID
•  Optional remaining coupon value
•  Coupon is already charged against total price
•  Validate coupon
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Credit Card
Service
Warehouse
Service
Payment authorized
<Event>
Payment failed
Coupon
Management
Coupon
Service
Order fulfillment



Add promotions


•  Order additionally includes
•  Optional promotion ID
•  Promotion is already applied to order
•  Notify Campaign Management System
about promotion usage
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Credit Card
Service
Warehouse
Service
Promotion
Service
Coupon
Service
Payment authorized
<Event>
Payment failed
Order fulfillment



Add customer accounts


•  Order additionally includes
•  Payment type (Credit card/Account)
•  Charge customer account
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Accounts
Receivables
Warehouse
Service
Promotion
Service
Coupon
Service
Payment authorized
Payment failed
<Event>
Order fulfillment



Add PayPal


•  Order additionally includes
•  More payment types (Credit card/PayPal/Account)
•  Payment via PayPal
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Accounts
Receivables
PayPal
PayPal
Service
Warehouse
Service
Promotion
Service
Coupon
Service
Payment authorized
Payment failed
<Event>
Order fulfillment



Add 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
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
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 authorized
 Digital asset provisioned
Payment failed
<Event>
Order fulfillment



Add 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
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Accounts
Receivables
Music Library
Video Library
 E-Mail Server
PayPal
PayPal
Service
Warehouse
Service
Promotion
Service
Coupon
Service
Music Library
Service
Video Library
Service
Notification
Service
Payment authorized
 Digital asset provisioned
Payment failed
<Event>
Order fulfillment



Add 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
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Accounts
Receivables
Music Library
E-Book
Library
Video Library
 E-Mail Server
PayPal
PayPal
Service
Warehouse
Service
Promotion
Service
Coupon
Service
Music Library
Service
Video Library
Service
E-Book Library
Service
Notification
Service
Payment authorized
 Digital asset provisioned
Payment failed
<Event>
Order fulfillment



Add bonus card


•  Order additionally includes
•  Optional bonus card ID
•  Promotion is already applied to order
•  Notify Loyalty Management System about
customer purchase
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Loyalty
Management
Accounts
Receivables
Music Library
E-Book
Library
Video Library
 E-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 authorized
 Digital asset provisioned
Payment failed
<Event>
And how do we figure out if a business
transaction eventually completes?
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Loyalty
Management
Accounts
Receivables
Music Library
E-Book
Library
Video Library
 E-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 authorized
 Digital asset provisioned
Payment failed
<Event>
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
Order confirmed
Online Shop
Credit Card
Provider
Warehouse
System
<Foreign Service>
<Own Service>
Coupon
Management
Campaign
Management
Account
service
Credit Card
Service
Loyalty
Management
Accounts
Receivables
Music Library
E-Book
Library
Video Library
 E-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 authorized
 Digital asset provisioned
Payment failed
<Event>
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 – findings

“Go 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)
Didn’t we miss any special cases that

would lead to very different findings?
Some special cases

Synchronous 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
officer’s inbox
•  Integrate new video library (different API)
•  Adapt shipment service to new API
•  Make sure not to disrupt other service aspects
Some special cases

Asynchronous 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 officer’s inbox
•  Integrate new video library (different API)
•  Implement new service
•  Replace existing service with new service
Feels a lot like recurring patterns …
What did we learn so far?
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 …
Different communication paradigms
lead to very different service designs

… which means different options to address a given problem
Related areas and limitations
Mixing communication paradigms
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
What if the paradigm is fixed?
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
What about user interaction?
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
Can we apply the same patterns
inside process boundaries?
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
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
There is no “one-size-fits-all” solution
@ufried
Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com
Watch your communication

Weitere ähnliche Inhalte

Was ist angesagt?

Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready SoftwareUwe Friedrichsen
 
No stress with state
No stress with stateNo stress with state
No stress with stateUwe Friedrichsen
 
The truth about "You build it, you run it!"
The truth about "You build it, you run it!"The truth about "You build it, you run it!"
The truth about "You build it, you run it!"Uwe Friedrichsen
 
Dr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismDr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismUwe Friedrichsen
 
The promises and perils of microservices
The promises and perils of microservicesThe promises and perils of microservices
The promises and perils of microservicesUwe Friedrichsen
 
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 Microservices for Mortals by Bert Ertman at Codemotion Dubai Microservices for Mortals by Bert Ertman at Codemotion Dubai
Microservices for Mortals by Bert Ertman at Codemotion DubaiCodemotion Dubai
 
Autonomous microservices for a Financial System
Autonomous microservices for a Financial SystemAutonomous microservices for a Financial System
Autonomous microservices for a Financial SystemINPAY
 
Open is as Open does
Open is as Open doesOpen is as Open does
Open is as Open doesAndrew Shafer
 
The "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionThe "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionINPAY
 
The "Why", "What" and "How" of Microservices
The "Why", "What" and "How" of Microservices The "Why", "What" and "How" of Microservices
The "Why", "What" and "How" of Microservices INPAY
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsJonas BonĂŠr
 
Events & Microservices
Events & MicroservicesEvents & Microservices
Events & MicroservicesYamen Sader
 
It's Not All About the Cloud
It's Not All About the CloudIt's Not All About the Cloud
It's Not All About the CloudHostway|HOSTING
 
Hybrid Hosting; The Third Generation Cloud
Hybrid Hosting; The Third Generation Cloud Hybrid Hosting; The Third Generation Cloud
Hybrid Hosting; The Third Generation Cloud Hostway|HOSTING
 
Platform as reflection of values: Joyent, node.js, and beyond
Platform as reflection of values: Joyent, node.js, and beyondPlatform as reflection of values: Joyent, node.js, and beyond
Platform as reflection of values: Joyent, node.js, and beyondbcantrill
 
Software Process... the good parts
Software Process... the good partsSoftware Process... the good parts
Software Process... the good partsAndrew Shafer
 
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016Dave Archer
 
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)Derek Ashmore
 
Dna It Solutions Cloud Computing Presentation
Dna It Solutions Cloud Computing PresentationDna It Solutions Cloud Computing Presentation
Dna It Solutions Cloud Computing PresentationSylCotter
 

Was ist angesagt? (20)

Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready Software
 
Fantastic Elastic
Fantastic ElasticFantastic Elastic
Fantastic Elastic
 
No stress with state
No stress with stateNo stress with state
No stress with state
 
The truth about "You build it, you run it!"
The truth about "You build it, you run it!"The truth about "You build it, you run it!"
The truth about "You build it, you run it!"
 
Dr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismDr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinism
 
The promises and perils of microservices
The promises and perils of microservicesThe promises and perils of microservices
The promises and perils of microservices
 
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 Microservices for Mortals by Bert Ertman at Codemotion Dubai Microservices for Mortals by Bert Ertman at Codemotion Dubai
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 
Autonomous microservices for a Financial System
Autonomous microservices for a Financial SystemAutonomous microservices for a Financial System
Autonomous microservices for a Financial System
 
Open is as Open does
Open is as Open doesOpen is as Open does
Open is as Open does
 
The "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionThe "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short version
 
The "Why", "What" and "How" of Microservices
The "Why", "What" and "How" of Microservices The "Why", "What" and "How" of Microservices
The "Why", "What" and "How" of Microservices
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native Applications
 
Events & Microservices
Events & MicroservicesEvents & Microservices
Events & Microservices
 
It's Not All About the Cloud
It's Not All About the CloudIt's Not All About the Cloud
It's Not All About the Cloud
 
Hybrid Hosting; The Third Generation Cloud
Hybrid Hosting; The Third Generation Cloud Hybrid Hosting; The Third Generation Cloud
Hybrid Hosting; The Third Generation Cloud
 
Platform as reflection of values: Joyent, node.js, and beyond
Platform as reflection of values: Joyent, node.js, and beyondPlatform as reflection of values: Joyent, node.js, and beyond
Platform as reflection of values: Joyent, node.js, and beyond
 
Software Process... the good parts
Software Process... the good partsSoftware Process... the good parts
Software Process... the good parts
 
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016
NCET Tech Bite | Ron Husey, Moving Your Business to the Cloud | Mar 2016
 
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)
Microservices for Java Architects (Madison-Milwaukee, April 28-9, 2015)
 
Dna It Solutions Cloud Computing Presentation
Dna It Solutions Cloud Computing PresentationDna It Solutions Cloud Computing Presentation
Dna It Solutions Cloud Computing Presentation
 

Andere mochten auch

Resilience reloaded - more resilience patterns
Resilience reloaded - more resilience patternsResilience reloaded - more resilience patterns
Resilience reloaded - more resilience patternsUwe Friedrichsen
 
Life, IT and everything
Life, IT and everythingLife, IT and everything
Life, IT and everythingUwe Friedrichsen
 
Patterns of resilience
Patterns of resiliencePatterns of resilience
Patterns of resilienceUwe Friedrichsen
 
DevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextDevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextUwe Friedrichsen
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architecturesUwe Friedrichsen
 
Resilience with Hystrix
Resilience with HystrixResilience with Hystrix
Resilience with HystrixUwe Friedrichsen
 
Conway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITConway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITUwe Friedrichsen
 
The Next Generation (of) IT
The Next Generation (of) ITThe Next Generation (of) IT
The Next Generation (of) ITUwe Friedrichsen
 
Devops for Developers
Devops for DevelopersDevops for Developers
Devops for DevelopersUwe Friedrichsen
 
Why resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesWhy resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesUwe Friedrichsen
 
Game Based Learning for Language Learners
Game Based Learning for Language LearnersGame Based Learning for Language Learners
Game Based Learning for Language LearnersShelly Sanchez Terrell
 
8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith YeungEdith Yeung
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
Size does matter - Patterns for high scalability: Uwe Friedrichsen
Size does matter - Patterns for high scalability: Uwe FriedrichsenSize does matter - Patterns for high scalability: Uwe Friedrichsen
Size does matter - Patterns for high scalability: Uwe FriedrichsenJAX London
 
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...Legacy Typesafe (now Lightbend)
 
How to survive in a BASE world
How to survive in a BASE worldHow to survive in a BASE world
How to survive in a BASE worldUwe Friedrichsen
 
Unix philosophy and principles
Unix philosophy and principlesUnix philosophy and principles
Unix philosophy and principlesmaryamalmarrii
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophyFa6ma_
 

Andere mochten auch (19)

Resilience reloaded - more resilience patterns
Resilience reloaded - more resilience patternsResilience reloaded - more resilience patterns
Resilience reloaded - more resilience patterns
 
Life, IT and everything
Life, IT and everythingLife, IT and everything
Life, IT and everything
 
Patterns of resilience
Patterns of resiliencePatterns of resilience
Patterns of resilience
 
DevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextDevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader context
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architectures
 
Resilience with Hystrix
Resilience with HystrixResilience with Hystrix
Resilience with Hystrix
 
Conway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITConway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective IT
 
Self healing data
Self healing dataSelf healing data
Self healing data
 
The Next Generation (of) IT
The Next Generation (of) ITThe Next Generation (of) IT
The Next Generation (of) IT
 
Devops for Developers
Devops for DevelopersDevops for Developers
Devops for Developers
 
Why resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesWhy resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudes
 
Game Based Learning for Language Learners
Game Based Learning for Language LearnersGame Based Learning for Language Learners
Game Based Learning for Language Learners
 
8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
Size does matter - Patterns for high scalability: Uwe Friedrichsen
Size does matter - Patterns for high scalability: Uwe FriedrichsenSize does matter - Patterns for high scalability: Uwe Friedrichsen
Size does matter - Patterns for high scalability: Uwe Friedrichsen
 
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
 
How to survive in a BASE world
How to survive in a BASE worldHow to survive in a BASE world
How to survive in a BASE world
 
Unix philosophy and principles
Unix philosophy and principlesUnix philosophy and principles
Unix philosophy and principles
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophy
 

Ähnlich wie Watch your communication

Taking payments online
Taking payments onlineTaking payments online
Taking payments onlineGeorgio_1999
 
Hosting Types in WordPress and WooCommerce
Hosting Types in WordPress and WooCommerceHosting Types in WordPress and WooCommerce
Hosting Types in WordPress and WooCommerceFrank Maounis
 
Business models.pptx
Business models.pptxBusiness models.pptx
Business models.pptxssuser6b98b0
 
Elements of ecommerce
Elements of ecommerceElements of ecommerce
Elements of ecommerceChris Kenney
 
2014 D2C PPT - Final (16.9 res)
2014 D2C PPT - Final (16.9 res)2014 D2C PPT - Final (16.9 res)
2014 D2C PPT - Final (16.9 res)Paul Davis, MBA
 
Selling Online Slides
Selling Online SlidesSelling Online Slides
Selling Online Slidesdigitallincs
 
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]Insider's Guide to Marketing & Selling with WordPress [#WCPHX]
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]Joe Manna
 
From impact to stakeholder examples: Three techniques for end-to-end requirem...
From impact to stakeholder examples: Three techniques for end-to-end requirem...From impact to stakeholder examples: Three techniques for end-to-end requirem...
From impact to stakeholder examples: Three techniques for end-to-end requirem...Christian Hassa
 
Session 3a The SF SaaS Framework
Session 3a  The SF SaaS FrameworkSession 3a  The SF SaaS Framework
Session 3a The SF SaaS FrameworkCode Mastery
 
E Commerce: Its role and development
E Commerce: Its role and developmentE Commerce: Its role and development
E Commerce: Its role and developmentAnubha Rastogi
 
Case management systems
Case management systemsCase management systems
Case management systemsAdam Fenstermaker
 
Database management system
Database management systemDatabase management system
Database management systemFaizan Shabbir
 
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROI
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROIMarch 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROI
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROIHighRoad Solution
 
WordPress e-Commerce by Steve Mortiboy
WordPress e-Commerce by Steve MortiboyWordPress e-Commerce by Steve Mortiboy
WordPress e-Commerce by Steve MortiboySteve Mortiboy
 
Ecomm 101
Ecomm 101Ecomm 101
Ecomm 101Al Davis
 
Choosing the Right E-commerce Solution
Choosing the Right E-commerce SolutionChoosing the Right E-commerce Solution
Choosing the Right E-commerce SolutionDr Matt McDougall
 
Omnichannel Fulfillment Excellence - By Design
Omnichannel Fulfillment Excellence - By DesignOmnichannel Fulfillment Excellence - By Design
Omnichannel Fulfillment Excellence - By DesignNational Retail Federation
 

Ähnlich wie Watch your communication (20)

Taking payments online
Taking payments onlineTaking payments online
Taking payments online
 
E businnes and the supply chain
E businnes and the supply chainE businnes and the supply chain
E businnes and the supply chain
 
Hosting Types in WordPress and WooCommerce
Hosting Types in WordPress and WooCommerceHosting Types in WordPress and WooCommerce
Hosting Types in WordPress and WooCommerce
 
PG Capabilities
PG CapabilitiesPG Capabilities
PG Capabilities
 
ecom slides.pptx
ecom slides.pptxecom slides.pptx
ecom slides.pptx
 
Business models.pptx
Business models.pptxBusiness models.pptx
Business models.pptx
 
Elements of ecommerce
Elements of ecommerceElements of ecommerce
Elements of ecommerce
 
2014 D2C PPT - Final (16.9 res)
2014 D2C PPT - Final (16.9 res)2014 D2C PPT - Final (16.9 res)
2014 D2C PPT - Final (16.9 res)
 
Selling Online Slides
Selling Online SlidesSelling Online Slides
Selling Online Slides
 
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]Insider's Guide to Marketing & Selling with WordPress [#WCPHX]
Insider's Guide to Marketing & Selling with WordPress [#WCPHX]
 
From impact to stakeholder examples: Three techniques for end-to-end requirem...
From impact to stakeholder examples: Three techniques for end-to-end requirem...From impact to stakeholder examples: Three techniques for end-to-end requirem...
From impact to stakeholder examples: Three techniques for end-to-end requirem...
 
Session 3a The SF SaaS Framework
Session 3a  The SF SaaS FrameworkSession 3a  The SF SaaS Framework
Session 3a The SF SaaS Framework
 
E Commerce: Its role and development
E Commerce: Its role and developmentE Commerce: Its role and development
E Commerce: Its role and development
 
Case management systems
Case management systemsCase management systems
Case management systems
 
Database management system
Database management systemDatabase management system
Database management system
 
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROI
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROIMarch 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROI
March 17 2017 Inbound Lunch Bunch: Building Digital Ecosystems that Deliver ROI
 
WordPress e-Commerce by Steve Mortiboy
WordPress e-Commerce by Steve MortiboyWordPress e-Commerce by Steve Mortiboy
WordPress e-Commerce by Steve Mortiboy
 
Ecomm 101
Ecomm 101Ecomm 101
Ecomm 101
 
Choosing the Right E-commerce Solution
Choosing the Right E-commerce SolutionChoosing the Right E-commerce Solution
Choosing the Right E-commerce Solution
 
Omnichannel Fulfillment Excellence - By Design
Omnichannel Fulfillment Excellence - By DesignOmnichannel Fulfillment Excellence - By Design
Omnichannel Fulfillment Excellence - By Design
 

KĂźrzlich hochgeladen

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

KĂźrzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Watch your communication

  • 1. Watch your communication How communication drives design Uwe Friedrichsen – codecentric AG – 2016
  • 2. @ufried Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com
  • 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
  • 19. Overall Solution Complexity := Essential Problem Complexity + Solution Complexity Mismatch Solution Complexity Mismatch a.k.a. Accidental Complexity Be 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)
  • 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)
  • 25. Why are we doing it?
  • 27. Yes, but why this paradigm?
  • 28. Why synchronous R/R? •  “It’s 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
  • 34. Let us begin with the well-known
 synchronous request/response design ...
  • 35. Order fulfillment Initial 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 <Foreign Service> <Own Service> Credit Card Coordinate Warehouse
  • 37. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Coupon Credit Card Coordinate Warehouse Coordinate Credit Card Provider
  • 39. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Coupon Campaign Management Promotion Credit Card Coordinate Warehouse Coordinate Credit Card Provider
  • 41. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Accounts Receivables Coordinate Warehouse Credit Card Provider Coupon Promotion Credit Card Coordinate
  • 43. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Promotion Campaign Management Account service Payment provider PayPal Accounts Receivables Coupon Credit Card Coordinate Warehouse PayPal Coordinate
  • 45. Order fulfillment Add 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 <Foreign Service> <Own Service> 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 fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Promotion Campaign Management Account service Payment provider PayPal Accounts Receivables Music Library Video Library E-Mail Server Coupon Credit Card Coordinate Warehouse Coordinate Assets Notify Cust. PayPal Coordinate
  • 49. Order fulfillment Add 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 <Foreign Service> <Own Service> 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 fulfillment Add 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 <Foreign Service> <Own Service> 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
  • 54. Order Fulfillment
 Service Online Shop Payment
 Service Credit Card Provider Shipment
 Service Warehouse System <Foreign Service> <Own Service> 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 – findings “Divide 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 ...
  • 57. Order fulfillment Initial 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 <Foreign Service> <Own Service> Credit Card Service Warehouse Service Payment authorized <Event> Payment failed
  • 59. Order fulfillment Add 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 <Foreign Service> <Own Service> Credit Card Service Warehouse Service Payment authorized <Event> Payment failed Coupon Management Coupon Service
  • 61. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Credit Card Service Warehouse Service Promotion Service Coupon Service Payment authorized <Event> Payment failed
  • 63. Order fulfillment Add customer accounts
 •  Order additionally includes •  Payment type (Credit card/Account) •  Charge customer account
  • 64. Order confirmed Online Shop Credit Card Provider Warehouse System <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Accounts Receivables Warehouse Service Promotion Service Coupon Service Payment authorized Payment failed <Event>
  • 65. Order fulfillment Add PayPal
 •  Order additionally includes •  More payment types (Credit card/PayPal/Account) •  Payment via PayPal
  • 66. Order confirmed Online Shop Credit Card Provider Warehouse System <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Accounts Receivables PayPal PayPal Service Warehouse Service Promotion Service Coupon Service Payment authorized Payment failed <Event>
  • 67. Order fulfillment Add 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 <Foreign Service> <Own Service> 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 authorized Digital asset provisioned Payment failed <Event>
  • 69. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Accounts Receivables Music Library Video Library E-Mail Server PayPal PayPal Service Warehouse Service Promotion Service Coupon Service Music Library Service Video Library Service Notification Service Payment authorized Digital asset provisioned Payment failed <Event>
  • 71. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Accounts Receivables Music Library E-Book Library Video Library E-Mail Server PayPal PayPal Service Warehouse Service Promotion Service Coupon Service Music Library Service Video Library Service E-Book Library Service Notification Service Payment authorized Digital asset provisioned Payment failed <Event>
  • 73. Order fulfillment Add 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Loyalty Management Accounts Receivables Music Library E-Book Library Video Library E-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 authorized Digital asset provisioned Payment failed <Event>
  • 75. And how do we figure out if a business transaction eventually completes?
  • 76. Order confirmed Online Shop Credit Card Provider Warehouse System <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Loyalty Management Accounts Receivables Music Library E-Book Library Video Library E-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 authorized Digital asset provisioned Payment failed <Event> 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 <Foreign Service> <Own Service> Coupon Management Campaign Management Account service Credit Card Service Loyalty Management Accounts Receivables Music Library E-Book Library Video Library E-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 authorized Digital asset provisioned Payment failed <Event> 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 – findings “Go 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. Didn’t we miss any special cases that
 would lead to very different findings?
  • 79. Some special cases Synchronous 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 officer’s inbox •  Integrate new video library (different API) •  Adapt shipment service to new API •  Make sure not to disrupt other service aspects
  • 80. Some special cases Asynchronous 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 officer’s 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
  • 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
  • 95. There is no “one-size-fits-all” solution
  • 96. @ufried Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com