STAGE 3A – DEV JAVA – REINVENT THE CACHING MECHANISMS OF REFERENCE DATA OBJECTS
Murex S.A.S
Paris
Internship
Murex is a global fintech leader in trading, risk management and processing solutions for capital markets.
Operating from our 19 offices, 2700 Murexians from over 60 different nationalities ensure the development, implementation and support of our platform which is used by banks, asset managers, corporations and utilities, across the world.
Join Murex and work on the challenges of an industry at the forefront of innovation and thrive in a people-centric environment.
You’ll be part of one global team where you can learn fast and stay true to yourself.
Description of the team/department
The Reference Data team is in charge of developing and handling the evolutions of internal services providing various data objects to different other services and business solutions of the MX.3 platform. The development team is composed of 2 C++ developers and 5 java developers (2 of them located in Beirut).
Missions
The reference-data/settlement services are used by more and more MX solutions in more and more contexts. The challenge for these services is to distribute large numbers of objects to many other services as quickly as possible over long periods of time with constant reliability.
The caching of the data objects is a key factor in fulfilling these requirements. Data objects can be cached at the service level of course but also at the level of the client api also developed by the Reference Data team and used by some services to retrieve the data from the service.
The caching of the data involves various challenges related to:
- The cache invalidation: modifications of cached objects must be detected to keep the cache up-to-date at any time.
- The nature of the objects: some objects are versioned, some are not.
- The way data is retrieved by the clients: objects requested by unique keys are easy to cache and keep up-to-date but sets of objects requested through filters involving various criterions are more complex to manage (e.g. keep the cached filter results up-to-date after detecting object modifications)
- The way data objects are built server side: some objects have fields computed dynamically or retrieved from other objects.
- The required memory to properly manage the different types of caching for the different types of objects: risk of out of memory issues in production.
The objectives are to reinvent this caching mechanism to make it quicker and more robust in order to confidently face the important challenges to come:
- Re-design the existing caching mechanisms by analyzing and optimizing the existing algorithms OR develop an alternative relying on new algorithms, design patterns or third parties.
- Optimize memory usage by analyzing and tuning the memory footprint of cached objects, factorizing the storage of shared objects, designing mechanisms to delete unused or irrelevant objects.
- Build benchmarks allowing us to establish recommendations to our customer regarding the memory to allocate to our services depending on their business activity.
Profile
Student in last year of an Engineering/Computer Science degree.
« Mandatory » skills:
- Good knowledge and coding experience of object-oriented programming (preferably Java)
- Interest in software engineering challenges (“clean code”, resilience, operability, continuous integration, optimization, etc.)
- Autonomy, curiosity, and capacity for innovation
- Good understanding and speaking of English or French
« Nice to have » skills:
- Used to unix environments.
- Knowledge on SQL
Duration: 6 months from March 2024