report: add introduction
This commit is contained in:
parent
46d6011c8a
commit
d9ee4abd06
44
report.md
44
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:
|
||||
|
|
Loading…
Reference in a new issue