Live data from Hacker News

11 years of hosting a SaaS

ghiculescu.substack.com

161–170 of 222 posts

Re: 11 years of hosting a SaaS

#161

Earlier quoted context omitted.

Would you explain why you're trying to implicate DO as being in any way "dodgy" or at fault for your own failure to pay them? You got a month of service for free, and they attempted numerous times to contact you about your bill, you just didn't read their emails.

I don’t consider email to be a legal form of communication. Cutting services to a business effectively disabled their business (especially servers). You’d think they would send at least one letter.

Lawyers and courts do, however, so what you consider really doesn't matter.

Re: 11 years of hosting a SaaS

#162

Earlier quoted context omitted.

I find it hilarious because I find it extremely dysfunctional .. for everyone involved and yet… it’s true. I can tell you from personal experience… my partner somehow signed up for a stupid accounting online tool that we never used .. and we just find out 2 years later because we received a letter from a debt collection agency asking for the 2 years we “owed” for a service we never actually used .. but they kept “pro…

Well, the service provider was ready to provide you with it. They kept your account, your data and ensured the service is available for you to use. Why should they care about whether you use the service or not? It's like renting an apartment, then never bothering to move in. Why should the landlord care whether you move in or not? After all, it's your responsibility to book services you use and cancel the ones you do…

I think you misunderstood what I was trying to say. My original point was that in Germany they are mandated to keep the lights on until I explicitly cancel the service regardless of wether I pay on time or not. I didn’t complain about them charging me for something I didn’t use.. I just find it ridiculous that they had to keep providing me the service even tho I didn’t paid. I thibk from a provider perspective it’s shitty to keep on the lights while not getting paid. And I find it laughable that’s how service providers work in Germany .. it’s difficult for both providers and clients alike to cancel a contract in Germany.. And that’s even if the client doesn’t pay… and I think that makes everything worse for everyone.

Re: 11 years of hosting a SaaS

#163

Earlier quoted context omitted.

But it kind of is. Merchant payment services exist that can automatically obtain the updated card-on-file credential when they are about to expire. Both Visa and Mastercard offer this directly, or you can get the same service from a PSP.

It’s definitely not the merchant’s responsibility to catch when your card changes. We have this at work thanks to Stripe, and it’s wildly inconsistent. But beyond that, it won’t do anything for a closed/canceled card/cardholder account. That situation was fully on OP. This could have happened at GCP, AWS, Azure, Linode, OVH, Rackspace, Oracle Cloud, you name it.

> It’s definitely not the merchant’s responsibility to catch when your card changes.

Well seen that the tech exists, they're not just leaving money on the table by not using it (to update card that just expired) but they're also burning money on pointless support, support which wouldn't need to happen in the first place had they updated the month/year of expiration.

I mean: we're literally talking about credit cards often keeping the exact same owner name, the very same number and just having their MM/YY of expiration changed. It's not rocket science to update in a DB after an API call. And what's the catch on at least trying? If it works, you saved everybody time. If it doesn't work, it's not worse than your current "solution".

I understand politicians and lawyer-minded people saying: "technically it's not our responsibility" but they're wasting everybody's time, leaving money on the table and wasting money on support.

It's just poor judgment to react like that instead of thinking as to how life could be made better for everybody, starting with your paying customers (which, btw, are the reason you exist).

Re: 11 years of hosting a SaaS

#164

> But the worst Digital Ocean incident we ever had was when they turned all our droplets off all at once. The credit card entered into the account had expired, there was no backup card, and the contact email on the account went to a shared inbox that was not monitored. So for probably a month we were getting and ignoring billing alerts, until we really paid attention when everything was offline and not responding to…

Totally agree! Super dick move for dumping on DO when this was all your fault.

Re: 11 years of hosting a SaaS

#165

> But the worst Digital Ocean incident we ever had was when they turned all our droplets off all at once. The credit card entered into the account had expired, there was no backup card, and the contact email on the account went to a shared inbox that was not monitored. So for probably a month we were getting and ignoring billing alerts, until we really paid attention when everything was offline and not responding to…

But it kind of is. Merchant payment services exist that can automatically obtain the updated card-on-file credential when they are about to expire. Both Visa and Mastercard offer this directly, or you can get the same service from a PSP.

These are regionally restricted on top of users being able to opt out of such service at both the visa/mastercard level and at their local banks. This means you cannot rely on the service entirely and have to create alternative flows even if the update system works perfectly. Both Visa and Mastercard detail for developers the manual methods they can use, which still require human monitoring/input. They also both warn people about monitoring this at the merchant level so you minimize disruptions, late fees, cancellations, etc.

It's not as seamless as you're making it sound.

Re: 11 years of hosting a SaaS

#166

> But the worst Digital Ocean incident we ever had was when they turned all our droplets off all at once. The credit card entered into the account had expired, there was no backup card, and the contact email on the account went to a shared inbox that was not monitored. So for probably a month we were getting and ignoring billing alerts, until we really paid attention when everything was offline and not responding to…

Digital Ocean has an invoices API: https://docs.digitalocean.com/reference/api/api-reference/#o...

No need to use email at all.

Re: 11 years of hosting a SaaS

#167

Those are such noob mistakes. No bigint OID, or worse, not UUIDv4, because even int64 will overflow, maybe not on their platform, but on a platform with millions of new inserts a day, despite being a large number, isn't future proof. If anyone knows a better 128bit alternative to UUIDv4, please respond. Side remark, that's what I was trying to tell the dgraph guy. If you have an int64 ID for ALL your transactions and…

Your comment feels like one I would have written in my past, but I think there is some possible context or understanding I might be able to share based on some of my XP.

>No bigint OID, or worse, not UUIDv4, because even int64 will overflow, maybe not on their platform, but on a platform with millions of new inserts a day, despite being a large number, isn't future proof. If anyone knows a better 128bit alternative to UUIDv4, please respond.

Sane defaults are important. If the DB defaults to a particular value it's likely because it's fine for most use cases. It's an excellent thing to have enough customers and utilization to require something more than int for an ID. That said if there is little to no performance difference, I'd argue that this should be made the default upstream rather than the default recommendation or "best practice."

>Thinking 5 steps ahead is what I had to learn along the way, because if you don't you end up with problems like these.

Not every one is able to do that kind of systems level thinking across an entire product stack, and that's OK. What's more important is not building things you will never use, or might use one day but don't need today.

>I'm a follower of the holy church of K.I.S.S. keep it simple, stupid. Simple and organized, the 2 key pillars of good design. As simple as possible, but not more simple. Thinking 5 steps ahead is the hard and time consuming part.

I would spend more time thinking about how to market to folks who want to reduce their cloud investment. My current org is way over engineered both in infra and engineering in general. We have been working to reduce complexity and cost and it's had real big wins for us as an org. KIS is an excellent philosophy when applied pragmatically.

>I know this article is about Ruby.

The author could have replaced ruby with "Language-X" and the article would have been just as accurate. It's often not the language that's slow, more often it's the DB schema, data models, and business logic.

> But as a Go zealot, which can handle 500 million visitors per month or over 5000 concurrent http1.1 connections on a 13 year old 4 core 32gb ram computer

If all it has to do is reply "Hello World" plenty of languages and frameworks could hit similar numbers. But if all those frameworks are blocked by a de-optimized external request, it doesn't matter. Here, the authors app was def having DB scaling issues, this could happen with any language, runtime, or framework. It will happen sooner with certain combinations than others yes, but utilization and customer feedback are more important than early optimization.

>This guy's problem is that he believed the hype, picked the wrong tool for the job and had no clue about infrastructure/operations.

I think that's a harsh assessment. We all buy into some hype, and we all generally try to make the best decision with the information we have at the time. Instead work backwards, put yourself in the authors shoes, assume the idea at the time made sense, and then ask "What had to be true, or seem true at the time, to reach the conclusion they did?"

>There's a reason why Ruby isn't as popular as it was 10-15 years ago. Performance matters.

It matters, until it doesn't. https://www.tiobe.com/tiobe-index/ as an example, we see top spot held by a known "slow" language (certainly comparable to Ruby). JavaScript, PHP, and VB all beat out Go in utilization. Performance matters, is a statement that requires context. Sometime the "performance" of your developers matters more than your runtime.

>With Go and ent I start wherever I want and I get ×100 the performance. If I need to consume the data, if I don't care about SEO, I can write a SPA easily and the load is on the client.

And now the current trend is to start to reduce the amount of load on the client because turns out 2Mb of JS to render an SPA is not the best XP on a lot of devices and networks. It's important to understand who your users are, and the operating context they bring.

>And should you magically expect more than 500 million visitors per month, simply adding load balancing and doing this for the database as well would do the trick, BAM, you've now tripled the amount of backend requests you can handle.

Horizontal scaling isn't dependent on language. You need to design your API and choose your persistent storage correctly to make this task easy. But in reality, most folks could just use caching and be fine.

>Your Ruby on Rails app might be good enough for a PoC, but that's about it.

Based on what, your personal opinion? It's a perfectly fine language for a back-end service and I say that as someone who has no interest in learning Ruby.

>If you really expect large volumes of traffic, better pick a well performing language from the start and think about infrastructure.

Maybe. We use scala at work, because "it can handle large volumes of streaming data" and yet it's some of the slowest parts of our stack because it's hard for folks to "do right." Sometimes you need a language who's feature is easy to use and hire for.

>And for the love of god, don't pick k8s. Because when shit hits the fan, you won't be able to debug it. Keep it simple and transparent.

Yes and no. K8s is basically the next generation of LAMP for the cloud. It's fine, just understand what you are investing in and what it isn't. We use aws at work w/o k8s and it's a complex nightmare to manage in some respects. My k8s cluster at home however is fantastic and fun to tinker on, and causes me less stress with more uptime than my AWS clusters at work. I think it's more important to understand the problem space, and how a tool might fit in or not, than to hope it just solves problems magically.

The cloud isn't magic, it's just someone else's computers.

Re: 11 years of hosting a SaaS

#168

Earlier quoted context omitted.

Not getting something you didn't pay for is not dysfunctional. It's what turned slavery-based, Feudal and Socialist countries into modern ones. Your example seems to be unrelated, although it sounds frustrating.

But.. that’s not what happened. I was getting something I didn’t paid for .. that’s what I find dysfunctional. Because that means there’s a lot of extra effort in the country on getting unpaid services paid. My personal experience just adds the cherry on top that I was also not using it. So it was wasted effort on the provider and society in general.

> I was getting something I didn’t paid for .. that’s what I find dysfunctional

Fair enough, but that's why I was saying your experience seemed to not be relevant to the topic.

Re: 11 years of hosting a SaaS

#170

> But the worst Digital Ocean incident we ever had was when they turned all our droplets off all at once. The credit card entered into the account had expired, there was no backup card, and the contact email on the account went to a shared inbox that was not monitored. So for probably a month we were getting and ignoring billing alerts, until we really paid attention when everything was offline and not responding to…

Yeah, Tanda's own terms of services[1] are more restrictive than DO's. They "restrict or suspend" all services (or else terminate the agreement) if the client is 14 days late. This vs ignoring billing alerts for a month and being surprised when the service is shut off?

[1] https://www.tanda.co/terms-conditions/

Post reply on HN