An admin was doing a rolling restart that triggered a bug in the loadbalancer software. The auto restart script turned out to just make things worse by restarting it over and over (they always do), so we thought we'd just quick throw spare capacity at it, but turns out that never works in a panicked rush either. Also, our system designed to handle outage notifications wasn't capacity planned, like, at all.
Heroku: a follow up on last week's outage
21–30 of 48 posts
Re: Heroku: a follow up on last week's outage
#22I love Heroku, but am I the only one that thinks their choice of words describing their architecture is a bit pretentious? "...streaming data API which connects the dyno manifold to the routing mesh." Give me a break!
If a future update mentions 'phase modulation' we'll know they're just cribbing excuses from old Star Trek episodes.
Re: Heroku: a follow up on last week's outage
#23I love Heroku, but am I the only one that thinks their choice of words describing their architecture is a bit pretentious? "...streaming data API which connects the dyno manifold to the routing mesh." Give me a break!
This seems to be an unfortunate attempt to apply Corporate Speak to a technical announcement; "Let's see how many paragraphs we can fill with technical-sounding gibberish without actually telling anything..."
Re: Heroku: a follow up on last week's outage
#24I love Heroku, but am I the only one that thinks their choice of words describing their architecture is a bit pretentious? "...streaming data API which connects the dyno manifold to the routing mesh." Give me a break!
How else would you describe them?
If they're too embarrassed to tell what happened then they should just keep quiet. Don't insult your customers with handwavy bullshit bingo, that just leaves a sour taste in everyones mouth.
Just imagine the hilarity when the PHB asks his inhouse engineer to translate this "post-mortem" into layman's terms for him. Most bosses have a bit of humor, but not when it comes to hosting infrastructure.
Re: Heroku: a follow up on last week's outage
#25Earlier quoted context omitted.
This is classical geek owning up. My first thought was, this is written with two purposes: 1) to prevent the average, non-technical person from understanding it ("Phew, I'm glad these guys are figuring out this stuff and not me - that's why I host with them. I don't even know what a 'dyno manifold' is!") 2) to show management how smart we are and that you still need us ("because who else is going to figure this 'rout…
Read up on the heroku architecture. These are the terms used. The manual garbage collection wasn't the problem. An unexpected data structure created by garbage collection wasn't handled in a fault tolerant manner.
Routing mesh? We call that a cluster of load balancers in the real world.
Re: Heroku: a follow up on last week's outage
#26"The first root cause is related to the streaming data API which connects the dyno manifold to the routing mesh. On the dyno management side, an engineer was performing a manual garbage collection process which created an unusual record in the data stream. On the routing side, a bug in the subprocess of the router which processes the incoming stream saw the record as garbage." This is techno-babble on a scale the wor…
Re: Heroku: a follow up on last week's outage
#27I love Heroku, but am I the only one that thinks their choice of words describing their architecture is a bit pretentious? "...streaming data API which connects the dyno manifold to the routing mesh." Give me a break!
Instead of "dyno", they could possibly use a word like "VM". Except that they're not really virtual machines, nor are they EC2 instances. Read Only Chroot Jails plus Precompiled Application, Libraries, and Environment (ROCJPALEs?) They also have a pretty complex set of support structures that provide connectivity to databases and other resources. Perhaps someone can suggest an existing name for that, but I know of none.
Instead of "manifold", perhaps they could use the word "cluster". Except it's not really a cluster, it's a set of distributed clusters. And nodes in a cluster are typically machines. The nodes in the dyno manifold aren't machines, virtual machines, they're ROCJPALEs. You could use the word "array", but again, it's not really an array. It's a multi-layered, geographically distributed structure of co-hosted application jails. "Manifold" seems as good a term as any.
"Streaming" seems like a good word. It's specifically relevant to this incident... they describe how the API is not atomic; that each message is built on top of the previous entries, and the data structures are implicit in the stream. That sounds like the definition of "streaming" to me.
"API" seems like a widely accepted term. They could've described it as a "protocol", perhaps. But neither seems more jargony than the other.
"Data"... well I suppose "streaming API" without the data would work. But it serves to differentiate it from a streaming video protocol.
"Mesh" has a very specific meaning. It means that you have a set of nodes that are connected peer-to-peer and that messages travel through the network by hopping from node to node. I'm assuming that their routing layer is organized in this way.
"Routing" is also pretty well defined. Requests come in and need to be sent to the machine that can serve responses to it. What would you call that instead of routing?
I feel like people who object to this kind of language are the same folks who object to the word "cloud". People don't take the time to understand different strategies to provisioning and application hosting APIs, and then think these words don't mean anything. Yeah, salespeople use the word to hustle the Same Old Shit, but it also actually means something to people like us who are actually building stuff.
Re: Heroku: a follow up on last week's outage
#28We're expecting them to be the A-Grade tech wizards who can give us 0 down time. They are after expecting thousands of people to trust their services and to outsource the server hosting and administration duties to them.
So they tread the fine line between convenience (and related "cloud" benefits) and "I can do this myself".
If they can't give us the assurances that they can do it better, cheaper and more reliably than we can do it ourselves then what good are they?
If they can't capacity plan a simple System Status page (running on Rackspace) and keep that up and running then what good are they?
And since their service appeals to a certain level of geek competence, they also can't get away with techno babble bull shit responses to outages.
Re: Heroku: a follow up on last week's outage
#29Hey guys I got this, I speak cloudonaut. Here I'll translate it to sysadmin: An admin was doing a rolling restart that triggered a bug in the loadbalancer software. The auto restart script turned out to just make things worse by restarting it over and over (they always do), so we thought we'd just quick throw spare capacity at it, but turns out that never works in a panicked rush either. Also, our system designed to…
I know I have had my share of server issues, but it seems to me that many 'cloud' services out there are simply adding too many layers of abstraction that tend to make things very, very touchy to any small issue occurring. Because of this I try to keep my server stacks/frameworks as basic as possible while still implementing performance oriented services like NoSQL, caching, etc.
Re: Heroku: a follow up on last week's outage
#30I love Heroku, but am I the only one that thinks their choice of words describing their architecture is a bit pretentious? "...streaming data API which connects the dyno manifold to the routing mesh." Give me a break!
OK, I'll bite. Instead of "dyno", they could possibly use a word like "VM". Except that they're not really virtual machines, nor are they EC2 instances. Read Only Chroot Jails plus Precompiled Application, Libraries, and Environment (ROCJPALEs?) They also have a pretty complex set of support structures that provide connectivity to databases and other resources. Perhaps someone can suggest an existing name for that, b…
https://devcenter.heroku.com/articles/dynos
It explains all :-)