This document discusses several best practices for architecting applications for the cloud. It begins by outlining three approaches for architecting applications in AWS: deploying existing apps with minimal changes, evolving apps to leverage more AWS services, and designing apps from the start to be cloud-native. It then discusses seven cloud architecture best practices: designing for failure, building security at every layer, leveraging different storage options, implementing elasticity, thinking parallel, loose coupling, and not fearing constraints. For each best practice, it provides examples and recommendations.