24
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 01 Nov 2023
24 points (100.0% liked)
Programming
17207 readers
217 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 1 year ago
MODERATORS
If it's possible to do, and it causes a user experience issue, especially one as jarring as "stop accepting writes" you should start adding rate limits and validate inputs with rate limits expressed to the user before they hit the error rate.
To me you should already be sanitising input anyway, and this would just be part of that logic. If a user is trying to upload more than x it warns (with link to documentation of the limit). If user has gone past the rate limits, then error.
I'm not a sre or dev, just a sysadmin though. Users expect guard rails. If it's possible, it's permitted.
Probably not feasible in our case. We sell our DB tech based on the sheer IOPS it's capable of. It already alerts the user if the write-cache is full or the replication cache is backing up too.
The problem is, at full tilt, a 9 node cluster can take on over 1GB/s in new data. This is fine if the customer is writing over old records and doesn't require any new space. It's just that it's more common that Mr. customer added a new microservice and didn't think through how much data it requires. Thus causing rapid increase in DB disk space or IOPs that the cluster wasn't sized for.
We do have another product line in the works (we call it DBaaS) and that can autoscale because it's based on clearly defined service levels and cluster specifications. I don't think that product will have this problem.
It's just these super mega special (read: big, important, fortune 100) companies have requirements that mean they need something more hand-crafted. Otherwise we'd have automated the toil by now.
As soon as you go down the path of customization for “special clients” you’ve already lost the battle. Business needs to agree to not sell something like that. I’m not being helpful here, but as soon as you’ve started customizing like that to get massive clients it will never end and it will just slowly suffocate your company.
When I was working in enterprise software, we had 2 ways of handling special customer requirements.
The product manager would engage with the sales engineer to identify if this was part of a feature that other customers of similar size or industry might need.
If so, design the feature for the broadest use cases and put in the development roadmap.
If it’s highly specific to one customer, offer customization work on a contract basis and keep it as a separate code branch and environment.
Yeah this sounds like more of an issue with how the company interacted with the clients and the expectations that are set.
My comment also isn't helpful, just saying the situation sucks when you're the employee dealing with the situation.
In my view, from some years in customer service and tech, you either need to develop a more robust system to prevent this behavior, or start slapping clients on the wrist for this behavior. Otherwise they will continue to walk all over your company. The c-levels don't care because the customer is happy because shit gets done and they get paid. However, if a client runs into an issue due to their negligence and you're not there immediately to fix it they either learn to prevent the issues themselves or switch to another service.
There are points where you may need to grin and bear it, but it's not sustainable as you mentioned.
My favorite issue that's been happening far too frequently is my company takes on a new client or a new request from an existing client without confirming that the software can do the request. And then right before their deadline (1-2 days typically) they go "oh this value isn't what we expected" or "can we provide X to the client".
We sure can fix that, but it won't magically happen in your expedited timeframe. Failure to plan on your end does not constitute an emergency on my end.