I bought Mastering Postgres because I use Postgres a lot and wanted to support Aaron and his content. I already learned more than I expected and have been very impressed with the quantity and work Aaron put in.Timo Strackfeldt
Shorten dev cycles with branching and zero-downtime schema migrations.
okay welcome back to database School I am your host Aaron Francis and today first time ever we have two guests on the show so it's growing it's growing exponentially it's going to be a lot of fun here um so we have Monica and Tudor here from Xata and Monica is the founder of Xata and Tudor is the CTO and so we're going to hopefully dive in super deep about how they met how it got started all the stuff that they're doing and um I'll let I'll let Monica describe what Xata is and introduce herself and then Tudor we can throw it to you so Monica welcome yay hi everyone I'm really excited to be able to uh be part of the
show hey I'm Tudor I'm CTO at Xata nice to meet everyone yeah thanks for being here so Monica tell us give us the but we'll we'll dive in later give us the one sentence two sentence pitch for what is Xata yeah so what we are building is a Postgres database platform for developers by a Postgres database platform we mean that it's a fully managed Postgres Service completed with additional uh features uh that kind of help developers build application fosters and also achieve um performance scale uh and our Focus currently is um basically schema changes uh and uh providing a best developer workflow for our developers uh so we have this we have been building this uh open source project called PG roll that offer zero down time reversible schema changes uh and our other key differentiations are basically uh major version upgrades uh we also have uh a story that basically um synchronize the data from um Postgres to elastic or search engine to to kind of provide an extensive full Tech search capability and yeah basically what we are working is uh we have a few open source projects P like I said for zero downtime schema migrations we also have B stream that basically the idea is um uh that you have Postgres is your um source of Truth and then you want to replicate data from Postgres to other data source for now we support open search and also web books uh where we are planning to add other data source and also we have PCX which basically is um uh our framework to deploy to develop um extensions in Postgres in Data so one of the interesting things that I want to get to a little bit later is all of the open source work y'all are doing because all of that stuff you just described you have open- Source work on and it's just out there for people to use which I think is super awesome but you did mention there you did mention elastic and I think both of y'all worked at elastic so Tudor can you tell us about your your background and is that is that where you all met because I feel like you were both ex elastic so tell us that story we are both uh ex elastic but actually we have met way before that um we we we did join Elastic together uh because we were me and Monica they our second company the first company that we started was called packet bits and this was an Elastic acquisition which join Elastic in 2015 there's quite quite some time uh since then um uh and yeah me me and Monica are actually husband and wife uh and we have met way back in Romania a few years before all that all that happened there you go okay well that makes a lot of sense then so what was this first company what was this first company that got acquired by elastic what were you all doing there it's a it was an open source monitoring tool uh it was called packet bit because we were using um packet capture and then uh getting observability data out of it uh so for example you could you could install this on a server that was running my SQL or Postgres SQL or something like this and we were paring the protocol and getting information from from from the actual protocol and the same for HTTP and other protocols that we were supporting um and this is what uh yeah go ahead mon so basically what we had your building is open source project uh was called packet bit and we are using elastic search to basically store all the Met basically the data and then we we decided to use kibana which was an open is still an open source um project that basically visualizes all the data so this is uh with this kind of we were able to provide an open source full uh end-to-end monitoring experience for our users um so I started ping bit um and and then toor join me a year or two years after or year and a half afterwards uh yeah and then soon after we joined for elastic and we yeah we had amazing opportunity there to kind of grow uh the monitoring um um team and kind of instead of in addition to kind of looking at the net traffing we started to collect other types of data like for example metrics and logs in order to provide a better um Insight uh to our our users uh so basically this kind of became the observability that as it was called back then by basically similar with what data do for example provides nowadays gotcha and so you're you created this company you get acquired you're in elastic probably having a nice time in elastic having just been acquired what possessed y'all to say we should go start a database company that sound that sounds fun and easy and carefree what what did you look at out in either the market or your life or what that you decided this is what we want to do next hey we'll get back to the interview in just one second but since you're here you like databases you probably like Postgres let me tell you about Mastering Postgres this is a course that I am teaching coming out October 15th this is a way that you can Master the most important part of your stack your database so go to MasteringPostgres.com and sign up to hear when we release it okay back to the interview yeah so it was again me so uh I left Elastic after five or six years uh and I started this um like nonprofit organization that offers mentorship for under representative groups in Tech and my idea was you know basically to help as as many people as possible you know we've seen that the the tech uh environment is not as easy um on on developers especially the ones that are coming for under representative groups and basically my my goal with this nonprofit was kind of to connect mentors with mentees and kind of um support each other and yeah when we are building this mentorship platform this is something that me and Tudor and a few others were building uh we realized that databases are still uh not as easy as to be used as as we expect it to be so our entire career we're working in a monitoring space and we've seen on the other side of the table how to push uh dat data uh and kind of put uh databases to the Limit um and basically we realize that you know building applications uh it's much more complicated that you would expect in 2020 uh and I think that company should be able to spend uh more resources on building the applications itself instead of building a database platform and this is what kind of um made made me decide build another company was not really the the idea but I found there is an opportunity in the space so that's why I decided to start Xata so this this story uh aligns very much with my experience where you you have an idea and you're doing a thing and while you're doing that thing you're noticing all of the things that I need to do the thing that I actually want to do are very hard and so I'm going to go focus on building you know the infrastructure to make this thing easier um and I find that like people are always like I don't have any ideas or I'm just looking for a problem and I'm like just start literally start anything and the ideas the problems will present themselves and so it sounds like that's exactly what happens and you like someone should really work on this too bad I don't have the time right exactly exactly once once you're working on something you see all the problems you're like I can't work on all of it so you you're doing this nonprofit Tudor are you still at elastic at that point while she's building up the nonprofit uh yeah I was still at elastic at that point so she's I just love this story so much so she's building up a nonprofit you're at elastic and she comes to you and she's like babe we're doing it again we're starting another company tell how did that how did that happen and what did you say yeah I I guess I have a thing for uh projects at the beginning I can hardly resist someone coming to to with an idea to me to not think about you know what it could be and you know how we could do it and what to reach it I just love that part of it you know like the the beginnings of everything um and I also in Elastic I actually was kept looking for new projects to do and things you know to to to start and so on so it's just I have a thing for that and then of course when especially if it's Monica that tries to convince me to do something that she's usually yeah she tends to be successful in that yeah I think so and you know you're married so there's some sort of like marital you know requirement there that you say yes honey let's do it that sounds awesome yeah the the the real the real story is like this so I started Xata and then you know I uh um I managed to get two rounds of founding and then I think I even rised no I think toor joint after I Rise the first round but I think before I Rise the series a and until there went back to to elastic and he said like I need to leave and they were trying to convince him to stay longer and he said you know uh I cannot really stay like I have a duty to my wife and I need to you know and from my point good job yeah and from my point of view I think in my opinion Tor uh I mean putting this on the side that we are married but uh reality is that Tor is the best CTO that I know over there and he is uh yeah and you know you always want the best person for the job and I think this has this uh unique combination of you know have a very good technical person but also very good with um having a feeling uh what what the future might look like and you know product oriented person which I think is very hard to get uh from a technical person this is the best you guys you guys are adorable Okay so so Monica you're out there on your own raising money um where where in the world are yall located and this was in what 2020 2021 that you were raising yes for Xata was um so I started the company at the end of 2020 um so it was we were in the pandemic times in lockdown so it kind of was kind of hard to even start a company uh on the legal side of things so it took much longer than I expected so basically in um with kind of in the middle of 2021 we started basically I hired the first employee and we also had the first investment um the seed round um in middle of yeah July 2021 okay and so the side yeah so you've done seed in series a how far have you gone into the funding now have you raised another round since then no we didn't rise another round so we the series a we rised at the beginning of 2022 um but we didn't rise any other round since then we have quite many years of Runway so we are not Rising another around for now that's incredible and I looked at you know I I looked at your team's page and Your team is growing and you're currently hiring and this this is amazing congratulations this is very cool thank you we are not a big team but sorry oh go ahead I know go ahead you I was I was just going to say so what was um when you you you hired this first person what was your initial offering uh to the market so what did you come out of the gate saying like we have hosted Postgres or was it something different than that and like how did you get how did you even get a foothold on the database hosting market so that people would start trusting y'all with giving giving you your their most important asset which is their database how did you even convince people to do that actually the initial pitch was a bit different so the way I was pitching is that um imagine a database that it's so easy to use for for developers and is somewhere between a traditional database and air table uh so you kind of get this functionality because during uh my work with this nonprofit organization we really we really used their table so we a solution on top of her table and we really like you know this uh sprad like UI and I think this was really important uh to kind of see and manage the data in a visual way so basically I wanted to apply all this um uh experience that you as a user have with our table to a traditional database um because idea is that you know you don't have to be a developer that needs to understand the internals of a database in order to manage one in production um so this kind of the the initial pitch was and uh you know after speaking with lots of of of of people you know initially basically I want you to build the whole database on elastic search because theoretically you can achieve all the functionality I wanted only from that and you know after speaking with uh quite many people now in the end we realized that we we want to build a solution on top of post and elastic search while search because you get this full Tech search um an extensive full Tech search experience and this I think is very important when you have an application and I think uh applications nowadays really suffer from a really nice uh full text experience so I wanted to bring this to all the applications uh so that's why it was this was kind of the the first functionality that I wanted to bring um on top of the database es I like that I like that so your vision your vision from the beginning was platform it wasn't just hosted database it was let's build a platform that uh application developers need including the database but also importantly at the very beginning including full Tech search which you guys were super familiar with at that point exactly yes exactly okay and so then Tudor when did you come in in that kind of in that kind of techn techical story and what was your first like when you came in when your when your lovely wife convinced you to quit your job and come do another do another company what did you what did you come in and Tackle first like where was the product when you showed up and what was that like uh coming in kind of after it had already started mhm uh the product was definitely at the beginning I would say you know like PC level I think we did we we we had like a few friendly users on on the platform but uh we haven't opened up to to any real external external people so it was at the beginning and I think it was that's when it was still only like elastic search based um and then we look we looked into you know like the functionality that we wanted to have the data model that we want to to to support um but also some of the not not only the data model but also we had you know like we had this visual that a a database should be like like an air table or like you know like a notion page or an notion database these days you know you you create it you add your data into it and then if if you leave it and come back in two years time your data you know it's it's still there and it still works and you you're not nervous that you know maybe my instance had shut Prett pretty important aspect you want you want the data to still be there right right uh so we and we wanted to offer this also to as many people as possible so there's there's actually quite a difficult set of requirements um but one of the things that you back then when we we said okay we need we do need a relational database and something like Postgres and such uh was that we in the data model that we had we wanted to support relationships natural Pretty Natural you can do relationships you know like in in in no SQL stores as well you know like this um there's a lot of literature on how to do that uh but for what we wanted to do it was not a natural fit it so so so that's why we we said okay we're going to introduce Postgres back then it was still kind of like an implementation detail if you want because uh we we are offering our own API on top of it and our own sdks and such um uh but that's kind of how we you know how we welcome Postgres in to Xata and since then we're kind of moving more and more into into into Postgres MH and so at at that point um how much experience did you have being like a Postgres DBA or is this something you had to learn on the Fly because uh I understand Implement implementing it as an implementation detail probably probably protected you from like the full surface area of Postgres because it was kind of hidden behind um hidden behind your apis and sdks and that sort of thing but suddenly I mean you have tons of experience with elastic you both do but suddenly you're now you're now a proper Postgres DBA was that terrifying or is that something you had done before uh I have done parts of it before uh and yeah like it was my SQL I in the in one of the monitoring products I was in the monitoring space even before packet bit and we are using MySQL but we are pushing it quite a bit to the limits and back then you know there was this uh this constant mySQL versus Postgres debate uh sort of thing and there were times when we would have like to switch to Postgres if you want um so I had some you know some DBA type of uh uh experience um but not not exactly on Postgres and not all that much of it so yeah it was it was definitely a little bit scary um I'm sure that sounds terrifying good good for you so you're at this point where you're at this point where Postgres is now in the stack somewhat as an implementation detail is this the is this the point where um I think it's PG stream is that the name of the the one that does the the data capture that yeah okay um so is this is is this the point where PG stream comes into existence or when does when does this open source work start that takes the Postgres data and puts it into elastic and the platform begins to like coales around this so the technology the PG stream technology let's say did exist uh back then in Xata it's one of the you know kind of like one of the first things that we did uh but it was not separated in an open source project um and the PG stream open source project actually is quite new we just released it uh maybe in May May this year that's exciting I didn't know that yeah it's relatively new um uh but as I said the actual code and Technology we have been using internally for quite some time uh by that point and it's the reason we open source cities has more to do with our overall open source strategy uh we did discuss it you know we could kind of flip the switch and make everything open source but that's actually you know you are open source but in a way that's really hard to deploy for people because they would have to do everything that we're doing and we know it's hard for us to for a third party or someone else it would be like like next to impossible to keep everything running and so on so if for the most honest way of doing open source is to Let's separate uh the key functionality that we have make them useful on their own as open source projects um be you know like independent so you can you don't have to use everything you can use only PG roll or only PG stream or other things that that that that you're planning um you can use them individually that's much easier to adopt but if you want to have all of them in one cohesive platform then probably you know Xata is the best choice for you so that's kind of U that's that's the that's the thinking behind it yeah that's uh I I like that as a strategy because sometimes you will see companies say Hey you can host it yourself and you look at the requirements to host it yourself and you're like I not only need to be a devops expert I need three other devops experts to help me run this thing so Monica tell me this like this open source philosophy where did where did this come from and why why did y'all decide to go down this route because open source is amazing and wonderful but it also is a lot like you have to do a lot you have to manage a community you have to manage repos you have to like maintain codes of conduct there's just a lot of work with open source so what is it about Xata or potentially about the two of you that you decided hey open source is going to be one of our strategies yeah so definitely we have been in the open source bace for a really long time and I've seen the power of building a community with peky bit where basically you don't I mean at that point in time you we didn't have to do any marketing or anything like we build a community in much easier is not similar nowadays because there are so many open source projects but I feel still think that it's important to have an open source story especially when you are selling to developers so I knew from the beginning when I built Xata that I want to have an open source story but I was not sure how that would be and you know at the beginning when you're starting a company you kind of need to figure out multiple things how you position our yourself what kind of functionality you need to build so that's why I was trying to postpone that moment and then when it was kind of clear for us that um you know we are building this platform with this functionality it was kind of um a more natural decision that you know we are building one open source project that is um soles a specific pain point that people have a Postgres and they work against native Postgres and I think you know for larger companies that they are not interested or they are not allowed to run any close Source projects or any SaaS offering for them it will be important to be open source um but I know for most of the people they also want to have um you a we web interface or UI AI story a UI story around it and then you know maybe fits better if if you're using the open source Story part of a of a SaaS offering so I think um with this idea basically with the open source story that we have we can kind of tackle all sizes all companies of all sizes so for example we can tackle the builders with our free generous plan that we put so much effort into this in make in like we have the goal that we don't want to spend more than $2 per customer customer and then with have the SaaS offering for snps um and then for large organizations that they are very strict with running open source you know they can we can collaborate on them uh with um uh other the open source project this is something that you know in the while I was at elastic we had we had basically the Beats what the be team this is the the name of the project I we were working on and there we had a strong collab oration with eBay and they because of our open source strategy they were able to uh com you know collaborate with us and kind of we are able to test our uh our our beats our this this AG that we mentioned um at a large scale because eBay has a much larger scale that you can you don't you cannot really have a way to to test this internally so I think it's important to have collaboration ation with larger companies because one is is helping you you know um uh test your product but also kind of you can hear about their needs and kind of go the move the product in the direction um that otherwise it maybe will be difficult for you to to see this going to to work see this this is really smart to me this is very interesting because I think a lot of people potentially yes myself included think open source is great for like the the makers the builders the people who are just starting up and you're like I'm going to pull some stuff off the shelf and put it together and what a great like what a great Community we have this is awesome as an individual I can build stuff right that's true but what you're explaining is something that I haven't really thought about that's also not the world that I live in these big Enterprise companies but it gives you kind of a foot in the door and gives you a little bit of credibility so like you were describing with eBay um you they get to use some of your open source work become familiar with you and your brand trust the quality of the things that you're producing potentially even start to get support from you on that open source thing and that makes the entire commercial adoption ramp a lot uh a lot smoother versus hey we're just these people off the street and trust us we're good it's like no we have this long history that you've been working with this tool and now you're kind of at valuating this other commercial tool that we have that is very smart Monica well played yes and I also think it's important I think you you can succeed as a company if you have a big community and you can achieve a big Community not only by addressing Builders but different types of you know companies and sizes and so that's why you know that was the idea initially as well so let's stay on PG stream then um Tudor tell me what else are you either uh Xata proper like internal companies or what are you seeing other people use PG stream for because I imagine it opens some really interesting use cases and I would love to hear like what people are doing with this I'll I'll read the tagline so the listener knows Postgres replication with ddl changes and so tell us what are people using this for out in the wild yeah so the most uh the most common use case the one that we use internally and that's the most polished for now is the replication to elastic search or open search uh and it does this like logical replication comes with a set of gachas in post grass uh and then on the other side on the elastic search side there's a there's a number of things that you need to do in order to to have performance replication and more importantly actually be correct you know because you can have lots of inserts and updates and deletes different order and so on if you want to scale you might process them in a different order elastic search internally my my my uh reorder messages and such uh so you need to be careful on how to do it such that what you see on the Postgres side is exactly what it is on the elastic side as well and that's what we you know like that's what we did and uh and improve over time in in PG stream uh now what now that part can be you know that can be applied to other outputs as well and we um uh we're looking to support other things let's say other output plugins as well especially things like s3e you know like Iceberg uh these sort of things uh click house uh although click house now have has a pretty good technology internally so we see if you know like if it wouldn't be more smart to just tell people to use use theirs um um uh and other such outputs there is an one other interesting use case which is for web hooks uh it's something that we added kind of more like just an example output you know how to write an output uh but there's yeah I want I want that I want to use web hooks right yeah yeah exactly exactly because it's a it's a simple way of you know calling these web hooks whenever there's a change in Postgres and that can be on the data side but also on on schema changes like adding a column or removing one or changing something about it and you get called a a web hook and then you can have your Lambda process it or do do do whatever you want with it very cool yeah that sounds awesome the web hook the web hook use case just obviously opens up the entire universe which is very very cool um so that is uh that's PG PG stream and then there's PG roll so when did PG Roll come along and tell us kind of how PG roll what it is and how it works MH right so PID roll it's open source for one year now we actually just realized the the the other day that uh we have first publish it one year ago um and it's a zero downtime like online schema changes tool for Postgres um and the way it works is actually we think pretty novel and interesting um uh and I I I can describe it quickly uh the idea is describe it quickly or slowly you can go into as much detail as you want Tudor we've got time okay that's great that's great uh uh so our idea is to offer both the old version of the schema and the new version of the schema at the same time to the application so that if you do a a rolling update of your application the application can say okay I'm at this version so it gets served that version of the schema uh and the new version of the application will see the new one at the same time right because otherwise you have to do this and this is what everyone does today you have to do changes in a backwards compatible way schema changes in a backwards compatible way and have some sort of compatibility code in your code base to be you know like if this color if we are this version use this column otherwise do something else or use this other column there's like a there's like a whole I think it's like six or seven or eight steps of how you're supposed to do you know back you like change the code you change the schema change the code change the code change the schema and it's it's a whole it's a whole mess so this sounds interesting keep keep going right right so and now how do how do we accomplish that and uh uh behind the scenes we use hidden columns so we would uh let's say let's take an example let's say you you want to change the type of a column you know you have it as an integer and you want to change it to be a to a string or the other way around we would add a hidden column with u with a with a new name like underscore PG roll and then the name of the original column and then will start back filling the data applying any data conversion that you might have defined and you can do that with SQL expression so you know if you want to change from in to string that's pretty easy and the other way around but you might also do things like I don't know I have a name column and I want to split it in last name and first name and last name you can also do that via just via SQL expressions and we would backfill the data for you uh in this uh in this uh column uh but at the same time we create these views and we create a view in which the the column is mapped to the one in the physical schema and then another view in which the column is is mapped to this hidden column that we're backfilling right uh so then the application can choose okay which one do I want to use which view I want to use and that's done in Postgres we group this in schemas Postgres keas uh so you you you select your uh your you know like version by setting the search path you set the search path you know like your CI CI tool would take the version and put it into a little bit of code and and you select your your search path and that that gives you the you know the right schema where we are um yeah that's you know that's high level how how it works uh that is exceedingly clever I have to admit I have never heard because what I everything I have heard we talked about schema changes is that you know 68 whatever step process where a lot of the a lot of the like uh mental labor comes back onto the developer um which you know it's fine we used to not we used to not have any safe schema changes at all so like we're one step better but this this reminds me what does this remind me of um uh Stripes API right so you can just say like for Stripes API you can say I'm version 2020-10 d113 and you're like I'm using the October 13th version of the API and somehow it just always works and then with y'all it's like you're saying that by setting the Postgres search path and so that's determining where where it looks first you can say I'm using the old version or the new version of the schema and then what happens what's the final completion step um at some point do you just drop the ghost or the old the old stuff and do a whole switch out and then everything's clean and PG roll is out of the picture until the next time around yeah in PG roll terminology you complete the migration uh because for now to keep fix simple you can only do this one at a time uh so in order to move to the next schema change you have to complete the previous one um but you know like it makes sense to complete it whenever you have yeah when whenever you have tested your new application and you you you mark okay this this is now done you you complete it and then we delete the uh whatever temporary columns we might have used um and the views now the view would the view of the version would still be in place at least that's how it works now uh it's possible to also remove the views some uh you know like some customers are not very comfortable with having this view all the time so then you you we remove it make it in the physical schema and from then on everything works normal without the intermediate step so we do it for the minimum amount of time um uh but yeah there is definitely this this complete step and you can also roll back I think that's also important to say like for for example for whatever reason you realize that the change is not uh um good enough that you can also roll back and then as if nothing has happened in your the roll back isimportant yeah pretty important you know as much as we like to think that uh we'll catch it all in tests or just using our powerful brain is pretty important to be able to roll back pretty quickly and that's a very fast process you said Tudor yeah because we're basically just dropping the temporary colums and the extra views and then everything is is back at the beginning uh so you know the process the process of back filling will take some time uh but we also you know can rate limit that and do it slowly so that it never impacts too much your production database uh but if at any point before completing you realized oh something is not right you can always roll back and it's in a in an instant as it was before you started that's a I think it's a pretty pretty big Advantage this is pretty cool you two you two are quite ever so I want to talk about um so I understand the origins of like elastic coming out of the nonprofit and coming from your background and that was kind of like the core thing and then Postgres came in the one thing one thing that I found super clever was the blob storage um so tell me where did that like where did that come from from like a from a product side who decided hey it'd be nice to be able to throw some giant files in here and have them end up on you know a proper blob storage place what what was the decision on that before we get to technical I think this was the our initial feature and this is basically inspired from Airtable you know the idea is like wouldn't really be cool to kind of upload images in your uh in this press like UI as if you do this inner table and this was kind of the initial uh this initial idea is you know companies they um so the goal like of this feature and other features that we are building was you know we want to minimize the times the time developer are spending in building the application and uh and this is one of them so in order to support images in your application you need to kind of build a custom solution and a similar with full Tech search so this is what triggered me because we've seen at elastic every other company is building the same database platform you know you they have like a um relational database and they have to you know synchronize the data from a relational database to uh to elastic search and this is not an easy operation because you need Kafka it kind of basically complicates and my idea was like why every company out there needs to reinvent the will when we can provide all this functionality out of the box and this was kind of the um you know the idea behind the images as well which makes really good uh the
yeah I'm sure yeah because I think every every developer that's ever built image upload never wants to do it again and every user wants image upload everywhere they're just like hey can I throw an image here and you're like why no so that that makes sense to me um that the origin story is still is still like let's make a proper air table like like experience with a little bit more power and controllability under under the hood so the technical aspect of it is interesting to me so from like an actual technical perspective do these blobs end up on is it specifically S3 and then what's left behind in the Postgres database is it just a pointer right so it's they are stored in s free they are actually served through Cloud through the cloud flare um CDN as well which does caching which you know has has some advantages and it's also where we we can perform image Transformations so it's not only it's a little bit like like cloud in N you know not only you can request an image but you can REM request it at a certain resolution and size and so on so have blood storage plus CDN plus Transformations right yes yes that's all in the file attachments features um and what we store in pogress is indeed basically like a it's a Json field with this metadata you know like more or less URL to to where it is but we do have this ability of created signed URLs um um because the the point of doing this like you could you could of course do it yourself as well put a put a put upload it somewhere store the URL in the database and that's more or less it what we wanted to do a little bit extra is to to make sure that if you have access to a database row then you would have access to the images in it uh but not other images right and to do that securely uh so that's where we have this notion of sign URLs that it's a temporary URL that you get and that gives you access to the to the S3 through the CDN so it's also cach there's no performance penalty in doing this um and those sign URLs expired so they give it gives you access to the files but only for some period of time and you can get another one if you if you need it um yeah that's um uh that's the you know like the extra stuff we do Beyond just putting the the URL there um and then also like for example cleanup that's also uh because if you do this yourself you the you delete the road in the database you cannot Cascade delete to S3 right so you have to do that in your application in our case actually which never happens by the way those files just get left behind forever they're they're just left around yeah exactly yeah this is this is this is very clever so tell me um between amongst all of these these features that uh the The Xata platform offers when people come to y'all when when customers come to y'all or the customers that you currently have what is it that they are most like what what are they looking for like why are they why are they so excited because as as a technical person I'm listening to you talk and thinking this is incredible like this is so clever this is so genius but from a business perspective what do people come to y'all for primarily yeah and this is where we kind of separate a little bit through the personas that we're serving and like we were discussing before there's this Builder Persona uh that would you know like it would typically use something like next J Deploy on Vercel or nlii uh you know Indie hackers nonprofits all all these people they they like this wealth of functionality you know and the fact that they can develop quickly uh by using these features especially people that that realize when they're planning their their application well I'm going to need search I know already and I'm full Tech search and I know I'm want to store files uh so then you know this is data and say okay this is the perfect match is is what I need uh does has this functionality built in I don't have to worry about it's a serverless database so you know like they they worry about keeping it up and so on it's a it's a really good match right then when you're going to more companies and teams type of personas uh they're less interested in this type of functionality and they are a lot more attracted by by our schema changes functionality so what we do with PG roll uh branching and SCH Chang safety yeah yeah the safety of it uh and the replication to other different data stores so so PG stream we also have we have some more nice things in the in the in the data Platform One is U uh that you can move uh your Postgres database your logical Postgres database let's say you can move it from one instance to another from one physical Postgres cluster to another uh and you can do that just by from the UI you know you just move cool kind of like take your bags and everything and move to this other one and that actually turns out to be quite useful for things like major version upgrades because if you can move between clusters you can also move between clusters of different major versions and we do that without downtime or like very very minimal downtime uh also for for like testing blue green deployments this sort of things is um these are the functionality that uh is more attractive to to larger companies Monica you mentioned branching there for a second I don't think we've talked about branching tell us what what branching is um and kind of the story behind that yeah so the idea was this was kind of the uh I think we branching was one of the first functionality that uh we we had in the in the company and we are kind of inspired by GitHub you know he said if you are branching basically if you are creating a PO request in your application it will be really nice to have the schema changes that you do in your database associated with the change that you do in your application and this was kind of the first functionality we have been building and this is something we were dreaming kind of from the day one to build a nice developer workflow and that's why we kind of decided to start the initiative of PID roll because imagine that you change your application and this change requires a change in your um schema and then it will be nice that you know once you when you want to um um merge this in production you do this with zero done time so this is something that we have been working for over a year uh our solution is like currently is not perfect and we want to make it even perfect than that so there are a few things that we want to be able to do in order to achieve this um whole developer workflow so I have one last like uh technical question you mentioned I think Tudor you said I think that your your target for I think it was free tier customers is $2 how do you keep how do you keep that free tier economic because we've seen companies eliminate those as the environment has changed so how how does that work and how do you like how do you all think about the free tier as a company so I guess that's two questions how do you how do you keep it economic and why do you keep it around is the other question yeah yeah uh yeah and we're actually being quite open about it uh we have a blog post publish that actually goes into dollar amounts you know like what cost us what and and how u a lot of people found it quite quite interesting so you can you can you we'll link that we'll that'll be in the show notes for anyone listening we'll link that up awesome um and the way our approach to doing it is by using shared clusters uh so this is you know like how you would do if you were to implement notion or air table or something like this so we use shared cluster and multi-tenancy inside the cluster um uh we have some uh uh guad lades in place to mitigate the Noisy Neighbor problem because that's the you know like the main reason for which you wouldn't do this because of the Noisy Neighbor problem uh and there are also some security implications and such that that we have have to deal with uh but the point is you know we can put uh like 2,000 free tier databases on on the same Postgres cluster which then the Postgres cluster can be relatively big you know uh but still you divide the cost by 2,000 so that's how you get to you know like like like $2 per per per free user or something like this um uh and um yeah I mean that's at the high level that's it uh um yeah the second part of the question is you know why do we keep it and such and it's to some degree is our origin story uh because we this is the part that we are kind of missing you know like when when Monica was doing this this nonprofit and such uh and we actually have quite a lot of nonprofits in in the in the meantime on the platform uh so we we definitely would want to disappoint and so on but to us the more important thing is that we we give people the occasion to to test our platform for how however long they want play with it a lot of a lot of developers use it for their personal project and then they recommend it at work uh so you know this is the these are the benefits to the company yeah yeah it's also important to mention here that also comes with high high availability so basically if you are a person that want to have an idea and you are building an application around it and then you can also run it in production for free this was important for us not only to support nonprofit organizations but also very very small startups and as they grow we can grow uh with them and you know they can move to a uh other the Pro Plan or they can move to a dedicated instance that we also provide so this is something that I think it's Unique with us because in all the other um platforms you can um they don't really encourage you to run in production for free um right in a free deer plan yeah typically only for development right yeah yeah because I think a lot of the other to the extent that the other providers still have free plans they're pretty they're pretty hamstrung in that it's like hey you can use it but it's going to go to sleep and then it's going to take 10 12 30 seconds to wake back up or whatever um so you found that you can keep the economics economical and that the funnel works and so people are coming in they're trying it they're either um growing themselves up to a paid plan or they're recommending it inside uh a company that actually uses a paid plan and so you find that this flywheel is pretty sustainable mhm yeah yeah as long as we can keep uh the costs low uh um uh that makes sense to us and then the the the technology the technology that we have developed that is actually usedful in the in a number of places for example that's that's the reason we did the the moving of the databases from one cluster to another because we need it this is part of you know how we how we deal with noisy neighbors we can we can isolate them you move you move them to a new neighborhood and they're not quite as noisy then yeah exactly yeah exactly but also when they upgrade to a prop plan and then they want to be on a dedicated cluster we don't want to tell them well you have to recreate your database and move your data it's just a button in the UI and and and we do do that for them and that type of you know like the that building block is actually interesting at certain scale as well and then if if there's a CO company that um uh has a you know microservices architecture quite of of they do this uh Postgres as a service internally like they have their internal Postgres as a service uh and then they can use zaa like that uh and it comes with all this functionality and that keeps for them the cost minimal because the same the same U uh uh the the same economics that we have done for us they are also valuable for a company that wants to do this and often this that's interesting that no please often it's a problem right so if you have let's say a company of 1,000 developers and then you need to provide uh let's say more than 500 uh Postgres instances for each of this their teams then it becomes very expensive so that's why this is what toor mentioned that it's economical if they Pro if they offer if they use something like the same functionality that we have been building we share cluster mhm and this is interesting because one of the things y'all keep mentioning is that like um some of the like constraints or the realities of the free plan are driving uh like engineering improvements or development improvements such that you can continue to offer that and I think it it's a it's a nice way of framing it cuz some people would say the free plan is costing us engineering resources like we had to invent this moving of a database thing because of the free plan but it also turns out is quite useful for everyone else and so that's a nice that's a nice um I guess flywheel again that that plan is spurring on some more engineering efforts there um okay so I have one one last question for you what is it like working as a husband and wife team so you guys sit down for dinner it's the end of the day y'all are in the same house I presume but separate rooms right now now on this call so that you don't Echo over each other so you sit down for dinner at the end of the day do you just talk about Xata all night or like what is it like working with your spouse on a company uh I think um so when so we have a daughter and she's now 10 and she used to be very uh I think starting with five years old she was like uh very strict like yeah not work please don't talk about work uh while we are spending the time together so kind of she forced us in a way not to speak as much a word but we really like um kind of brainstorming together and I think this is very powerful that uh the benefits that we get by knowing each other very well is that we are feels like we are really strong team because we trust each other we have been working for many many years together uh and I think it's really nice the outcome that we get by brainstorming different ideas and different solutions together and this is something that you know you always say that companies are stronger when the founders know each other uh you know either they were colleagues or you know they were sharing a dorm room where while they were in University I think I think this is really uh valuable and I know that maybe what we have here is unique right because not many couples are capable of working together but I think it really works for us because we also grew up together and we kind of uh um yeah we grew up together and I think this was wait so how many years have you two known each other 24 24 years no for 24 years we are together uh we know each other for longer than that that is wild yeah this is very rare this is Extreme I mean just like working with your spouse or starting a company with your spouse is very rare but knowing each other for that long and doing this many companies together and this is that's very very cool so you guys you guys have something special here and I'm I'm really excited for y'all um is there anything else you want to leave leave the people with um where where can we find you both online um and any last words before we wrap
yeah so we are Xata definitely check that out uh otherwise I we are both on X or or Twitter um I I'm trying to spend less less time there but is it working are you spending less time there cuz I'm not yeah the the the reason it's working for me is that uh I got a new phone and didn't install it on my on the phone smart at some point probably I'll do it again but but for the moment uh I don't have it as an app so it's only only on the computer on the website and such um perfect so tell us your username on username on Twitter I'm tudor_g tudor_g okay and Monica where can the people find you so you can find me on Twitter and also LinkedIn I'm not um active on Twitter uh maybe I should be more I don't really find the time it's a challenge uh but I'm more active on LinkedIn as silly as it sounds um but you can find my full name Monica Sarbu on both platforms and definitely we are available on Discord and on Twitter and uh feel free to send us uh um your feedback if you have any idea of other features that you like to see in Xata or any feedback about the current features that we have in S I would love to hear from you wonderful all right we will leave links to all of that down in the show notes and thank you both for doing this first time we've had two guests and it was perfect we'll never do it again cuz we can't top this but this was this was a delight so thank you both and we'll talk to you soon thank you Aaron awesome thank you Aaron bye