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

Designing Cloud Applications

As an architect, you should have come across terms such as loosely coupled, multitier, service oriented, highly scalable, and so on. These terms are associated with architectural best practices, and you will 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 design principles and best practices for developing application architectures on the cloud, largely remain the same as for on-premise architectures. However, you need to be aware of certain peculiarities specific to 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 scale up and down, automatically, depending on the load. What are the implications of such auto scaling on your design?

One of the major differences in cloud-based SaaS applications and on-premise enterprise applications is multi-tenancy. We will consider key architectural questions, such as: what are some of the design considerations of multi-tenancy? How do you design for UI, services, and data multi-tenancy in a multitier architecture?

We will also introduce architectural patterns being used for machine learning workloads and streaming applications on the cloud.

More specifically, we will describe the familiar and not-so familiar architectural best practices in the cloud context by covering the following topics:

  • Multitier architecture on the cloud
  • 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
  • Designing for machine learning workloads and streaming applications
  • Estimating your cloud computing costs
  • Sample application – a typical e-commerce web application