Right now working on this and its kind of really interesting problem
So what’s the problem we want to solve :
- Say We have a central Server/Cluster/DataStore.
- Many Clients accessing this Central thing.
Let’s take a specific case for better understanding.
You want to have a trading platform : It will consist of
- Trade booking applications : We can have mutiple apps say for Equity/Derivatives/FX etc.
- Central Data store : Resonsible for data storage and single source of data for other applications
- Middle office Systems like Confirmation Systems ,Settlements Systems etc.
- Back Office Systems.
And in out System we have a class defination of Trade : a,b,c as attributes.
Currently everybody has this Class defination and they are able to Read/Write happily.
But what if a Client want’s to add a new field( d )to this Trade class and want to use that ?
Do all the other Clients/Central thing needs to be Upgraded as well ? For practical purposes this may not be desirable.
So then how do you design your System where a Single client upgrades to new version and its using new fields but other clients are still running on older version , its just that they don’t see the d field but can work with a,b,c .
It turned out that this is not so difficult to achieve!
The real problem is if a Client adds a New SubClass (new trade type,having extra field d ) and still other clients can read this ,same as before ,able to work on as Trade class (on field a,b,c without knowledge of d).