This was a very interesting project related to the automotive business in which I led a technical team of 4 people in the design and development of a complete software intended for conducting live car auctions both onsite and online in a large industrial building especially conditioned for this kind of events. Unfortunately, despite the beauty of the project and being a startup with great potential and highly talented team of almost 20 people, the application could not finally be used in a real scenario because the company wound up before it could actually start due to various commercial and management issues.
However, at the technical level the application was implemented and deployed completely, fulfilling very satisfactorily the requirements and objectives initially set out. Our application was mainly inspired by the BCA and Autorola car auction softwares, and also others like CarsOnTheWeb, Manheim, EurocarBid, Subastacar, Subasto mi Coche, etc. I humbly believe that we managed to improve them in several ways.
Full management of real-time auctions
Our main technological challenge was to achieve an auction management system that allowed simultaneous acceptance of bids from potential buyers located in any geographic location through the Internet, as well as from the auction event attendees who bid on-site.
To accomplish this, a real-time auction engine was developed using websockets and a great optimization effort was made not only on the websockets module but also the entire technological stack involved, from the operating system and network communications to the database and runtime environment. All this to get initial response times lower than 100 ms since a user pressed the Bid now button until that bid was collected by the system and updated the current price and other counters and data of interest corresponding to the car in auction at that time. In addition, all this had to be done with hundreds of users bidding simultaneously, so it was necessary to implement a sophisticated queueing and bidding system able to resolve conflicts between them.
Although those initial response times were fast enough, the system was prepared to further enhance responsiveness when it was deployed in production environment, since the testing and certification phase was done with the bid server located in the eu-west-1 area of Amazon Web Services. In other words, the server was located in Ireland and the bids were made mostly from Madrid and other parts of Spain, which introduced an unnecessary network latency of 50-60 ms which was planned to minimize placing the bids subsystem close to Madrid. Other improvements were planned to achieve the 30 ms response time goal that I planned for the application in production environment.
Another project design main goal was to achieve a decoupled architecture that would allow the presentation, business logic and data layers to be completely and effectively separated, so that the same database of cars, auctions, manufacturers, clients, suppliers, etc. could be used both by our auction software and by various corporate and third-party applications such as CRM and sales force, valuation tools, internal management of vehicle entrances, maintenance and exits, mobile apps, different microservices and connected electronic devices (Raspberry Pi) with different missions, etc.
In order to do this, I opted to implement the architecture shown below based on a REST API and the aforementioned websockets to act as an interface between the presentation and business logic layers:
These are the technologies used to support all requirements stated above:
|Auction and bid servers||EC2 Instances in Amazon Web Services (AWS)|
|Operating System||Linux (Ubuntu 14.04 LTS)|
|Backend/runtime||PHP (ReactPHP & Symfony 2.6)|
|API REST||Symfony 2.6 + FOSRestBundle|
|Web front-end||AngularJS 1.3 + Restangular|
Auctioneer and scorer posts and room screens
From the beginning it was considered as an indispensable requirement that application’s user interface was fully responsive so that it could be used from any type of mobile device or tablet, as well as in the different equipment used on-site for the auctioneer and scorer posts, and also to display auction information on screens of different sizes distributed all over the venue from which in progress auctions could be followed in real time.
Internal Administration and Control Panel
In order to manage everything happening behind the scenes during the auction event’s day, but also in the days before and after to prepair the session and to manage the sales made, a complete administration panel was made:
As I said at the beginning, in addition to dealing with live on-site auctions, also external bidders should be given access so that they could register for the various auctions available, select and bookmark the cars that were most interesting for them, bid on those vehicles at the same time when they were auctioned on-site and could finally fullfill the complete purchase process of cars once they were awarded to them. For this, a complete public website had to be developed to allow users to perform all these operations: