Learning AWS
上QQ阅读APP看书,第一时间看更新

Chapter 2. Designing Cloud Applications – An Architect's Perspective

As an architect, we are sure you have come across terms such as loosely coupled, multi-tier, services oriented, highly scalable, and many more. These terms are associated with architectural best practices and you find them listed in the first couple of pages of any system architecture document. These concepts are generally applicable to all architectures, and the cloud is no exception.

In this chapter, we want to highlight how these are accomplished on the cloud. You will notice that the approach you take towards cloud application architecture remains the same to a large extent. However, you need to be aware of certain peculiarities of the cloud environment, in order to architect scalable, available, and secure cloud applications. For example, if you are architecting a web-scale application, you need to take into consideration the ability to automatically scale up and down. What are the implications of auto scaling on your design?

One of the major differences in cloud-based SaaS applications and on-premise enterprise applications is multi-tenancy. What are some of the design considerations of multi-tenancy? How do you design for UI, services, and data multi-tenancy in a multi-tier architecture?

In this chapter, we describe the familiar and not-so familiar architectural best practices in the cloud context, by covering the following topics:

  • Multi-tier architecture
  • Designing for multi-tenancy including data security and extensibility
  • Designing for scale
  • Automating infrastructure
  • Designing for failure
  • Parallel processing
  • Designing for performance
  • Designing for eventual consistency
  • Estimating your cloud computing costs
  • Sample application is a typical e-commerce web application