The conversation

Business & incomeExperience excerpt · English

And I replaced all the SaaS we used to use with these

… And I replaced all the SaaS we used to use with these. Also, moved to a dedicated servers and dropped cost by 1/10th of the managed cloud solution while having the same HA and even lower latency (based on neighbours on VPS increasing tail end latency). We used to spend tons on this stuff, now these are in production for four months and only needed minor updates. And deployment is dirt simple. No Docker, nothing simple systemd service, binary built on dev machine and deployed. We also used to pay for stuff like MaxMind/IPData, I hand-rolled my own IP geolocation service which in my tests outperforms most existing solutions. It all started by replacing “Uptime Robot", then I got more confident replacing PagerDuty next, then I replaced Intercom. Finally, I had always heard people say "do not roll out your billing stack", but I said YOLO, let me make a billing stack mistake, so I studied the existing billing solution and developed my own and rolled it out, so far we've zero issues with it. Caddy in front. …

Original discussionSQLite is all you need for durable workflows387 source comments · at import
5

Community replies 0

No community replies yet. Add your perspective.

Replies from the source 5

Direct replies available in this import. Original-language excerpts.

KU

I am doing approximately the same for some of these as well, plus CRM. For me, CRM is just a list of contacts with a state and some other fields, plus record who was contacted and when. But I can directly pull information that is relevant to me. Integrating to an external CRM is more work and arguably more risky than rolling your own.

Full original
IM

Thanks for your words of wisdom. I share same sentiment of simple apps. I self-learned coding thru 1990s and I am sick of herding distributed overgrown software at work. Quick question: how do you inspect database contents of your deployed (micro)apps? I used SQLite in one production app and what I didn't like was to use terminal sqlite client on the server or having to copy DB to my laptop to query it with sqlitebrowser. With my Postgres server it is much simpler to just query by rich GUI client with SSH tunnel.

Full original
PA

This is the way, with "bus factor" as the one downside. What happens when you get hit by a bus or someone with higher annual revenue tracks you down because of this comment and hires you away from this custom software stack with a bigger slice of the profits? It sounds like there's also a bus factor for your server but I'm sure you're aware of that though it sounds like your clients aren't.

Full original
FR

I'm also a Go+SQlitemaxxer. For my first SaaS I focused on keeping the list of external services very short, as I basically couldn't afford it. I only picked those services that were a) vital b) could be replaced with a homegrowned/FOSS alternative. Besides keeping the costs down, I find that this approach makes it way more enjoyable to build and easier to manage than having 10 services/subscriptions. *PS: I think that you could add a small QR Code for the iOS/Apple installation on your app's website.

Full original
XE

Thank you for sharing, if you don't mind can you share some Go+SQLite leanings as someone actually pulling this off? 1) How do you do backups? Do you use github.com/benbjohnson/litestream? CRON job backup with rsync? 2) Any issues with large databases and many clients? Is there a TPS or DB size where SQLite becomes problematic? 3) How do you deploy new binaries and safely shutdown the old instance? Caddy change to route to new binary + Go's HTTP server graceful-shutdown on old instance? 4) Do you use a pure-Go SQLite lib or one of the CGO libs?

Full original
Continue on Hacker News

Respect different perspectives. Share concrete experiences.

Sign in to post, reply, repost, and quote.