Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

After reading Jeff Atwood's article "Working with the Chaos Monkey" and considering the implications of "Fallacies of Distributed Computing" it made me wonder if the first task of developers creating a cloud-based application should be to create a Chaos Monkey. Actually, given that even an entire data center can be lost within a cloud, the Chaos Gorilla may also be necessary to simulate a major outage.

Netflix certainly seem to believe so but I was wondering if their conclusions were shared by others here.

So, as the title says, when embarking on a cloud computing project should a Chaos Monkey be the first application?

share|improve this question
up vote 8 down vote accepted

My company is in the cloud PaaS market as well. It really depends on your business needs and the tradeoffs you're willing to make to get there. Pragmatically, I think your first application should deliver direct, tangible business value. You can easily simulate a chaos monkey manually while you're getting started. The time would be better spent proving your market by shipping something.

share|improve this answer
Fair enough, but wouldn't that instill the mindset of "oh, it's just another web app" into the minds of the developers and create a lot of legacy assumptions that need to be paid off later? – Gary Rowe May 20 '11 at 19:04
What's "in the minds of the developers" is a people problem, and you can't solve a people problem with a technical solution. IOW, if they get lazy without a chaos monkey, the real problem is the laziness, not the lack of a chaos monkey. Also, technical debt is something start-ups can leverage (as long as they also practice risk analysis and mitigation) to improve time-to-market. It's a tradeoff. – Rein Henrichs May 20 '11 at 19:24
Feel free to s/problem/learning opportunity/ is that's more to your liking :) – Rein Henrichs May 20 '11 at 19:25
@Rein I agree, but would having something like the CM help developers make the initial leap to distributed thinking in a more effective manner than a design lecture? Perhaps in the same way that continuous integration coupled with unit tests reinforce testability in developers minds? – Gary Rowe May 20 '11 at 19:39
@Gary "Something like"? Sure! What if you "simulate a chaos monkey manually while you're getting started"? We had a manual chaos monkey simulator for a while. We call him our CEO. – Rein Henrichs May 20 '11 at 19:53

What feature is, for your application, both extremely important and difficult to get right? Start with that one. The more feedback you have about the important stuff, the better. If 'keep working when individual parts are failing' is a key feature, start with the Chaos Monkey/Gorilla.

But there are plenty of other features which may be as important as the chaos monkey; not all cloud computing needs to be that fault-tolerant. It really depends on your requirements.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.