This is a very interesting interview – well worth the listen.
I had heard of NATS before but was just one of the many projects out there to consider – none of us have time to investigate them all. However, like so many other podcasts episodes, the “why” came out and everything the author said really resonated with me.
One problem I’ve been trying to solve is how to communicate between subsystems inside an edge device application written in Go. For the past couple projects, I’ve simply put each subsystem in a separate goroutine, and communicate between them using channels and native Go types. However, this approach has some complications due to the fact that arrays and hash maps are reference types, so if you pass an array on a channel, this is not really a copy. Additionally, this architecture does not scale to outside an app. Would not it be neat if the same messaging system could be used inside an app as between apps and devices? It appears as if NATS can be embedded.