Jesse Spivak
👤 PersonAppearances Over Time
Podcast Appearances
Very cool. And about three years ago when I joined, we started thinking, we started growing the team and thinking about how we could like many people have, pull pieces out of the monolith into microservices. So this project in particular was about taking a piece of billing logic from the system, from the monolith, and pulling it out into a microservice.
Very cool. And about three years ago when I joined, we started thinking, we started growing the team and thinking about how we could like many people have, pull pieces out of the monolith into microservices. So this project in particular was about taking a piece of billing logic from the system, from the monolith, and pulling it out into a microservice.
The hope was to make it better encapsulated, easier to iterate on, isolate dependencies, every reason that you'd think to build a microservice. So we chose, actually, before I say the technology, before I get trolled, by all the lovers of this technology. I'm going to preface this by saying I don't think that this technology is wrong and I don't think it's bad in and of itself.
The hope was to make it better encapsulated, easier to iterate on, isolate dependencies, every reason that you'd think to build a microservice. So we chose, actually, before I say the technology, before I get trolled, by all the lovers of this technology. I'm going to preface this by saying I don't think that this technology is wrong and I don't think it's bad in and of itself.
I just think it was not the right technology for the problem and the team.
I just think it was not the right technology for the problem and the team.
Absolutely, whoever uses this technology is definitely making a big mistake. Spoiler, we weren't building a side Rails app microservice, which probably would not have been as big of a mistake. But the issue really was that our team, the small team of developers, and then the larger team of engineers in the company, really did not have a ton of experience with the framework that we chose.
Absolutely, whoever uses this technology is definitely making a big mistake. Spoiler, we weren't building a side Rails app microservice, which probably would not have been as big of a mistake. But the issue really was that our team, the small team of developers, and then the larger team of engineers in the company, really did not have a ton of experience with the framework that we chose.
And as a result, we ended up having to do a lot of plumbing and reinventing the wheel and just not benefiting from the institutional experience that exists at Ibotta. And unfortunately, this could work if you're doing kind of like a proof of concept, like let's show what this technology can do. Let's pick a pretty isolated use case.
And as a result, we ended up having to do a lot of plumbing and reinventing the wheel and just not benefiting from the institutional experience that exists at Ibotta. And unfortunately, this could work if you're doing kind of like a proof of concept, like let's show what this technology can do. Let's pick a pretty isolated use case.
But the billing logic that we were pulling out about Monolith was basically do or die. If it did not work, it costs millions of dollars to fix, or it ends up costing the company millions of dollars. So we were walking on a tightrope, and there was no net underneath us. And unfortunately, we decided to, I guess, walk on our hands instead of go across normally.
But the billing logic that we were pulling out about Monolith was basically do or die. If it did not work, it costs millions of dollars to fix, or it ends up costing the company millions of dollars. So we were walking on a tightrope, and there was no net underneath us. And unfortunately, we decided to, I guess, walk on our hands instead of go across normally.
So the framework that we use is called ACA. And I think for a team that knows ACA, this probably would have been really a perfect tool for the job. But our team and our company really did not have a ton of experience with ACA. And so unfortunately, we weren't able to sort of take advantage of it and use it in a way that sort of professional ACA developers likely can.
So the framework that we use is called ACA. And I think for a team that knows ACA, this probably would have been really a perfect tool for the job. But our team and our company really did not have a ton of experience with ACA. And so unfortunately, we weren't able to sort of take advantage of it and use it in a way that sort of professional ACA developers likely can.
Right. It deals with data streams and passing data along in a functional paradigm. And it's meant to accommodate high volume data across highly parallelized system. So, you know, at the time. We went there. Well, I'll talk about why we went there in a second. But in retrospect, it was something that could handle basically 10,000x really what we needed in terms of what it was designed to handle.
Right. It deals with data streams and passing data along in a functional paradigm. And it's meant to accommodate high volume data across highly parallelized system. So, you know, at the time. We went there. Well, I'll talk about why we went there in a second. But in retrospect, it was something that could handle basically 10,000x really what we needed in terms of what it was designed to handle.
So just sort of on paper, it probably wasn't the best move in that respect. But I could also talk about the team as well and why it wasn't a great fit.
So just sort of on paper, it probably wasn't the best move in that respect. But I could also talk about the team as well and why it wasn't a great fit.
Sure. Yeah, perfect. So the problem that we're trying to solve, and you have to know a little bit about the Ibotta app. So I assume all of you guys have downloaded it and are actively using it.
Sure. Yeah, perfect. So the problem that we're trying to solve, and you have to know a little bit about the Ibotta app. So I assume all of you guys have downloaded it and are actively using it.