Skip to content
Fahrul Alwan.
Back
WebSocketReal-time ArchitectureAngularJava Spring Boot

A real-time layer, 2018

Live car auctions need everyone to see the same bid at the same instant. I built that real-time layer in 2018, fresh out of a bootcamp.

Frontend Developer9 months2 engineers on the real-time core2018, rebuilt by other people since

An automotive auction company needed a platform built from zero: live auctions with an auctioneer, online bidders, and offline bidders in the room, all seeing the same state in real time. Our consultancy got the project. Nobody on the team had built anything like this before.

Real-time bidding has no room for lag. Even a couple of seconds means bids get disputed and people stop trusting the platform. The system had to keep three types of participants in sync over unreliable networks: the auctioneer, online bidders, and people physically in the room.

Weeks of research before I committed to WebSocket

The system needed server-pushed updates. Polling could not keep up with live bidding. I spent weeks reading, comparing approaches, and testing before committing to WebSocket as the communication layer. It was the only approach that fit reactive, low-latency multi-party communication.

Proved it between two machines before designing the rest

Proved between two machines first, then scaled to the three kinds of participant.

Every message carried a role identifier so the system could distinguish an auctioneer from an online buyer from an offline buyer.

The connections were dying silently, so we made them check in

After launch, connections started dying a few minutes in. No error, just silence.

The heartbeat caught the silence and the client reconnected.

The heartbeats didn't eliminate the problem entirely, but they made auctions reliable enough to run without interruption. The project delivered late, and a good part of that was me learning on the job what a more experienced engineer would have known on day one.

I was too aggressive when I joined the core team. Eager and driven, but not humble enough about what I didn't know. I think about that a lot now, whenever I'm leading someone who reminds me of how I was back then.

If any of this resonated, say hi.