Reliable inter-system communication
A guest post by Ravindra Karanam
Sometimes a software system needs to communicate with another in order to complete a user request. Having a good framework in place for such inter-system communication is both crucial and tricky, particularly if both systems store a portion of the data (duplication across systems = not advisable, yet sometimes unavoidable). Improper implementations can result in split-brain issues, costly debugging sessions and hair-splitting reconciliation.
There are some key guidelines for building a good framework:
- First, determine if you need all inter-system user requests to be synchronous i.e. blocking requests with user on-hold for a response. One way is to start with an assumption that everything can be asynchronous and then let the product owner justify why some calls should be synchronous instead.
- Asynchronocity allows for the system to be eventually...