987 karma · joined March 29, 2014
"Everything is critical" should sound a million alarm bells in the minds of "enterprise architects" but most I've discussed this with are blissfully unaware.
If nothing else, it's fun to see who pokes you, even if I don't actually follow up on it.
The main issue I have with it is simple: in my experience you cannot really debug some classes of issues ("we had intermittent issues calling endpoint A from function B") and they kinda push on you a certain type of organization model so if it doesn't reflect your organization model (for example, you have centralized infra teams) prepare to be screwed.
At an higher level, it massively encourages atomization of systems, which makes them essentially spaghetti with a network you cannot debug as the sauce. Good luck, hope your company pays for honeycomb.
Looking at dashboards all day to spot issues is a (pointless) nightmare.
I am certain someone raised a hand at a certain point and was told to shut up and/or let go and/or his/her contract not renewed.
The amount of not giving a fuck is staggering in this world (and IIRC a primary source of enshittification), particularly when a billion contractors are involved...
The name and logo if nothing else are pretty recognizable and memorable. I know nothing about features, but they seem to be collaborating with institutions too...
So you are now left with managing risk. It's trade-offs all the way down.
I never worked too closely with TPMs, just looked at the code in a previous employer because it was adjacent to mine and helped tprefactor some of it. Settings them up was kinda nightmarish considering all the failure modes, and things were not getting much better over time and with new hardware.
I think most people fail to realize microservices are what you get from an iterative process. You pull out of the monolith the things you need to scale eventually.
Microservices need plenty of basic infrastructure that you don't want to mantain unless you need to. Most companies don't have an adequate platform to support the pattern anyway.
If you can't have that (and budget allows) keep unhealthy replicas alive and pull them off the load balancers.
In my experience option one works best, and makes option two redundant. Unknown unknowns are a thing, but that's true even when the unhealthy replicas are kept around.
Operation teams (and automation) have usually a primary mandate of availability above all, not to investigate any possible failure.
- i do most meetings with internal stakeholders to understand needs and changes, and document them
- i do most "architecting", as i have most context on the systems my team is responsible for (also I am the oncall escalation point all the time as I am the senior person)
- i write about 10% of the code, usually what other colleagues aren't comfortable with (legacy systems mainly these days)
"Development" is not only writing code, and senior roles tend to code far less because we get wrapped up with the rest of the company so other folks can code and deliver. My team, manager and customers seem very happy about the whole thing (but hey, maybe everyone hates me!). I do want to code more, maybe with a good PM i would be able to, but I have no illusions about that.
Datacenters do end up completely dying now and then, you really want to have a good strategy in that case. Or not, if that's not required.
Even if you don't own/manage the building but simply buy the hardware (and spares, and DC ops) from HP/Dell/EMC and friends things can become suprisingly even harder, because it leads to a rabbit hole of and tons of badly implemented ticketing systems and badly baked processes you don't really complain, which open the path for the "stale IT" developers complain about. Offloading that further to more consulting companies leads to an even bigger mess of staleness and sluggish movement/execution, with incredible lead times to expand the capacity for services and getting it for new projects.
Unless you have very good processes (I've never seen a company with those), iron clad contracts (your CTO chose the consulting company because he is playing golf in the weekend with the consulting company CEO. Oh sorry you don't even have a CTO, that was your CEO instead) and plenty (relative to company size) of good people in the right positions to drive things (no, you won't have those) managing your datacenter is massively harder compared to just using the cloud.
Then there are the benefit in financial sense (capex vs opex, opex always wins).
From an ops person: if an alert does not have: - clear, provable impact on customers (internal/external) - clear documentation (e.g. runbooks) on how to solve it
It should not be an alert. I took this path (successfully) when trying to remove spurious alerts that existed only for the ego of someone (most absurd example, something that started complaining when p99 for some endpoints went >500ms and happened every day when we downscaled the ASGs because business hours were over. No clear path to resolution, and impact was a couple pages opened a bit slower sure - but the number of customers using those pages after hours was <1%!
It sucks, definitely, but the best way to go around those alerts is to prove they're pointless or a waste of time or can be automated around and should automated around (and I've seen so many servlets leaking memory triggering OS alerts for OS teams or spawning infinite threads and never cleaning up after themselves...).
If the company does not want to do it, and pushes back, I would recommend starting to look for another company. It's sad, but it is what it is. 99.99% of software does not need a follow the sun rotation (or people damned to night shifts), just a bit of thought about what happens when things fail.
I have a fair bit of experience in teams with developers hating oncall and the critical issues happen in two camps generally:
- In some cases the org was absolutely open to give them time to resolve issues and automate stuff away (PMs were proposing months for fixes only, and cleaning up boards, etc), there just was no interest until enough escalation happened (creating a massive conflict between ops and devs in the meantime). Even offering to do the work was met with a "stay in your lane" kind of response and no collaboration at all.
- In others the company just did not care, deprioritized tickets until things blew up completely, then finger pointing started and all that nice toxic bullshit.
If the POP is not able to connect to the rest of Facebook's network, the POP stops announcing itself as available and that DNS and part of the network goes away so your traffic can go somewhere else.
There is no accountability because no one holds them to account and people repeat what you just wrote like gospel, including people writing for newspapers - and that has to stop.
You can pressure the EU as much as you can pressure your national government, all you need to do is put the pressure on your national government. Add your MEP on top, but the national governments are enough if you don't want to go the extra step.
The problem is your availability being <X%, your API responding >Xs Y% of the time, not "we had X SEVs last half". People will gravitate to numbers that are talked about (because they at least appear important), so you should try to talk about the right ones.
It's hard enough to convince junior folks to open incidents without them feeling like they will mess up a very-important-management-eyes-on-it metric if they do...
The person that posted the content does not expect a random person from the internet to see a video of his children because it was accidentally flagged by an AI as child porn. :)
The classic way of doing this is AXFR (your own DNS server is a "hidden master" and the DNS providers are the slaves).
The problem is you won't be able to have redundancy at the registrar level, but that has historically at least been less of an issue.
Cost could be an issue. We had something similar (not in the same context) in a company I worked for before. We could shift traffic, but that would cost 2-3x more, so it was not the preferred path unless we had problems.
It surprises me that many (big) companies did not learn the lesson already. We had a similar thing happening already years ago with dyn in 2016 (https://en.wikipedia.org/wiki/2016_Dyn_cyberattack), and it was surprising how many companies relied on a single DNS provider.
https://support.google.com/calendar/forum/AAAAd3GaXpEE7zPvtA...
Have them "drive" you through the resolution of one of the issues that you expect could happen. See how they behave and what they try - they may not necessarily have the complete correct answer, but you will see if they know where to look, the basic concepts, and so on.
I've interviewed people capable of writing ansible scripts, but with no real ability to dive into issues and fix them and/or investigate what's broken. Many would not even tell me "we could just provision a new VM to replace the one that went down, right?"...
Certain configurations at a big enough scale are dangerous, just because you could hit a terrible corner case when you rolled out the change on 50% capacity, and lose all of it so fast that your magic automatic rollback is pointless because your infrastructure is burning.
I agree that Facebook is certainly a convenient scapegoat to hide all the other issues that plagued the Clinton campaign (from the DNC scandal, to the unlikeable candidate, through some controversial phrases she said during the campaign itself, and so on). Also it helps newspapers since they have to take no blame for what happened (and do no real analysis on why democrats lost).
I'm pretty convinced that if Clinton had won - even if Clinton had used CA data to do so - there would be far (far) less media coverage about the "evil of Facebook", regardless of the impact of their incompetence in the election. That was the case with Obama already after all.
Frankly newspapers really changed idea only after Trump won the elections.
I find somewhat fun that some of the recent news about facebook being evil actually talk a lot about that period (ex: the recent news about the "friendly fraud" class action) and some are the consequences of the (naive, as we a lot of us were at the time - me included!) choices facebook made back them (wanting to be a platform, without really understanding what it meant) before pivoting to the current model (which is AFAIK far more similar to google's).