Overview – Architecting for the Cloud Best Practices

  Amazon Web Services (AWS), Overview

https://www.udemy.com/aws-certified-solutions-architect-associate/learn/v4/t/lecture/2050760?start=0
https://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf

Business Benefits for the Cloud

  • Almost Zero upfront infrastructure investment
  • Just-in-time Infrastructure
  • More efficient resource utilization
  • Usage-based costing
  • Reduced time to market

Technical Benefits of Cloud

  • Automation – “Scriptable Infrastructure”
  • Auto-scaling
  • Proactive Scaling
  • More Efficient Development lifecycle
  • Improved Testability
  • Disaster Recovery and Business Continuity
  • “Overflow” the traffic to the cloud.

Understanding Elasticity

Design for Failure

Rule of Thumb: Be a pessimist when designing architectures in the cloud.  Assume things will fail.  In other words, always design, implement and deply for automated recovery from failure.

In particular, assume that your hardware will fail.  Assume that outages will occur.  Assume that some disaster will strike your application.  Assume that you will be slammed with more than the expected number of requests per second some day.  Assume that with time your application software will fail too.  By being a pessimist, you end up thinking about recovery strategies during design time, 3wich helps in designing an overall system better.

Decouple your Components (SQS)

The key is to build components that do not have tight dependencies on each other, so that if one component were to die (fail), sleep (not respond) or remain busy (slow to respond) for some reason, the other components in the system are built so as to continue to work as if no failure is happening.

In essence, loose coupling isolates the various layers and components of your application so that each component interacts asynchronously with the others and treats them as a “Black Box”

For Example:

In the case of web application architecture, you can isolate the app server from the web server and from the database.  The app server does not know about your web server and vice versa, this gives decoupling between these layers and there are no dependencies code-wise for functional perspectives.

In the case of batch-processing architecture, you can create asynchronous components that are independent of each other.

Implement Elasticity

The cloud bring a new concept of elasticity i your applications.  Elasticity can be implemented in three ways:

  • Proactive Cyclic Scaling: Periodic scaling that occurs at fixed intervals (daily, weekly, monthly, quarterly, etc.) based on known increases in demand.
    • Example: Company runs reports every other Friday, so scale up for the extra loads, then reduce when the reports have completed.
  • Proactive Event-based Scaling: Scaling just when you are expecting a big surge of traffic requests due to a scheduled business event.  (Black Friday, new product launch, marketing campaigns, etc.)
  • Auto-scaling based on demand.  By using a monitoring service, your system can send triggers to take appropriate actions so that is scales up or down based on metrics (actual utilization of the servers or network I/O, for instance).

Secure Your Application

  • Only open ports that are required for the application running on each server.

 

LEAVE A COMMENT