Determine whether to implement using a message bus
Status | Decided |
---|---|
Decision leader | @Paul Hoang (Unlicensed) |
Contributors | TIS Team |
Date | Jan 9, 2019 |
Outcome | Message bus is the agreed way forward. PoC carried out successfully. |
Background
Outcome of this spike 09/01/2019:
What does a message bus do in lay-man terms?
A publish-subscribe paradigm, services can subscribe to / Postman analogy
A queue dealing with requests in a guaranteed way and provides traceability
No blockages
What are the problems we are trying to address by the use of it?
Duplication issue with bulk
No retry at the moment, whereas if in a queue it can be re-tried
Can monitor what message are being sent
What are the benefits/business value we will achieve by having this?
Durability
Less potential for re-work in case of failures
Reduction of errors and duplication of work
Less developer work to create a new consumer/service – does not require to write from start to finish however adds more complexity
Kubernetes and Bus together – more resilience from a user perspective
Devs do not need to know all the dependencies!
More robust and reliable TIS
Relevant data
Where could and should this this be applied on TIS (defining the MVP and the MMF)?
Possibly do this to Audit Logs as a first instance
Then look at User management / Profile
Educating the devs
Resource to support this
Cost consideration for the solution choice, impact on Azure subscriptions
Cost vs Benefit
Disaster recovery aspect
We should consider the various technologies available and whether they have what we are looking for a TIS message bus? RabbitMQ, Kafka, WebSphere JMS etc. part of spike TISNEW-2401
NDW – discuss with NDW people whether this could be done to NDW as well as opposed to ETLs.
Sending to external sources – e.g. Hicom, means that we have to expose the BUS to third parties. API preferred way – No Bus.
Are we after an adaptive and incremental approach to exploring, defining, and implementing a message bus or its alternative?
Yes
Do we need a Proof-of-concept to prove the above?
Already carried out in Sept 2018 – The outcome was it is achievable, tested with 10K requests and all of them received. TISNEW-2402
Options considered
| Option 1: | Option 2: |
---|---|---|
Description | Continue without a message bus | Implement a message bus |
Pros and cons | POSITIVES No dev work required. NEGATIVES No queuing means potential for duplications being added, especially via bulk upload function. No traceability. No restartability. | POSITIVES Addresses all the negatives from Option #1. Future-proofs our development approach further. Could be rolled out elsewhere - e.g. in place of ETLs with the NDW team. NEGATIVES Is a not insignificant amount of development. Need to source the appropriate software to use. Unclear the overall cost of implementation (time and money). |
Estimated cost | MEDIUM (Time and Effort) Problems with discovering and having to fix duplicates caused because of the lack of message bus. | LARGE (Time and Cost) |
Status | In progress | to do |
Action items
Outcome
Slack: https://hee-nhs-tis.slack.com/
Jira issues: https://hee-tis.atlassian.net/issues/?filter=14213