Подход к реализации
Проект реализован как одностраничное приложение на базе библиотеки
Backbone.js.
Свой API
Написан API с хорошей документацией и песочницей (для тестирования методов
API) для общения между клиентской частью и бэкендом.
Кеширование
Приложение мультиязычное, для каждого языка JS код собирается помодульно в
один файл, который кешируется у каждого клиента. Этот подход увеличивает
скорость загрузки при повторных обращениях.
Графики
Для построения графиков котировок на open-source решения была написана
библиотека под нужды заказчика.
Многопоточное получение котировок
Подключение к высокоскоростному источнику данных по котировкам. Для
максимально эффективного использования ресурсов сервера на Python написан
многопоточный скрипт обработки с кешированием.
Для отображения данных по каждому временному интервалу создается свой поток
через веб-сокет, и при входе нового клиента он подключается к одному из этих
каналов, а не создает новый.
Базы данных
Две базы данных: PostgreSQL и MongoDB. Большая часть финансовой логики
реализована как процедуры в PostgreSQL. Процедуры тестировались с помощью
unit-тестов. MongoDB используется как хранилище логов для анализа и
статистических данных поведения пользователей.
Выдача данных клиентам
Обмен данными между клиентом и сервером реализован через веб-сокет, как
наиболее производительный метод работы с постоянным потоком данных.
Backend фреймворк
Backend реализован на MVC фреймворке Symfony2.
Нагрузочное тестирование
Нагрузочное тестирование с помощью Jmeter. Проверяли производительность и
находили узкие места с помощью NewRelic.
Автотесты
Весь проект покрыт автотестами на Behat. Для тестирования клиентской части
использовался Selenium.
Масштабирование
Реализовано автоматическое масштабирование. Проект разделен на модули для
того, чтобы модули с большой нагрузкой можно было распределять между
несколькими серверами. Процесс масштабирования максимально автоматизирован –
используется решение PAAS Jelastic для вертикального и горизонтального
масштабирования.