7 ms·
That's more or less inevitable. As complexity increases (which it does naturally, if there's no effort to decrease it) at some point it begins to outstrip the l
by m0zg 7y ago
That's more or less inevitable. As complexity increases (which it does naturally, if there's no effort to decrease it) at some point it begins to outstrip the limits of human understanding.
I've been saying this repeatedly (and downvoted for it repeatedly): if you want truly reliable systems, use simple, boring technology, and don't fuck with it after it's set up, and run it yourself. 99.99% of all these outages are due to screwing up something that already works, something that if it was in your own rack you could just leave alone and not touch at all.
- Operyl 7y agoMy horribly out of date system works, therefore I should never strive to improve it or god forbid update it (since that involves “fucking with it” in ways that can break it from version to version)? That gets you technical debt and that’s not fun.
- m0zg 7y agoI'll tell you more. Much of the world is run by "horribly out of date" systems that nobody has touched in years _because they work_. And it all works fine. No "cloud", no Rust or Go rewrites, no Haskell, no fancy javascript frameworks or anything like that. Just boring ol' files, boring relational DBs with boring schemas, constraints and stored procedures, boring old languages, boring old hardware, boring old operating systems underneath it all. Don't screw with it and it will work for a decade. Start screwing with it and it will be busted every month, like Google Cloud. You can't create "technical debt" if you don't change anything in the first place.
- owenmarshall 7y agoI got an email yesterday that told me the boring old HPUX server (which was racked before my intern was even born) barfed all over its boring old 50-pin SCSI drive and ops went scrambling to find one in storage so the boring old Oracle DB that was responsible for production lines running could be recovered. Took us around an hour, cost us a boring 5 figures. Luckily our sysadmin knows how to hide “unused parts” for days like that or we’d have been really in trouble. > You can’t create “technical debt” if you don’t change anything in the first place. Rubbish. The bits really do rot, and if you don’t do _something_ on occasion you end up with an entire data center no one wants to touch because the dust in the servers might be structural at this point. I’m not saying go rewrite your apps against the Kafka instance your junior devs are fucking with, but you have to do something to fight the entropy.
- m0zg 7y agoThe first part of your post sounds like a success story to me. You got many years of use out of that server. 5 figures is cheap comparing to the cost (including the collateral damage cost) of a hotshot SWE or devops guy who insists on using the most resume-worthy, most bleeding-edge technology available.
- owenmarshall 7y agoI wish I could upvote you twice - I just finished a multi-week effort to unwind (defuse?) some of the resume-driven architectures that were left behind when resume-driven development was successful.
- titzer 7y ago> you have to do something to fight the entropy. Stuff breaks. So you fix it. Boring old stuff needs fixing too sometimes. Problem is, old stuff gets obsolete, can't get replacement parts, because of progress. (or something). It's the same story since the first looms were made centuries ago. What you can't fix you can't really depend on. Our time scales are just compressed to ridiculousness because the pace of change is off the charts these days. So basically, you can't really depend on anything working more than a few months before falling over. Sucks.
- kalleboo 7y agoThere's boring and there's legacy. Legacy is when the hardware is unsupported and doesn't get software/security updates. You don't want to let it become legacy. The counter-story to yours is running that database on MongoDB in the cloud on a cluster. Instead you'd be having crazy MongoDB issues, data inconsistencies, connectivity issues when the cloud is down, etc etc. The solution is somewhere in the middle. You can have modern, supported hardware running a LTS Linux and that counts as boring.
- owenmarshall 7y agoI think you are right. Where I’ve seen success in “the boring middle” is when an appropriate amount of tension exists in the engineering organization: you want some teams and groups pushing to try new things, but they need to push against a boundary - preferably something, not someone - and the boundary should define your organization’s best practices and standards. This way a team doesn’t get to sneak clustered Mongo into the cloud and make your ordering systems talk to it. But over time boring IT turns into legacy, and without some tension to the system pushing it forward your standards end up locking you into legacy forever.
- dgacmu 7y agoThat's not entirely true. you don't have to try to add features in order for the operating environment of a legacy system to change. More users, transaction count fields overflowing, timestamp fuels hard coated without the century or with 32 bit time_t values... Or it may simply not meet the needs of users anymore. I would hardly hold the air traffic control system up as a model to aspire to, for example. The only reason we run the old one is that the upgrade attempts all failed.
- m0zg 7y agoNothing ever is "entirely" true.
- why_only_15 7y agoOf course - the point this person was making is that this is substantially false in the way they described.
- 8bitchemistry 7y ago> You can't create "technical debt" if you don't change anything in the first place. Tell that to your security team.
- rrdharan 7y agoCurious how you would imagine handling something like GDPR or SOX compliance in this alternative world you’re proposing. You can’t magically foresee new requirements and new implied complexity for all future time.
- hdfbdtbcdg 7y agoTo many European companies GDPR did not really change the operational requirements - only the penalties for not meeting them.
- owenmarshall 7y agoThat’s too clever by half. Avoiding substantial financial penalties for not meeting an operational requirement is an operational requirement.
- t0astbread 7y ago> Don't screw with it and it will work for a decade. Don't screw with it and it will have security issues after a few months?
- rjf72 7y agoCOBOL is a big example of this. It's still ubiquitous in many industries where reliability is near the top of priorities. And I imagine in 50 years we'll still very likely still have many critical systems operating on COBOL. I wonder how many will be running 'The Next Big Thing' language/api then...?
- cortesoft 7y agoTechnical debt is about the increasing difficulty to add features to a system.... if you aren't adding features, technical debt is not really an issue.
- dodobirdlord 7y ago> 99.99% of all these outages are due to screwing up something that already works Fiber optic cables are a great technology, but they don't react well to being cut in half by a backhoe. Is the solution you are recommending that we stop using fiber optic cables, or that we stop using backhoes?
- m0zg 7y agoStopping depending so much on remote datacenters unnecessarily would be a good start.
- ithkuil 7y agoI'm a remote employee of a distributed company. Where do you suggest we deploy our code/services?
- dboreham 7y agoI feel a sense of karmic balance on backhoe fade myself, because after running networks for decades, I now own a backhoe. So far I've managed to dig up a power cable I forgot I laid to an outbuilding, and a coax satellite dish feeder.
- bamboozled 7y agoSo a vulnerability is identified in a version of software you're running within your stack and doing nothing means you will most likely lose important and sensitive customer information if you do nothing about it. Do you: 1) Don't fuck with it? 2) Make a mitigating code change. Patch / fix it (fuck with it)?
- m0zg 7y agoVulnerabilities don't always matter. If it's some godforsaken internal-only backend that never sees external traffic, study whether there's risk, and if there is none, let it be. If you must fix it, the correct solution is to replace the affected software with the same (or almost the same) version of the software with the fix. No API changes, no other fixes.
- lhoff 7y agoSorry, but that's bullshit. Once an attacker is in your organization he will look for exactly that kind of internal-only backend were exploits are already available and the attack vector is known. There is no such thing as a internal-only backend regarding security. Let's assume the attacker used social engineering to get credentials from an unprivileged user and uses these to log in to a remote desktop. (I know there are ways to prevent that but I think there are many examples shown that public facing remote desktop is not two unrealistic) Once he is inside your company he can reach the "internal-only" backend and uses the privilege escalation bug you thought is not worth fixing to get root.
- archy_ 7y agoCloud should be a backup, a failover, but people build their entire business on other people's hardware because they can sell the cost per hour easier than the price of a new server which is cheaper in the long run. At this point, with so many outages showing the need for self-hosting, not allowing customers to do so shows how little you care about them.
- KirinDave 7y agoThe challenge of self hosting is then you don't get the sophisticated load balancing the CSPs like my employer, Microsoft and Amazon offer. You also don't get the dedicated networks. But it's true, it's much cheaper if you can find a way to replicate those or do without.
- dragonwriter 7y ago> At this point, with so many outages showing the need for self-hosting, Are they really showing that? None of the major cloud providers, even constrained to a single region (or even AZ) seems on average less reliable than the on prem datacenters I've seen, and there's > not allowing customers to do so shows how little you care about them. While the solutions may not be as complete for all use cases as public-cloud-only ones, are any of the major cloud providers not working to enable and selling their capacity to support hybrid-cloud deployments?
- hnick 7y agoHave you seen Jonathan's Blow talk that touched on this? I enjoyed it. I think his fundamental point is that as we build on complexity, future generations lose track of the underpinnings and things start failing for unexpected reasons and we may eventually lose our capability entirely. But he does meander a lot. I've definitely seen this where I work - the "old guard" setup the system that put the company in a prime market position, the newer people are just doing API calls and scratching their heads if it doesn't work. Here's a reddit link because YouTube is blocked here. https://www.reddit.com/r/programming/comments/bq1dt6/jonathan_blow_preventing_the_collapse_of/ https://www.reddit.com/r/programming/comments/bq1dt6/jonatha...