Challenge
Creating an IT platform that can sustain solid growth
Let’s zoom in on that rush hour with some numbers. When Auctionport was selling one of their most popular products, thousands of users simultanously connecting to the website and placing their bids.
Along with all the visitors, a lot of supporting services on such a platform are activated at the same time. Think of:
- The web API for processing bids
- The web-sockets service for receiving bidding updates in real-time
- In-memory translation database
- Analytics service
- The auction closing service responsible for closing some of the lots and extending lots that are actively bid on
- The mailing service
- The website frontend
- Invoice pdf generation service
Auctionport originally embedded all these services in the same application. And to make sure the platform could support these traffic peaks, they vertically scaled up the server that hosted the application. This means transferring the application to a more powerful computer (with better CPU’s, more memory, faster storage,..) BUT.
There is a but. The more you scale up vertically, the more the prices skyrocket. And Auctionport only needed the extra IT power 2-3 times per week when an auction closes. On top of that: vertical scaling capabilities are finite and Auctionport was already at its limits.
To prevent that some of the components could be overwhelmed by traffic and take down the entire website with them (again), Auctionport required a software that can sustain their solid growth, carry all these services at the same time and make their IT platform a competitive advantage again.
From a classic monolithic website to a modern scalable micro-service powered IT platform
A good IT architecture is the foundation of your platform. So we redrew the entire infrastructure in a sustainable manner.
To start off, we identified and optimised the bottleneck services where possible, such as the web-socket service, the front-end, the auction closing service. We did this by isolating and revising these services following key software design principal’s such as the Clean Architecture and the Domain Driven Development methodology. This way, they are hosted as a separate application (container) using Docker and Kubernetes, and the required CPU and memory resources is managed per individual container. And so they are no longer a risk in slowing down the other services.
Next, we made the entire website stateless - which means that it doesn’t hold data about ongoing sessions - so that we can scale the application services horizontally. In other words: instead of always increasing memory and CPU (vertical scaling), we make copies of the individual application services (or containers). This can quickly be done dynamically when traffic peaks are detected. This last step allows us to immensely reduce IT costs when traffic is low, theoretically scale indefinitely, and fully take advantage of the possibilities that modern cloud providers such as Microsoft Azure and Amazon AWS have to offer.
"Rollo's vast expertise allowed us to scale our business to unseen levels"
Impact
From liability to key driver
Auctionport can carefree continue their great marketing skills to keep on expanding their brand awareness. The platform can now sustain their healthy growth of users with no more downtimes. Because they saved a lot of budget on IT costs, they will also start investing in the automation of their internal processes which will even more increase their efficiency. The IT platform has changed from a liability to one of the key drivers to Auctionport’s company growth.
Azure Cloud, Amazon AWS, Kubernetes, Docker, Python, Java, Vue.js, Redis, Postgres, RabbitMQ