One of the most technically complex and challenging projects that we have worked on
Dev. capacity
Duration
Dev. team
The project was developed as a single page application on the basis of the Backbone.js library.
A resilient API was written and well documented along with a sandbox (for testing API methods) to facilitate communication of the client side with the server side.
The application is multilingual, each languages JS code is compiled in modules that are placed into one file that in turn caches with each client. This approach increases download speeds for returning visitors.
A custom library was written to satisfy the client’s’ need for a financial chart builder.
Establish a connection to a high-speed feed of financial data. For the most effective use of the servers’ resources a multi-stream script for data processing with caching has been written on Python.
In order to output the data for each time frame a separate stream is created through the web socket, so every new visitor is connected to one of these existing channels instead of creating a new one.
Two databases: PostgreSQL and MongoDB. Most of the financial logic is processed as procedures in the PostgreSQL server. All procedures were tested in unit testing. MongoDB is used as a storage server of activity, analysis and statistical data of every user’s activity.
Data exchange between the client and the server is carried out through the web-socket, as it is the most productive method of working with constant data streams.
The back-end is embodied on an MVC framework – Symfony2.
Load testing was carried out with the help of Jmeter. Performance and bottlenecks were checked and identified with NewRelic.
The whole project was covered by Behat auto tests. Selenium was used for the client-side.
Automatic scalability was implemented; the project was divided into modules to ensure the capability of placing high volume modules into different servers. The process of scaling is designed to run autonomously, PAAS Jelastic is used for both vertical and horizontal scaling.
PHP
Python
require.js
Symfony2
Backbone.js
sockets:
redchet.php,
autobahn.js
queues:
ZNQ
testing:
phpunit, behat/mink,
selenium
load testing:
jmeter
monitoring of
performance:
new relic
Postgresql,
Mongodb
PAAS Jelastic
to evaluate your project