diff --git a/report.md b/report.md index 455eb5f..6fa3e74 100644 --- a/report.md +++ b/report.md @@ -36,6 +36,50 @@ and my girlfriend Sarah for her unwavering support. # Introduction +My internship is about benchmarking the new service being used at IMC for +connecting to and communicating with exchanges. + +IMC is a technology-driven trading company, specializing in market making on +various exchanges world-wide. Due to this position, they strive for continuous +improvement by making use of technology. And in particular, they have to pay +special attention to the performance of their trading system across the whole +infrastructure. + +In the face of continuous improvement of their system, the performance aspect of +any upgrade must be kept at the forefront of the mind in order to stay +competitive, and rise to a dominant position globally. + +My project fits into the migration of IMC's trading algorithms from their legacy +*driver* connecting each of them directly to the exchanges, to a new central +service being developed to translate and interface between IMC-internal +communication and exchange-facing orders, requests, and notifications. + +Given the scale of this change, and how important such a piece of software is in +the trading infrastructure of the company, the performance impacts of its +introduction and further development must be measured, and its evolution +followed closely. + +The first part of my internship was about writing a framework to benchmark such +a gateway with a dummy load being generated according to scenarios that can +simulate varying circumstances. From those runs, it is also in charge of +recording the performance measurements that it has gathered from the gateway, +allowing for further analysis of a single run and comparison of their evolution +as time goes on. + +This initial work being finished, I integrated my framework with the tooling in +use at IMC to allow for smoother use of the runner, either locally for +development purposes or remotely for measurements. This is also used to test for +breakage in the Continuous Integration pipeline, to keep the benchmarks runnable +as changes are merged into the code base. + +Once that was done, I then picked up a user story about compatibility testing: +with the way IMC deploys software, we want to ensure that both the gateway and +its clients are retro and forward compatible to avoid any surprises in +production. This was only ensured at the protocol level when I first worked on +this subject, my goal being to add tests using the actual binaries used in +production to test their behaviour across various versions, ensuring that they +behave identically. + # Subject The first description of my internship project was given to me as: