Cloud infrastructure is different from traditional infrastructure
When you’re building an application for traditional infrastructure you assume that all components of the system are functional and reliable, even though sometimes they fail. When working in the field of cloud computing you have to assume that different parts of the system will be failing all the time - servers crash, networks become unavailable and sometimes even Amazon Web Services servers are not accessible. All of that needs to be accounted for when you’re building an app for the cloud and proper ‘insulation’ needs to be put in place to protect the app and the data in case of these failures.
Use redundancy to cope with system failures
The easiest and most robust way to deal with ubiquitous failures in the cloud is to ensure redundancy for all parts of your application. Use more than one web and database servers, make sure there are two or more logic levels in the app, etc. Ideally, you should choose servers that are located in different data centers and even on different continents to ensure that your app is as robust as possible.
Prepare for varied user loads
The days when business employees were the primary software users and you could expect a high user load from 9 to 5 on weekdays and low loads otherwise are gone. Nowadays someone can post a tweet about your app and millions of users will flood it immediately, on other days, the load could be extremely low. You app should be developed with these sudden surges in mind, so you should be able to rapidly add or remove servers to the permanent two.
Develop an array of cloud services
If you want to build truly successful cloud-based software, you should understand that the task doesn’t end with developing a program and maintaining it in a working condition. Successful cloud computing companies offer their users a wide selection of add-on services in addition to the app itself, and if you strive for that, you maximize your chances of success in the field.