I recently read an article on AWS success http://goo.gl/FT0up that contained a point that was minor (maybe) in the article, but struck me as interesting: To run on a cloud, applications have to be built to certain general requirements.
The article lists three things (embedded in a para, not a list like I have here):
1. Simplified network model (I have no clue what this really means. Simplified compared with what?)
2. Application takes responsibility for fault tolerance (neither servers nor local storage is persistent)
3. Automated scaling and management (? built into the application?)
While this sounds reasonable, I wonder: Are they the only requirements, or are there more? Anybody care to flesh out what they mean in practice? Are they all correct? What does #1 mean, anyway? Why is #2 just servers & storage - what about communications?