As most projects, the auctioning platform of BVA Auctions started out rather small. Over time a lot of functionality was added to the system and as the number of auctions and users grew, the system was pushed to its limits more than once.
Currently, we serve around 30 million visitors per month and 200 million page views.
And every time the application was optimised and modified. Real architectural changes were never really made and so the classic monolithic application remained. With all its disadvantages. One thing that should be recognisable by a lot of other developers is, that making a change to the system was not risk-free. There was for instance a lot of code interwoven with each other and it was hard to see where what code was used for.
Somewhere in 2014 it was decided that things had to change drastically in order to create a system that was ready for the future.
For this we did a lot of investigation on microservices, event sourcing and so on. But it is very hard to change an existing application into this kind of architecture. So for this, we decided it would be better if we let the application evolve in such a way, that it would be easier to cut pieces out of the existing code and put them in smaller services. You might even call them microservices in the end.
Another thing we noticed, was that we were spending a lot of time in maintaining differently branded sites which were using the same codebase. So separate this as well, we are working more towards an auctioning platform where multiple front ends can make use of. This makes a lot more sense and guarantees faster development and delivery of features.
And this is where we are working on at the moment. We are building an auctioning platform, that scales a lot better and also separates clients from the actual platform (which was not the case in the original system). Some of the keywords we are doing/using/investigating right now are:
- Java 8 (currently using the traditional Spring / Hibernate technology stack)
- continuous delivery
- metrics (Prometheus and Grafana)
- Jenkins 2
… and a whole lot more!
Think this is interesting? We are looking for good developers. Check out the jobs section.