Itch

August 16, 2022
By Rowan Rodrik van der Molen

Wiebe had an itch. It started while he was looking for a decent MQTT server for a client. The most performant he could find was the free, open source Mosquitto. Mosquitto was written in a systems programming language – C – and used a decent asynchronous event-based model to handle MQTT connections and messages.

Unlike its competitors, many of which were expensive commercial offerings, Mosquitto did not have any scaling or clustering features, except for one very obvious advantage: it performed very well in a single thread on a single CPU core, while the competing MQTT brokers required a multi-server, clustering setup for what in Wiebe's eyes were quite modest loads.

For a while, Wiebe toyed with the idea of contributing multi-threadedness to Mosquitto. However, there was an architectural legacy in Mosquitto that seemed easier to overcome when starting from scratch, with multi-threaded, async message handling at the forefront of the design.

In the meantime, with a 'sharded cluster' to get around Mosquito's single-threading limitation, it still performed superiorly to the slow commercial offerings, one of which even crashed under simulated load.

All these “scalable solutions” were only scalable in the sense that you could throw as much hardware and electricy as you wanted at the rather mundane task of MQTT brokering. It is a common pattern in the contemporary IT landscape: if you lack the conviction to write something performant, you just throw more hardware at it. For too long now, “scalability” has had the connotation of “the workload being spreadable over multiple servers”.

In an ideal world – a world where IT infrastructure doesn't guzzle up more coal than strictly necessary – “scalability” first and foremost means: “Can this program take on a higher workload with the same (or fewer) resources?”

And thusly, FlashMQ came into being. And Wiebe's friends were so impressed with FlashMQ's breakthrough performance that they decided to build a business around it – a friendly business with a low ecological footprint, owing to Wiebe's C++ artisanship.

In the spirit of this artisanship, we are proud of the MQTT service that we can offer, which at every level is permeated with the same values: craftmanship, beauty, and transparency.

About Rowan Rodrik

Rowan's role at FlashMQ is to make sure that our PostgreSQL backend is rock-solid, and, where possibly, perhaps even … a bit beautiful. His auxilory role is to push forward the business and marketing side of FlashMQ.com. Writing marketing copy intersects with his passion for writing. When he's not writing for FlashMQ (or about how grossed out he is with the status of software, he can be found outside, gardening and finding inspiration for his writing about nature. Rowan wants it be known that any opinions expressed outside of FlashMQ.com are not necessarily indicitive of the opinion of FlashMQ—the company.