Because Amazon Web Services (AWS) differs so much from traditional infrastructure offerings, attempting to apply traditional application design principles doesn't always result in the best outcomes. Here are some points to keep in mind:

  • Everything fails all the time: Those are Amazon's AWS watchwords, and they should be yours as well. In particular, EC2 instances can fail or quit responding unexpectedly, so incorporate resilience to resource failure into your application.

  • Use redundancy to ensure application uptime: Because AWS resources can fail, follow Amazon's operating principle, and design and implement redundancy in your application. Redundancy protects your application against resource failure.

  • Design your application to horizontally scale up — and down: Because AWS resources incur costs whether they're heavily used or used not at all, it's important that your application be able to grow and shrink its resources so that you are using only what you need to support your application performance and resilience.

  • Use open source components as much as possible: Not only does open source software cost less, its licensing conditions make it much more congenial to sporadic use. Proprietary software, by contrast, usually requires a significant license fee whether the software runs for five minutes or five years.