The client wanted a more robust, scalable and reliable solution for caching FX static data. The large legacy system was clunky and slow. Each trading system that used the cache actually only required small subsets of data for each transaction.
Challenges
- To deliver big changes to the existing application, whilst allowing live trading to continue
- To evangelise the changes and ensure all concerned parties know about, and accept, the new way of working
- To work with limited people resources, meaning that developers were spread very thinly across some parts of the project
- Limited guidance from those in charge of the project
- To be aware that the system is live and any changes have the potential to cause financial loss
- Lack of communication between different teams
The Solution
- To completely replace the application with micro-services i.e. a series of smaller, more specific services that can be streamlined to meet specific needs, as opposed to one large service, which has the potential to be a massive point of failure. i.e. a dedicated counterparty search service, which allows users to search for particular counterparties
- To ensure that all change is implemented in a backward-compatible, incremental fashion i.e. all major changes need to be done in such a way as to make new functionality available whilst initially still enabling users to continue with the old functionality.
- To upgrade the technology used to speed up the process of data collection
- To improve the reliability of the system and remove the margin for error
- To eventually remove the clunky legacy system from operation
Technologies used:
- Java
- Sybase (database)
- Hibernate (an Object Relational Mapper (ORM), which converts java objects to rows in the database above, and vice-versa)
- Hazelcast (a distributed cache, which stores all the static data and spreads the store across several servers and locations so the data can be accessed quickly without having to move it from London to Frankfurt for example)
Client benefits
- A much more reliable and manageable system for storing and retrieving cached FX data
- Easier and quicker access to information on trades, prices and reporting requirements
- Less margin for error as a result of the smaller services
- An overview of who is using what data for which services as a result of the individually targeted applications