Distributed systems are hard. Building a distributed messaging system for these systems to communicate is even harder. In this episode, we unpack some of the challenges of building distributed messaging systems (like NATS), including how Go makes that easy and/or hard as applicable.
Derek Collison: Yeah⌠Frankly, open source and smaller companies that are trying to make a viable business directly off of open source is a challenge. The whole industry is going through some really serious pains, because a lot of the open source is being funded through indirect revenue channels⌠Like Google. They donât have to charge you to license Kubernetes, or do anything like that. They have their reasons for doing it, but theyâre making their money elsewhere⌠Which means that it drives a consumer bias that it should be free. And thatâs a challenge. When I saw that with my last company, [unintelligible 00:49:55.24] itâs a huge challenge.
So part of that âWhat do we wanna build a company to do?â was equally weighted with âHow are we gonna make it a viable business?â So for me - again, a very unpopular opinion, Iâm sure - I personally donât believe in open core. I think itâs freemium enterprise repackaged, and itâs gonna fail, just like freemium enterprise did. I could be wrong, but my bet was that thereâs really only three ways to make money off of open source: run it as a service, bundle it with hardware, because a consumer bias of a physical thing totally changes their bias, and they have no problem paying for it⌠And then the last one is augment with a service.
Some people kind of push back and say âWell, thatâs open core.â But the distinction is itâs kind of like your phone and an AT&T contract. Youâre augmenting your phone with that, and it makes it better, and it makes it actually â you know, you need a telephone, or a cellular plan, or whatever⌠But I do draw that distinction. So what we did was we looked at âHow do we take those three rules (which could be wrong, but thatâs my bet) and where do we go?â Because running NATS as a service, as a silo - this is a big deal - it was a no op. We tried it at Apcera, no one signed up. And they were so nice to us, and they said âDerek, we literally run this on a Docker container, and itâs been running for three years now. We donât even monitor it. We donât even care. So why are we gonna pay you to run a singleton?â
So we thought to ourselves, how do we make it such that âthe sum is greater that the partsâ type stuff? One is that we can create a global network, all cloud providers, all major geos⌠Which you can do yourself; thereâs nothing thatâs not open source to do that. But itâs cost-prohibitive. If you just wanna use two sites, so one in Europe and one in U.S. type stuff. We did that, obviously.
[51:45] Thereâs always the notion of on-premise recurring support. Thatâs kind of the marquee that you want. NRE consulting, training education - itâs usually one-to-one, so you donât get a market multiplier there whatsoever. Recurring support - if it actually is clean, you can get your 10x+ kicker, for those who know all the market value accelerators, and things like that.
So we care deeply about that. We do do NRE training and consulting, but we know itâs not a huge source of revenue. Itâs a huge source of customer experience and satisfaction, but not revenue.
So we have the SaaS model with NGS, we have on-premise recurring support for our stuff, and whether itâs good or bad, a lot of people coming to NATS now are like âWow, thatâs so cool! It took me two seconds to write the NATS app and run it against the demo serversâ, which have always been free and available and such like that. âI wanna do something hard.â Itâs just natural, engineers are just like that; theyâre like âThat was too easy, I wanna do something hard.â
So NATS now allows you to set up some crazy complex topology, with some crazy security rules⌠So they try to do that, and now all of a sudden because of that complexity people go âOh, we wanna get support.â I donât like that; I like things that are simple and just work, but we have noticed that.
The other thing thatâs interesting from our perspective is that we donât believe NATS is just a connective technology. It is, but how do you value it as a user? You know, Iâve been doing this so long, and my bias is âEverything is just a message.â So whether youâre using a database driver, or whatever, youâre just sending messages back and forth. So what happens if we say âEverything is just a NATS messageâ? What I mean by that is you get everything that NATS does, you connect, distributed queuing, load balancing, circuit-breaking, self-healing⌠It puts itself back together, by the way, without any help from any platform technology type stuff, reallyâŚ
But what happens if we said âHey, you know that export and import, those streams and services, and you can export one and someone can import it?â What happens if the system just has a service that you can import, that says âItâs a KV serviceâ, and now you can do zero-trust, secure key-value set and get from anywhere in the world, with any application. Hm. Okay, now all of a sudden NATS can do simple state storage and retrieval. It doesnât solve all the apps, it doesnât solve world hunger, but hey, okay⌠Now what happens if it can do object storage? Very large objects, very efficiently. The system dynamically moves things around, it understands where requests are coming from⌠And again, because we donât care, we can just move Mat and run them wherever, without anything special coordinating. Thatâs very possible.
And then going further, itâs like, well, what happens if thereâs a GraphQL service, and Iâm just sending requests over NATS to a GraphQL service, but all the security works, all the authorization/authentication is built in, itâs what I know, it just kind of works? So those would be premium services that we could charge for. So you get â I call it basic cable, the dial tone, and then you can get the premium channels a la carte if you want to.
And then the last piece of the business model is â some of those may be very compelling; letâs say anomaly detection, or some advanced analytical statistics on traffic patterns, and stuff like that, that a company might say âWe really want to use that service, but we canât use yours. We have to run it in our own data center, our own VPSâ, whatever that is. Then thatâs software license revenue.
The way we envision the company succeeding is the first bow wave, the first 2-4 years will be recurring support as the major revenue driver. Then, as we land â we landed web and mobile, weâre about to land MQTT for IoT⌠Those two will drive more of the NGS stuff, direct. Or they create a leaf node that they connected with and use NGS to talk across the world, which we have a couple of folks doing already.
Thatâs kind of the whole business model in a nutshell. Weâll see how it works out, but itâs a challenge, for sure. The consumer bias that it should be free is the hardest thing for any OSS developer to fight against.