# l2 . orderbook v2
## Постановка
Если грубо - биржа это два сервиса api <-> trading engine
оба сервиса связаны по сети(хотя мы сейчас рассматриваем возможность обвязки их через IPC в рамках одной инстанции, но кмк путь не очень)
Api слой штука горизонтально масштабируемая, а вот мэтчинг энжина нет.
Связь сервисов осущевствляется через UDP-подобный транспорт Aeron.
У меня есть энжина которая держит 17M тпс. Но это в вакуме - без сети итп итд. Мне нужно написать ее версию, которая впишется в наш протокол и нашу очередь. 10M tps можно считать успехом.
Понятно что в таких системах нужно комплексно профилировать сервисы учавствующие в транспорте сообщений до энжины - тут нужен инструмент профилирования(трассировки). Их строят на eBPF + elk - его нужно тоже построить. Если эта штука сможет работать не только на энжине но и на любом другом +100 к карме:) .
Если нужна виртуалка или elk - у нас есть и облака и поднтый elk.
такие тулзовины есть в энтерпрайзе - но по поняттным причинам нам не доступны:
https://www.dynatrace.com
https://newrelic.com
https://www.appdynamics.com
Там куча всего - меня именно apm интересует. чтоб было понятно где узкое место в пропускной способности системы и как тюнить ее латенси. Если быстро сможешь засетапить ее(до конца месяца) - то сможем ее потестить на продакшене.
## BPF - всему голова
особо сильно тут упарывается нетфликс - рекомендую изучить их тех блог и гитхаб.
https://habr.com/ru/company/selectel/blog/458592/
https://habr.com/ru/company/otus/blog/436528/
https://habr.com/ru/post/435142/
https://github.com/iovisor/bcc
https://www.tecmint.com/bcc-best-linux-performance-monitoring-tools/
http://www.brendangregg.com/Slides/BSidesSF2017_BPF_security_monitoring.pdf
https://www.slideshare.net/brendangregg/linux-4x-tracing-performance-analysis-with-bccbpf
## engine
TBA
## aeron
TBA