Ian Bond presents the development of a trade flow event-driven architecture, providing the background of futures trade, the domain and the solution, sharing some of the lessons learned along the way.
Ian Bond is currently the lead for trade management technology within Exchange Traded Derivatives at UBS. Before UBS, he worked as a consultant for the Thomson Corporation. Part development manager, part architect, part developer, his main interests are trying to apply Agile methods, domain modeling, mixing financial technology with more mainstream technology and keeping things simple.
QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community.QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers.
I have a question regarding transactions. In the system it shows trades entering the distributed cache via messaging e.g. point to point queue or topic which it subscribes to. It also says that persistence is via Hibernate mappings which are invoked asynchronously. I just wanted to get a feel for how the transactions work in this system e.g. in terms of trades entering the system does an initial persistence action take place, which has to succeed before the transactions with the queue or topic ends (so you don't lose the trade). When events are being executed against the domain objects and the data is changing, it's implied that async calls keep the persistence state synced with the cache state. How does the system ensure that writes aren't lost e.g. if the persistence is asynchronous how would you rollback the cache data if that action fails.