Synopsis of: Architecting for the Cloud: AWS Best Practices

This page is a cut down version of the AWS "Architecting for the Cloud: AWS Best Practices" White Paper.  It included links to all the relevant technologies mentioned in the document.

Click on the following links to see more relevant information:

The Abstract from the original white paper says:

"This whitepaper is intended for solutions architects and developers who are building solutions that will be deployed on Amazon Web Services (AWS). It provides architectural patterns and advice on how to design systems that are secure, reliable, high performing, and cost efficient. It includes a discussion on how to take advantage of attributes that are specific to the dynamic nature of cloud computing (elasticity, infrastructure automation, etc.). In addition, this whitepaper also covers general patterns, explaining how these are evolving and how they are applied in the context of cloud computing."

Introduction

Migrating applications to AWS, even without significant changes (an approach known as “lift and shift”), provides organizations the benefits of a secured and cost-efficient infrastructure. However, to make the most of the elasticity and agility possible with cloud computing, engineers will have to evolve their architectures to take advantage of the AWS capabilities.

The main differences bought by the AWS Cloud are:

  • IT Assets Become Programmable Resources
  • Global, Available, and Unlimited Capacity
  • Higher Level Managed Services
  • Security Built In

Scalability

Systems that are expected to grow over time need to be built on top of a scalable architecture. Such an architecture can support growth in users, traffic, or data size with no drop in performance.

Scaling Vertically

Scaling vertically takes place through an increase in the specifications of an individual resource (e.g., upgrading a server with a larger hard drive or a faster CPU).

Scaling Horizontally

  • Stateless Applications
  • Stateless Components
  • Stateful Components
  • Distributed Processing

Disposable Resources Instead of Fixed Servers

In a traditional infrastructure environment, you have to work with fixed resources due to the upfront cost and lead time of introducing new hardware. This would drive practices like manually logging in to servers to configure software or fix issues, hardcoding IP addresses, running tests or processing jobs sequentially etc.

  • Instantiating Compute Resources
  • Bootstrapping
  • Golden Images
  • Hybrid

Infrastructure as Code

Automation

In a traditional IT infrastructure, you would often have to manually react to a variety of events. When deploying on AWS there is a lot of opportunity for automation, so that you improve both your system’s stability and the efficiency of your organization:

  • AWS Elastic Beanstalk
  • Amazon EC2 Auto recovery
  • Auto Scaling
  • Amazon CloudWatch Alarms
  • Amazon CloudWatch Events
  • AWS OpsWorks Lifecycle events
  • AWS Lambda Scheduled events

Loose Coupling

As application complexity increases, a desirable attribute of an IT system is that it can be broken into smaller, loosely coupled components. This means that IT systems should be designed in a way that reduces interdependencies—a change or a failure in one component should not cascade to other components.

  • Well-Defined Interfaces
  • Service Discovery
  • Asynchronous Integration
  • Graceful Failure

Services, Not Servers

Developing, managing, and operating applications—especially at scale—requires a wide variety of underlying technology components. With traditional IT infrastructure, companies would have to build and operate all those components.

  • Managed Services
  • Serverless Architectures

Databases

With traditional IT infrastructure, organizations were often limited to the database and storage technologies they could use. There could be constraints based on licensing costs and the ability to support diverse database engines. On AWS, these constraints are removed by managed database services that offer enterprise performance at open source cost. As a result, it is not uncommon for applications to run on top of a polyglot data layer choosing the right technology for each workload.

  • Relational Databases
  • NoSQL Databases
  • Data Warehouse
  • Search

Removing Single Points of Failure

Fault Isolation and Traditional Horizontal Scaling

A single request could bring all servers, including standby services down by cascading the fault.  An option to protect against this is:

Optimise for Cost

Right Sizing

Choose the right :

  • EC2 instance(s) size
  • S3 Storage class - Either Standard or Infrequent Access.  Also Glacier, which is not S3 based.
  • Elastic Block Store (EBS), i.e. SSD (Solid State Drive) either General Purpose SSD (gp2) OR Provisioned IOPS SSD (io1), HDD (Magnetic Hard Disk Drive) either Throughput Optimized HDD (st1) OR Cold HDD (sc1)

Continuous monitoring and tagging

Cost optimization is an iterative process. Your application and its usage will
evolve through time. In addition, AWS iterates frequently and regularly
releases new options.

AWS provides tools to help you identify those cost saving opportunities and
keep your resources right-sized. To make those tools’ outcomes easy to
interpret you should define and implement a tagging policy for your AWS
resources.

Elasticity

Take Advantage of a variety of EC2 purchasing options

  • On Demand
  • Reserved Capacity - Use Trusted Advisor or EC2 Useage Reports to identify which compute resources might be able to use these instances
  • Spot Instances - Great for workloads that have tolerance to interruption

Caching

Application Data Caching

Amazon Elasticache - Either Memcached or Redis.  See Performance at Scale with Amazon ElastiCache 

Edge Caching - Using a Content Delivery Network (CDN) such as CloudFront with local edge locations around the world to deliver large popular objects to end users at scale 

Security

For a detailed view on how you can achieve a high leve of security governance see:

whitepapers

AWS CloudFormation Templates can be imported as "products" into AWS Service Catalogue to provide corporate governance in conjunction with IAM.

Real-Time Auditing

Use:

  • AWS Config
  • Amazon Inspector
  • AWS Trusted Advisor

Conclusion

For a lot more information see the Amazon Architecture Center 

© 2000 - 2018, B2B Internet Solutions Limited. All rights reserved. Terms.