Netflix Gives Data Center Tools To Fail 75
Nerval's Lobster writes "Netflix has released Hystrix, a library designed for managing interactions between distributed systems, complete with 'fallback' options for when those systems inevitably fail. The code for Hystrix—which Netflix tested on its own systems—can be downloaded at Github, with documentation available here, in addition to a getting-started guide and operations examples, among others. Hystrix evolved out of Netflix's need to manage an increasing rate of calls to its APIs, and resulted in (according to the company) a 'dramatic improvement in uptime and resilience has been achieved through its use.' The Netflix API receives more than 1 billion incoming calls per day, which translates into several billion outgoing calls (averaging a ratio of 1:6) to dozens of underlying systems, with peaks of over 100,000 dependency requests per second. That's according to Netflix engineer Ben Christensen, who described the incredible loads on the company's infrastructure in a February blog posting. The vast majority of those calls serve the discovery user interfaces (UIs) of the more than 800 different devices supported by Netflix."
Re: (Score:1)
s/black/pot/
Dolt.
Re: (Score:2)
Hey! Let the Guru meditate in peace.
Re:But does it include the chaos monkey? (Score:5, Informative)
Hystrix does not include Chaos Monkey, but Chaos Monkey was opensourced some time ago.
(I work at Netflix)
Re: (Score:2)
Re: (Score:2)
It depends on your definition of "someone else's". It uses your AWS credentials to kill an instance, so in the worst case, the PHB of group A in company Z could kill instances of group B in company Z; company Y would still be safe.
Re: (Score:2)
Thank you Netflix! (Score:5, Interesting)
Not only have you created an amazing tool, it is open source and the best part...it's actually well documented! Christmas came early this year!
Re: (Score:2)
Re:Thank you Netflix! (Score:5, Insightful)
(Netflix employee here, so forgive the AC)
We don't use GPL code (and, assuming we were using GPLv2 code, given that we don't ship out server code, we wouldn't need to share it anyway), but:
1. Netflix uses a ton of open-source technology. It's nice to be polite and give back;
2. It's good publicity, which helps when we recruit people (which is something we do all the time);
3. If it's good, then we'll have other people contribute to the software engineering efforts, which lowers the cost we pay to maintain and improve the software;
Re: (Score:1)
Sounds like Netflix is a mess (Score:2)
I hate to say it, but the only thing I take away from this is that Netflix's software is such an unwieldy mess that they need a library just to enforce application separation and provide default fall-backs when a service call does fail.
FWIW, my preferred "circuit breaker" is a load balancer... All possible requests are network calls that go through load balancers, where it goes to the most responsive server, and if your admins screw up and none of the servers are responding quickly enough to answer the hea
Re:Sounds like Netflix is a mess (Score:5, Insightful)
Your critique seems overly simplistic. An HTTP load balancer is great for HTTP calls, but not everything in a complex infrastructure is HTTP. There's queues, data stores, caches, RPC, FileSystem access (SAN, NAS or local) and more that shouldn't run behind an HTTP interface. This tool helps solve the problem and gives you health check monitoring and metrics in the process. On initial inspection, my only complaint is that it requires too much modification of application code, however it seems like it should be pretty simple to integrate with the various IoC frameworks to use AOP proxies to apply the tool declaratively based on annotations.
And you do realize that you followed up a weak critique of a backend scalability tool with a critique about a failing of their front-end application, right? What relevance does that have?
Re: (Score:2)
A common load balancer isn't restricted to HTTP. Any TCP connection can be load balanced quite well.
No, I followed-up by saying the old API was superior, while less taxing on the back-end... A common issue with "Web-2.0" i
Re: (Score:2)
Re: (Score:2)
All I get from your comment is the fact that you've NEVER used a load balancer before, and don't really know what it is and does.
Re: (Score:2)
Load balancing is a mess. The vast majority of load balancing algorithms on VIPs are round robin-based. Fine for http requests from a single UI and that's about it.
This application allows balancing of the services - not the servers.
Re: (Score:2)
A fair point... Stay away from the cheaper units, and make sure you use something that uses latency to make proper decisions.
Services these days are damn near all TCP/IP based... Your front-end is making a network request to a Tomcat backend, which is running an app that's make JSON requests to some other service, which is pulling some data from some database, wh
Re: (Score:2)
Not to pick too nittily, but your assertion that a load balancer should just "go[es] to the most responsive server" is kind of simplistic. When I was working there, we had a failure mode where the most responsive server was one that had tripped over a subtle bug causing all subsequent requests to that instance of the service to almost immediately respond with an http 200 and empty content (it was a bug, after all, and it was compounded by this failure mode of returning a 200). Because we used weighted round
Re: (Score:2)
Load balancers can be configured to verify the checksum of the content returned, and not just assume the return code is accurate.
Re: (Score:2)
The whole idea of writing crap code, and "optimizing" it later, whether with automated tools or by handing it off to others, works very, very poorly in practice. Putting a little effort in, at the start, to architect services properly, and keeping an eye on the design through the coding process, pays off in spades later on.
I never suggested that it was a good idea to write crap code. I suggested that it's a good idea to have some developers focused on things that all developers need to be taking care of (e.g. a platform that supports universal tasks). In that way, you raise everyone's efficiency with a single core effort and the vast majority of the team can focus on implementing features that move the business forward.
800 devices supported (Score:3, Insightful)
Re: (Score:2)
But they can't possibly manage to bring it to Linux.
Probably has something to with the Silverlight deal with Microsoft.
Re: (Score:2)
Re: (Score:1)
I read that as a lack of will on the part of Netflix, who is likely Microsoft's single largest user of Silverlight.
They have the leverage to push Microsoft on this.
But don't.
Re: (Score:2)
They also haven't had a version of the Android player that's worked well on the LG Optimus V since v1.2 and that version won't work any more.
Re:800 devices supported (Score:4, Informative)
Probably has something to with the Silverlight deal with Microsoft.
Close, but 'confusing cause and effect'.
Silverlight was a facet of the DRM deal that Netflix made with the Studios. So is not releasing a Linux client (because then, y'know, there would be Netflix rippers and movies on bittorrent...).
Amazon plays movies on Flash on Linux, so Netflix made a bad deal (or perhaps Amazon benefited from not being 'first', same as when Apple pioneered online music with iTunes and got AES AAC while Amazon later had plain MP3). There's also a libnetflixplayer.so ELF-32 on Chromebook, so there's no technical obstacle.
Presumably those contracts have a renewal period. Accept that there's no technical problem and focus on the legal (government) problems instead.
Re: (Score:2)
Based on lots of reviews, AAC sounds better at the same bitrate. How is that being worse?
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
They technically could do it, but they can't for IP/DRM reasons, whether you think that is a good reason or not is irrelevant.
No, they could do it aside from the CEO of netflix having ties to MS. Whether I think it is a good reason or not is irrelevant to what netflix does, you're right, though I think implying my opinion is completely irrelevant is a bit harsh. It's relevant to ME!!! (sniff sniff).
Re: (Score:2)
Do you commonly take company statements at face value?
Plan for failure of components. (Score:5, Insightful)
One of the best changes in "design philosophy" that has happened in the past 20 years is that instead of the idea of any product as a fortress that cannot fail, products are designed to expect their components to fail, and to recovery gracefully from it.
This leads to a more flexible and resilient product. It reminds me of the military approach, where every system has at least two backups or alternates.
Re: (Score:2)
Re: (Score:2)
It reminds me of the military approach, where every system has at least two backups or alternates.
Millitary geat is FAR more robust than its civilian counterparts. I don't know how many winter coats I've bought that have worn out in the last forty years, I finally quit buying coats and now just wear the USAF field jacket I was issued forty years ago, that is still in good shape. I was always lucky to get three years out of a civilian coat (I'm rough on clothing).
Re: (Score:2)
One of the best changes in "design philosophy" that has happened in the past 20 years is that instead of the idea of any product as a fortress that cannot fail, products are designed to expect their components to fail, and to recovery gracefully from it.
This leads to a more flexible and resilient product. It reminds me of the military approach, where every system has at least two backups or alternates.
I think that comes more from the fact that whereas in ancient times, re-IPLing an IBM mainframe was horribly expensive and something to be prevented wherever possible, doing the 3-finger salute on a Windows computer was infinitely cheaper than paying someone to write reliable software. Especially since Windows wasn't.
As to the "recover gracefully" part....
Hystrix (Score:2)
I read that Hysterix:
One becomes Hysterixical when their data center components fail.
Re: (Score:2)
Cool story, brah.
cool sense of humor and wordplay there, brah.
Re: (Score:2)
My sense of humor is fine. You're just not funny.
then why did you even bother commenting on it?
Re: (Score:2)
Because I wanted to.
and you're still following it anonymously. wow, I feel flattered. thank you. :-D
Confusing Title (Score:1)
I can't be the only one having trouble parsing the title of this article "Netflix Gives Data Center Tools To Fail". What does it mean to "give something to fail?" I thought "fail" was a verb and doesn't make sense as the target of the verb "give". I've heard of the phrase "given to failure", but that doesn't seem what's being implied here.
Re: (Score:2)
Re: (Score:2)
Nike gives Olympian shoes to run.
It's not great but i was smart enough to parse it fairly easy.
Re: (Score:2)
Still doesn't make sense. In your example, running is what the Olympian wants to do, and Nike is giving him the shoes to do it. This stupid headline makes it sound like failing is the goal, and Netflix is helping them accomplish failure.
Re: (Score:2)
Often in publications, this kind of word misuse is caught and corrected by someone called an editor.
Re: (Score:2)
OK, that gets me far enough to understand that the entity Netflix is performing the action of giving to the target of a data center, and the object its giving is tools. I'm still stumped at the "To Fail". Like the sibling reply says, this makes it sound like Netflix wants the data center to use its tools to accomplish failure. Should the title say "To Handle Failure" instead of "To Fail?"
Re: (Score:2)
How about "to fail gracefully."
Re: (Score:2)
Broke that for you. Now it's more like the title of this story and you may be able to see where everyone else's complaint is coming from.
Re: (Score:1)
Perhaps you don't understand the headline because you don't understand the topic being discussed. Netflix has given data centers tool to fail (and recover effeciently). If Nike had made some shoes that made it easier to recover from tripping, then "Nike gives Olympian shoes to trip." would be like the title of this story and you would understand how appropriate it really is. If it helps you, take some of the irony out of the titles by adding the word 'gracefully' or 'efficiently' to the end of each.
Re: (Score:2)
From the wiki page on Infinitives, as an example: "The letter says I'm to wait outside". You understand that in that sentence, "says" isn't being a 'target' of "wait", right? Why would you think otherwise in the summary? I mean, the only difference
Re: (Score:3)
So what you are saying is that in the absence of these tools the data centers would NOT fail? That is just stupid. With the tools, the data centers are RECOVERING from failure, or AVOIDING failure, or some such. Take out those important words, and you convey the exact opposite meaning from that which was intended. At that is pretty much the definition of a really crappy headline.
Re: (Score:2)
In response to the rest of your statment, well, I never said any part of it WAS written well, only that I understood what the writer was trying to say.
Re: (Score:2)
At first I thought "Data Center" was being used as an adjective, which was part of my problem. I thought they weren't just regular tools, I thought they were Data Center tools being given to something else. That's why I found it so confusing (to answer the question, "why would you think otherwise?").
Re: (Score:2)
This is the same NetFlix ... (Score:2)