Our great database migration
shepherdinsurance.com
shepherdinsurance.com
This seems like a decent reason to stop committing the database to GitHub, but not a reason to move off SQLite.
If you have a small, read-only workload, SQLite is very hard to beat. You can embed it ~everywhere without any network latency.
I'm not sure why they wouldn't just switch to uploading it to S3. Heck, if you really want a vendor involved that's basically what https://turso.tech/ has productized.
https://docs.github.com/en/repositories/working-with-files/m...
So that's not the issue, I don't know what the OP's problems were with an 80MB file, but that is not the issue.
Neon(https://github.com/neondatabase/neon) seems to have helped them with testing and development. Being able to iterate and validate changes is a great benefit.
They didn't make this change for performance reasons.
> 4. Performance
> How can we ensure there are no performance regressions, and even performance improvements? When we launched Shepherd we promised to respond to every submission with an indication in 24 hours or less, which directly relates to the performance of our platform.
I actually run a (small, bootstrapped) startup in a very related space (we operate as an agency and MSB, and have direct tie-ins to a much broader range of insurance and financial products) and this article just feels like going the wrong direction. We host on prem (colo) because we knew the DB would be a latency bottleneck and clone operations need to be fast for compliance purposes.
This just feels like the wrong solution for the problem.
This entire blog post reflects a lack of awareness of how much these problems can flat out be ignored with different approaches.
They could have probably stayed with SQLite, in fact, because most likely it's a serious indexing problem, and then found a better way to distribute the 80MB file rather than committing it to Github. (Although there are worse ideas, esp with LFS)
These numbers are thrown out there like they're supposed to be impressive. They must be doing some really complex stuff to justify that. For a web server to have a p79 of 1 second is generally terrible.
> 79.01% to average 2 seconds or less
And after the migration it gets FAR worse.
I get that it's a finance product, but from what they wrote it doesn't seem like a large dataset. How is this the best performance they're getting?
Also a migration where your p79 (p-anything) doubled is a gigantic failure in my books.
I guess latency really mustn't be critical to their product
People tend to forget that using The Cloud (tm) still means that there's copper between a database server and an application server and physics still exist.
Storage and compute colocation almost always wins out by far.
In saying that, I love Cloudflare workers for certain stuff
What I'm curious about is whether Neon can run pg locally on the app server. The company's SaaS model doesn't seem to support that, but it looks technically doable, particularly with a read-only workload.
Likewise using something like pglite to run a pure pg in memory replica would be very cool
... or any of the other companies that provide support and actively contribute to the PostgreSQL project, such as Cybertec, Data Egret, Crunchy Data, AWS, ...
I wouldn't choose any PostgreSQL supplier for their similarity to Oracle DBMS (why would you want to buy into that ecosystem?); as long as it behaves just as vanilla PostgreSQL it is good enough for me.
These are the sort of technical struggles a high school student learning programming encounters. Not a well-funded series A startup. This is absolutely bonkers.
[1]: https://github.com/xerial/sqlite-jdbc?tab=readme-ov-file#how...
It's... an 80MB database. It couldn't be smaller. There are local apps that have DBs bigger than that. There is no scale issue here.
And... it's committed to GitHub instead of just living somewhere. And they switched to Neon.
To me, this screams "we don't know backend and we refuse to learn".
To their credit, I will say this: They clearly were in a situation like: "we have no backend, we have nowhere to store a DB, but we need to store this data, what do we do?" and someone came up with "store it in git and that way it's deployed and available to the app". That's... clever. Even if terrible.
It depends. If that 80MB binary file in git is updated/replaced often, you likely have a problem (every 100 changes/replacements might grow the repo by as much as 8GB).
It's tech debt
There is tech debt that will eat away at you, and then there is this… something that you’ll want to replace someday, but it can wait until you are ready to tackle it properly. And you may not even know what data access patterns you need right away. For a new company with a pretty new way of working with insurance, this seems like a good trade off to me. Plus, it seems clear that they weren’t confident in their backend engineering yet, so this gave them time to figure things out.
What?
What possessed them?
Not advocating for this particular use case, but we’ve all seen more egregious abuses of SQLite.
You are using Github to store data, not code.
> we reduced the process down to a 1- click solution. We built a dashboard in our underwriting platform that actuaries can visit and request factor changes. With a single click, an asynchronous job kicks off, automating the steps of Google Sheet extraction > parsing > codegen > SQL script generation > PR creation. The only engineering involvement now required is a PR review.
It's basically a design that someone both very naive and suffering late stage Rabies would come up with.