diff --git a/Makefile b/Makefile index 871fa19..4b7f71d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,7 @@ -all: report.pdf +all: report.pdf presentation.pdf report.pdf: report.md begin-document.tex config.yaml header.tex pandoc --defaults config.yaml + +presentation.pdf: presentation.md + pandoc -t beamer --filter pandoc-plantuml --dpi=300 -o $@ $< diff --git a/presentation.md b/presentation.md new file mode 100644 index 0000000..236377f --- /dev/null +++ b/presentation.md @@ -0,0 +1,123 @@ +--- +title: "IMC Internship" +author: "Bruno BELANYI" +theme: "Frankfurt" +institute: "EPITA" +date: 2021-08-30 +colortheme: "seahorse" +fontsize: 10pt +urlcolor: blue +linkstyle: bold +aspectratio: 169 +lang: en-US +section-titles: true +toc: true +header-includes: | + \setbeamertemplate{section page}{% + \begingroup% + \centering% + \begin{beamercolorbox}[sep=12pt,center,colsep=-4bp,rounded=true,shadow=true]{section title}% + \usebeamerfont{section title}% + \insertsection% + \par% + \end{beamercolorbox}% + \endgroup% + } + \addtobeamertemplate{navigation symbols}{}{% + \usebeamerfont{footline}% + \usebeamercolor[fg]{footline}% + \hspace{1em}% + \insertframenumber/\inserttotalframenumber% + } +--- + +# Introduction + +## IMC & Global Execution team + +* Market making firm +* Multiple offices +* Over 20 exchanges + +## Subject of the internship + +> The project is about benchmarking a new service we're building related to +> exchange connectivity. It would involve writing a program to generate load on +> the new service, preparing a test environment and analyzing the performance +> results. Time permitting might also involve making performance improvements to +> the services. + +## Motivation + +* Early feedback during development +* Track regressions +* Various scenarios + +## Additional work + +* Compatibility testing + * Test both client and gateway processes + * Test forward and backward compatibility + * Similar to benchmark in its architecture + +# Work accomplished + +## Parameters of a run + +* Lab setup to mirror production +* Multiple scenarios +* Multiple exchanges and gateways + +## Workflow + +* Scenarios are exchange-agnostic +* Running a benchmark locally and remotely in a transparent manner +* Single command to run + +## Architecture + +![Component diagram](figs/component-diagram.png){ height=80% } + +## Results + +![Sample plots, with timings +censored](figs/remote-plots-presentation-censored.png){ width=90% } + +## Compatibility testing + +* Existing tests only test single version of client and server in lock step +* Forward and backward compatibility +* Multi-process testing + +# Benefits of the internship + +## To the company + +* Framework to use for benchmarking gateways + * Nicely integrated in IMC's build system + * Easy to use for new exchanges + * Easy to extend with new scenarios +* Ground work on compatibility testing + * Peace of mind + * Ensure upgrades/downgrades happen smoothly + * Reduce downtimes due to failures + +## To me + +* Part of a good team & company +* Learn about finance sector +* Deal with new problems I had not encountered before + +# Conclusion + +## Challenges of the internship + +* Integration among pre-existing code +* Working conditions due to COVID +* Debugging asynchronous, multi-process systems + +## Further work + +* Integrate with in-house change-point detection +* Integrate with packet sniffing setup +* More exchanges & scenarios