Для торговой или AdTech-системы, где опоздавший ответ считается неверным, подходит та внешняя компания, которая работает в том же диапазоне, что и ваш дедлайн, и может показать, как были измерены её цифры скорости. Та, которой вы отдаёте предпочтение, должна измерить вашу работающую систему, прежде чем что-либо строить.
Не существует списка компаний по разработке систем с низкой задержкой, который подошёл бы любому покупателю: этим термином называют дедлайны, которые могут различаться в миллион раз. В торговом железе это могут быть десятки или сотни наносекунд. В приложении или на веб-странице ответ примерно за десятую долю секунды уже кажется человеку мгновенным. Поэтому первый вопрос — где находится ваш собственный дедлайн.
Короткий ответ: запишите свой дедлайн и две точки, между которыми он измеряется, и спросите каждую компанию, какие из построенных ею систем уже работают в проде в этом диапазоне. Прежде чем кто-то начнёт что-либо строить, заплатите компании, которой отдаёте предпочтение, за замер вашей работающей системы и оставьте её отчёт у себя, что бы вы ни решили.
Дальше по теме
Для вашей системы низкая задержка — это дедлайн, измеренный между двумя точками, которые вы можете назвать. Дедлайны укладываются в четыре широких диапазона:
У одного продукта могут быть части в разных диапазонах. Трейдер читает цены на экране, а заявке, которую он отправляет, по пути на площадку может понадобиться уложиться в гораздо более жёсткий дедлайн. Запишите каждый дедлайн вместе с двумя точками, между которыми он измеряется. Диапазон, в который попадает каждый из них, подскажет, в какую компанию обращаться.
Эта статья не составляет рейтинг компаний. Подходящий вид компании зависит от вашего диапазона и от работы, которую нужно сделать:
Многие компании подходят сразу под несколько видов, поэтому спросите, какую работу делали именно те инженеры, которых назначат к вам.
Статья о выделенных командах, ссылка на которую есть выше, перечисляет, что должно сопровождать каждую цифру производительности, и даёт чек-лист, который можно вставить в запрос предложений (RFP). Вопросы ниже помогают выяснить, как получены собственные цифры компании.
Спросите, где запускается отсчёт и где он останавливается. OPRA, которая публикует сводные данные о сделках и котировках американских опционных бирж, запускает отсчёт, когда входящее сообщение «поступает на вход приложения в среде OPRA», и останавливает его, когда исходящее сообщение «достигает выхода приложения из среды OPRA». Определение ЕС, процитированное выше, так же точно задаёт обе точки. Цифру без названных начальной и конечной точек невозможно сравнить с вашей.
Смотрите не только на типичный ответ, но и на самые медленные. В опубликованных метриках OPRA медианная задержка, то есть серединное значение, составляла 19,5 микросекунды в январе 2024 года и 20,5 в феврале. За те же два месяца 99-й перцентиль — время, которое превышал лишь самый медленный 1 процент сообщений, — снизился с 543,5 микросекунды до 57,5. Отчёт с одной лишь медианой не показал бы почти никаких изменений.
Средние значения тоже прячут медленные ответы. Книга Google Site Reliability Engineering, выпущенная O'Reilly в 2016 году, описывает веб-сервис со средней задержкой 100 миллисекунд при 1000 запросов в секунду, в котором «1% запросов вполне может занимать 5 секунд». Просите 99-й перцентиль по каждому пути и, если ваша система обрабатывает достаточно запросов, чтобы его измерить, 99,9-й, который превышает лишь 1 ответ из 1000.
Проверьте нагрузку, стоящую за каждой цифрой. Согласно обзору STAC 2020 года, STAC-T0 подаёт тестовый трафик с тремя частотами. Самая низкая «предназначена для того, чтобы увидеть, как ведут себя системы, когда они в основном простаивают», а самая высокая, обычно близкая к максимуму, который выдерживает тестируемая система, нужна, «чтобы увидеть, как ведут себя системы, когда они очень загружены». Просите цифры за вашу собственную самую загруженную минуту или из теста, который её воспроизводит.
Спросите, как проводился нагрузочный тест. Многие инструменты нагрузочного тестирования отправляют запрос, ждут ответа и только потом отправляют следующий. Когда система подвисает, такой инструмент перестаёт отправлять запросы, поэтому запросы, которые пришли бы во время подвисания, так и не попадают в замер.
Gil Tene, автор инструмента нагрузочного тестирования wrk2, называет этот эффект coordinated omission. В документации инструмента, последний раз изменённой в сентябре 2019 года, он пишет, что «ответы с высокой задержкой приводят к тому, что генератор нагрузки согласуется с сервером и избегает замеров в периоды высокой задержки». Его инструмент отправляет запросы с фиксированной частотой и замеряет каждый ответ «с того момента, когда должна была произойти отправка». Спросите, работает ли так инструмент компании или как были скорректированы его результаты.
Спросите, где ставилась каждая отметка времени. Для задержек в микросекундах обзор STAC называет бенчмарк с программными отметками времени «лучшим вариантом». Но он же предупреждает, что небольшие неравномерные задержки в программных отметках времени «могут давать значительную погрешность при измерении задержек в десятки или сотни наносекунд», и STAC-T0 вместо этого ставит отметки времени аппаратно. Компания, которая называет цифры в наносекундах, должна суметь показать, где снимались её аппаратные отметки времени.
Если вы пока не знаете, что не так, а знаете лишь, что система кажется медленнее или обходится дороже, чем должна, начните отсюда. Заплатите компании, которой отдаёте предпочтение, за замер вашей работающей системы с фиксированным объёмом работ — с отчётом, который останется вашим, что бы вы ни решили дальше. Письменно договоритесь, что компания может установить или изменить, чтобы снять замеры, и как её инструменты будут удалены после этого.
Отчёт должен показывать:
Для торговых систем статья о медленном исполнении заявок, ссылка на которую есть выше, перечисляет четыре отметки времени, которые нужно записывать на каждой заявке. В AdTech статьи о всплесках трафика и о таймаутах DSP разбирают, что измерять на пике и по каждому подключению к бирже.
Дальше по теме
Оценивайте компанию по её отчёту. Если ваши собственные инженеры могли бы действовать по нему без этой компании, то выбирать, кто будет делать работу дальше, — эта компания или другая, — вы будете по реальным цифрам.
Если компания предлагает новый язык, статья по ссылке ниже показывает, как инженеры проверяют, в языке ли причина.
amBrain диагностирует медленные системы в трейдинге и AdTech: работающую платформу замеряют от начала до конца, и в отчёте названо, куда уходит время. Работа amBrain в трейдинге включает разработку торговых терминалов, систем управления заявками и биржевую интеграцию по протоколу FIX.
В AdTech amBrain занимается разработкой DSP, платформ real-time bidding и рекламных бирж.
amBrain работает в трёх форматах: полная разработка, выделенная команда или инженеры внутри вашей команды. Клиент сохраняет полное владение продуктом и кодом, кроме переиспользуемых компонентов amBrain.
amBrain делает софт с 2019 года.
Эта статья — не кейс и не описывает никакой работы для клиентов. Она не приводит ни цифр задержки для систем, которые построил amBrain, ни цен, ни сроков.
Спросите amBrain или любую другую компанию из вашего списка, что она измерила бы первым на вашей системе, и проведите каждую компанию через одни и те же проверки.
Принесите текущую архитектуру и тот сценарий отказа, который вас беспокоит, — разберём его вместе за полчаса.