9.6 Architecting For The Cloud Best Practices Whitepaper
Business Benefits of Cloud
Almost zero upfront infrastructure investment
Just-in-time infrastructure
More efficient resource utilization
Usage-based cosing
Reducing 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, deploy 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 you application software will fail too. By being a pessimist, you end up thinking about recovery strategies during design time, which helps in designing an overall system better.
Decouple your Components
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 or functional perspectives.
In the case of batch-processing architecture, you can create asynchronous components that are independent of each other.
Implement Elasticity
The cloud brings a new concept of elasticity in your applications. Elasticity can be implemented in three ways:
Proactive Cyclic Scaling: periodic scaling that occurs at fixed interval (daily, weekly, monthly, quarterly)
Proactive event-based scaling: scaling just when you are expecting a big surge of traffic requests due to a scheduled business event (new product launch, marketing campaigns)
Auto-scaling based on demand. By using monitoring service, your system can send triggers to take appropriate actions so that it scales up or down based on metrics (utilization of servers or network IO, for instance)
Secure your Application
Last updated
Was this helpful?