Somewhere, someone on the internet is saying "Messaging will solve all of your system's problems". They might be right. But for all you know, they could be wrong too.
I could take the time in this talk to introduce you to basic messaging patterns. That doesn’t address the bigger issues that most people who are getting started with messaging. Why should you care about messaging? What technical or business problem will it solve for you? How can you get started?
When you leave this session you will be the person who can stand up in the meeting and declare "Messaging will solve this for us....I think" to the bewilderment of everyone who is attending the HR yearly benefits update.
Allows us to connect two or more completely separate systems
Systems don’t have to be tightly connected to work with each other.
There are a lot of demands placed on business software. Really they’re expectations, not demands...and many of them are entirely reasonable
Business expectations of how the application should work are at the top of the list
We’re left to figure out how to realize those business expectations via technology
The business has asked for things like Reliability
USS Reliable served throughout WWII without any notable actions/problems/incidents
The business expects to have confirmation that a credit card has been charged before beginning to ship the product to the customer. No payment confirmation, no shipping.
We rely on transactions if possible or “manually” rolling back the data which is more likely
And Resiliency
HMS Hardy...which was badly damaged by German destroyers during the Norway campaign of WWII and had to be run aground so as not to sink. The rising tide lifted her off the bottom and she capsized and was lost.
When an external system goes offline, they expect that it will not affect their systems
Usually this means we retry the request/communication with the 3rd party. But we can’t retry forever
They want known spikes in traffic/usage to be handled without crippling the system and losing those sales/customers
Most commonly, infrastructure is built to the highest expected capacity and then run at a fraction of that for the majority of the time
They want their highest revenue customers to be treated with the priority that they deserve.
People start talking about multi-tenancy, stand alone systems for high value customers and other ‘duplicative’ solutions.
The way we historically, and currently, build apps makes overcoming these issues quite difficult.
Changing to messaging requires changing how you think
Compensating actions instead of transactions
“Events” and “commands”
Idempotency
“Immediate” usually means “less than X minutes/hours/days from now”