Trading Platform for
The customer asked Azati to assist a development team in building the online platform for cryptocurrency trading.
While some people still consider the whole cryptocurrency market to be a vast speculative bubble, others invest millions to make money on contract for difference (CFD) trading.
Our Customer is an international startup in the crypto domain, offering its users a new way to trade and exchange virtual currencies. The company provides intelligent stock market predictions whenever the cryptocurrency price will go up or down.
The main goal of Azati was to build a web platform that acts as a communication layer between a user and the trading middleware.
The Customer established a fully distributed workflow, where several dedicated teams were responsible for small parts of the project: a set of mobile apps, front end and backend of the trading platform. A third-party vendor provided the trading middleware.
Before Azati joined the project, there was another team that had built a core of the backend with Ruby on Rails. Still, the general performance of the algorithms was not impressive at all and the solution required additional tuning. As the previous vendor could not deliver the necessary results, the Customer turned to Azati.
The main objective of our developers was to speed up request handling and create additional connectors that collect information from several crypto exchanges – Binance, Bitfinex, Liquid, Bittrex, OKEx, and others.
As soon as the project evolved, the scope of work significantly increased. The business focus shifted from trading automation to algorithmic trading powered with various trading bots.
The very first challenge was related to a lack of domain knowledge. Today it is not easy to find software engineers familiar with the crypto industry at affordable rates. As for our Ruby team, this project is among the first projects related to cryptocurrencies, so it took additional time for engineers to widen their knowledge.
As Azati provides all-around software development services, we need to try new domains to level up the skills of our engineers.
Every crypto exchange limits the number of incoming requests from per single IP address. It becomes very tricky to obtain real-time data, as after several simultaneous requests, the platform bans an IP address for some time to prevent fraudulent and abusive activities.
After discovering the way every crypto exchange works, our team created a unified algorithm that automatically runs new virtual machines in AWS Cloud, which act as proxy servers.
When Azati joined the project, our engineers were asked to audit the existing algorithms and modules to create a roadmap. Yet another request from the Customer was to build a gateway where engineers can plug in various connectors to collect the required information from crypto exchanges and forward the data to trading middleware.
The general workflow was very typical for every distributed startup – the Customer sends a feature request to the vendor and later receives an estimation. Sometimes product owners created small sprints to rapidly develop essential features and present these features to investors and end-users.
After about a year, the Customer decided to focus on trading automation by adding intelligent capabilities to the system. So our team froze the development of connectors and started building an ecosystem for seamless integration of trading algorithms and AI-powered bots. Even more, our team had created a prototype of a trading bot written in Ruby.
Since the focus had already shifted, the team noticed that trading bots make thousands requests per second to various crypto exchanges. In cooperation with the DevOps team, Azati built a microservice – “Proxy Engine”. It monitors the pool of available IP addresses and interacts with AWS via API to create and terminate virtual machines that act like a proxy server. This microservice also collects a list of free proxy servers to make requests which do not require authorization.
The solution is created as a set of interconnected modules running on a single server. Every module is responsible for a specific group of features and can be easily turned into a microservice and moved out to a dedicated virtual machine.
Azati built several modules:
- Basic Admin UIThis module collects general information from the database and helps business owners manage the platform and check out KPI.
- Proxy EngineProxy Engine manages a proxy list, collects free proxies, interacts with AWS API to create new virtual machines and run private proxies there.
- Exchange ConnectorsAbout twenty small applications that collect and send data from third-party exchanges like Binance, Bitfinex, Liquid, Bittrex, OKEx, and others.
- Background Jobs ManagerThis module creates, runs, and terminates side tasks and background jobs.
- Web APIThis API handles requests from web frontend and mobile applications, as well as performs the majority of operations.
- WebSockets APISome of the desired features required constant connection with the backend, so our engineers recreated several vital features with the help of WebSocket API.
For over two years, Azati had been developing and shipping new features related to very particular sides of the industry: from typical business automation to the specific cryptocurrency trading moments.
Engineers not only grounded up their knowledge in web development, but also levelled up their knowledge and got a deep understanding of the crypto domain.
A FEW NUMBERS:
17 connectors were
99.97% uptime of AWS proxy engine
In fact, our engineers made the existing algorithms work seamlessly and helped a customer to build a truly revolutionary solution powered by innovative trading techniques.
The development team develops and delivers new features for the web platform and backend automation. The Customer is fully satisfied with the services Azati provides, and plans a huge enlargement of its business presence in the crypto market.