Клиент
Наш заказчик — один из ведущих поставщиков данных в мире, предоставляющий сложное облачное решение для получения биржевой и финансовой информации, в том числе через протокол FIX (Financial Information eXchange).
Задачи
Принимая во внимание потребности пользователей, наш заказчик принял решение заменить текущую платформу новой — с меньшим временем задержки и бо́льшим количеством источников информации. Это должно было дать явное преимущество перед другими поставщиками данных.
Решение
Специалисты компании Arcadia разработали новую платформу с нуля. Чтобы обеспечить масштабируемость и повысить производительность, мы задействовали принципы сервисно-ориентированной архитектуры. Чтобы выполнить работу качественно и в срок, мы решили использовать платформу .NET и язык C#.
Помимо поддержки нативных приложений на C#, выбор Microsoft Azure Cloud даёт возможность работать с экосистемой инструментов для сервисно-ориентированной архитектуры:
- Service Fabric — упрощает развёртывание и управление приложением;
- Redis — используется в качестве шины передачи сообщений для модели «поставщик-подписчик»;
- Cosmos DB — экономичная, быстрая и масштабируемая система хранения данных;
- Event Hubs — экономичная и производительная платформа для потоковой передачи сообщений;
- Application Insights — система передачи показателей телеметрии и сообщений об ошибках.
Основная сложность сбора рыночных данных из различных источников заключается в том, что данные передаются через разные протоколы. Чаще всего это FIX и его варианты: FAST (FIX Adapted for Streaming) и SBE (Simple Binary Encoding). Чтобы грамотно построить процесс обработки данных — приняв во внимание производительность и возможные задержки, — мы воспользовались проверенными библиотеками, работающими с большинством протоколов. В частности, это OnixS MDP для Чикагской биржи металлов (протокол SBE), Rapid Addition Cheetah для Лондонской биржи металлов (протокол FIX) и другие.
С протоколом FIX также работает система передачи сообщений для модели «поставщик-подписчик», основанная на Redis и передающая рыночные данные на платформу. Однако из-за общеизвестных ограничений FIX мы воспользовались более производительным протоколом SBE.
Особое внимание мы уделили надёжности платформы и верификации соответствия требованиям. Для этого мы провели детальный анализ кода, а также тщательное модульное и функциональное тестирование — ручное и автоматизированное. Сведения об ошибках и общих показателях работы системы мы получали с помощью внутренних оповещений.
Для клиентских приложений (веб-приложения, Excel и т.д.) система поддерживает REST API и SignalR. Сообщения можно также передавать и в формате SBE, однако это не очень удобно для конечного пользователя, поэтому они преобразовываются в более привычный формат.
Наши специалисты также частично отвечали за архитектуру, внедрение и развёртывание приложения.
Результат
Мы разработали топовое решение, способное собирать максимально возможное количество данных. В результате клиенты заказчика получают самые актуальные рыночные данные из различных источников со всего мира. Компания-заказчик заинтересована в дальнейшем развитии платформы, поэтому наше сотрудничество продолжится.