No, I know, I know. I'm not going to defend it one way or the other. It's just the thing that I know better, but we use Postgres at Dagster.
And by the way, you know, at Dagster, I started out as a head of engineering and now I'm the CEO. So it's not like I go hands on keyboard to the extent that engineers are going hands on keyboard.
But I guess to kick things off with this one where this really came from was, first of all, I was coming out of Twitter and Twitter is a place built for scale, right? You know, asynchronous message queues, like totally appropriate at Twitter scale. You want your thing to be super, super cheap and be able to handle really, really bursty workloads and have the right back pressure semantics built right into the clients. So that makes sense.
One of the orgs that I had while I was at Twitter was the internal tools team where we would basically get spam and abuse tickets. So like, if there was like a tweet on Twitter that you thought violated the rules, you could report it and say this is, you know, doxxing or something, and that goes into a ticket management system at Twitter and then a team picks it up and does manual review. And then there's some, you know, machine learning assisted stuff that happens.
But the point is, we were getting hundreds of these tickets a minute, right? I had run internal tools at Twitter as part of my job, and we would get spam and/or abuse reports on tweets. And so it'd be like, you know, if there's something that you thought violated the rules - like doxing, sharing personal information - you click a report button on Twitter that lands in a review queue. There's some machine learning assistance that happens, but usually like a human goes and takes a look at it... they might escalate it, you know, there's a whole workflow around it.
Anyway, we would get, you know, hundreds of these reports a minute - something like that. Which kind of sounds like a lot, but this is something a single Postgres box can handle no problem, or single MySQL box can handle no problem. It's not really that complicated.
It's a couple of tables, some pretty clean inserts in there, and you're not even really doing much in the way of full text search. So it's pretty bread and butter relational work. And the system that I inherited there was like this giant microservice monstrosity.
It was like nine different services to implement this thing, and asynchronous queues between each service. And each service was backed by a key value store that didn't have transactions. And so you basically got a PhD in distributed systems in order to like transactionally store a ticket in a ticketing system.
It's completely ridiculous.
I was coming fresh off of that, and, you know, coming into Dagster and we had this nice, really simple architecture. I was like, number one, I really want to preserve this.
Number two, I want to give other engineers, especially more junior engineers, the license to do, like, what seems like the simple and stupid thing. It's like, why does this thing have to be so complicated? Like, why don't we just keep it as a single-node Postgres instance for my application?
And the third thing that I had to do is like... I came in there, they were like, "Listen, we're just starting to sell our commercial product. We want to make some buzz in the community." And I was like, "I know how to do that."
I wrote a list of potential blog posts that we could do that was just like, "What would get both sides riled up on Hacker News?" I was like, "Well, you know, people love talking about Postgres."
The distributed systems people will get pissed off because, you know, the single-node Postgres instance doesn't scale. You know, there's another subset that will be like, "You know, Postgres and Kafka, they're two different technologies. They're not comparable."
So first of all, we are big believers in open source. I've been work... you know, I used to work at React, so I've been very into open source for well over a decade now.
Nick Schrock - our founder, CTO, co-creator of GraphQL - he's very into open source as well. So we're like kind of true believers I think.
You know, you've also got to make money to be able to fund all this open source too.
First of all, we want customers to feel like they can always leave our commercial product and continue to operate their business. So we try to not introduce proprietary APIs that keep you hostage to us.
There's an altruistic aspect of that, but at the end of the day it's good for business. If you're going to go sell a deal to a major enterprise, they're going to go run a risk analysis on all their vendors. They're going to say what's going to happen if this vendor raised prices or goes out of business or something. And the technologies that have true open source alternatives or true open source versions of them are going to win those RFPs, right? So customers demand it and we're happy to oblige.
In that case, like how do you make money in open source then? And how do you afford to continue to fund this work?
And our approach has been to number one, focus on the needs of accelerating enterprises. So there's a lot of like integration work that sits better in a cloud service, is directly correlated with willingness to pay, and enterprise value.This is things like, you know, the SAML integration - this is a huge pain in the ass to do, especially in like an open source product. You know, it's very much correlated to willingness to pay. Then there's a bunch of related stuff to that around access control, authentication, authorization.
The second thing is the open source orchestrator throws off a ton of interesting data. We have a ton of structured event logs, ton of metrics. And you know, in our open source product that's kind of just like oil that's sitting underneath the ground. Our commercial product basically taps those oil reserves and like makes them available to the customer. So we can do things like help you understand your spend, help you understand your core KPIs - like time to resolution of an incident.
We can create subsets of the platform so you can give them to one of your stakeholder teams and be like, "Listen, you guys manage your own spend, you guys manage your own Operational Excellence KPIs, we, the Central data platform team have too much other stuff to do." and we give them the ability to kind of like self-serve their operational KPIs and metrics and stuff like that.
You know, the other thing that we do is we offer up some really nice quality of life features. Like we do full staging environment per pull request, for example. We have a very deep GitHub and GitLab integration that lets you do some interesting stuff around staging environments.
So that's kind of been our approach to building a commercial product. Most customers, they try Dagster open source. They get a lot of value out of it.
Then they say, "Okay, we're about to make this a mission-critical part of our infrastructure" and they'll come to us and they'll say "Listen, we're just going to have a conversation" and they'll learn a little bit more about our offering. Oh yeah, we host it too by the way. That's another reason why people come here.
And so a lot of companies say there are some of these like access control observability features that we really want. Others just want a relationship with the vendor. Others don't want the operational risk of hosting a new service. And so we're happy to partner with those customers. And sometimes they say, "Listen, you know, we want to stay in open source for a while, it's working great" and we say "Awesome. At some point in the future, hopefully you'll come on board." But we see like losing to open source in a sales process as not necessarily a loss for the business, right? It's just, "It's not now."