Hacker News new | ask | show | jobs
by grepLeigh 1404 days ago
I'm in the process of migrating PrintNanny.ai's remote command/event system off Cloud IoT Core. I've been running on IoT Core for 1.5 years. Here's my breakdown of the costs...

- $236.99 in usage, approx 1% of project's total revenue

- ~20 hours to implement pub/sub applications running on a mix of Raspberry Pi & GCP VMs. Implementations were in Rust and Python. It would have taken much, much longer to stand up a managed MQTT broker and identity/key management that I felt comfortable using in my own home, let alone providing to customers.

- Hundreds of hours implementing and debugging glue between GCP's Pub/Sub product, websocket-based subscribers, and MQTT subscribers/publishers.

I don't regret my decision (wouldn't have shipped otherwise), but I'm looking forward to the next phase. Here's what I'm migrating towards:

- NATs message broker. NATS supports connections via MQTT and Websocket protocols, besides NATS own protocol.

- django-nats-nkeys for org, identity, and JWT management (not production-ready, don't use this until I've been eating my own dog food for a few months) [1]

- AsyncAPI schemas [2] for core message APIs, including schemas for 3rd-party printer software events (OctoPrint, Moonraker, Repetier, etc). This will underpin PrintNanny's plugin system.

[1] https://github.com/bitsy-ai/django-nats-nkeys

[2] https://www.asyncapi.com/

2 comments

Don't hesitate to join the NATS slack group and reach out if you need any help, we're a friendly bunch
Oh very cool, see you in there! Thanks for the work you've put in.
Good to know, perhaps over a Martini?
NATS doesn't support MQTTv5 so for serious MQTT usage it is still useless unfortunately.
We are waiting on demand for it. We have a bunch of folks using MQTT on NATS and NGS but no requests yet for MQTTv5 so far.

Once we see legit demand we will make sure it's supported.

I think its a vicious cycle - No one supports it so services don't implement it, and because no services implement it people use hacky ways to do what MQTTv5 does out of the box or use services they normally wouldn't because the ones they want only support MQTT 3.1.1.

We use NATS for pretty much all of our MQ / Service Bus type stuff, we were using GCP Iot, AWS IoT and recently moved to EMQX as it has native MQTTv5 support.

NATS would have been a much better choice for us but the support wasn't there.

Build it and they will come :)

Would your company be willing to fund the development? Or would you be willing to post a PR? We would be happy to take a look.
Funding possibly - PR not likely as we dont work in Go. Will socialise and come back to you