You are here

Architecting for the Cloud: Best Practices

For quite some time now, software architects have discovered and applied several concepts and best practices to build a lot of applications. In today’s world, these concepts are even more applicable because of ever-growing datasets, unpredictable traffic patterns, and the demand for faster response times.

This paper reinforces and puts emphasis some of these traditional concepts and discuss how they may evolve in the context of cloud computing. It also discusses some unprecedented concepts such as elasticity that have emerged due to the dynamic nature of the cloud.

This paper tackles a lot of things: one of them is the business benefits of implementing cloud computing.

This includes:

  • Almost zero upfront infrastructure investment: If you have to build a large-scale system it may cost a fortune to invest in real estate, physical security, hardware (racks, servers, routers, backup power supplies), hardware management (power management, cooling), and operations personnel.
  • Just-in-time Infrastructure: In the past, if your application became popular and your systems or your infrastructure did not scale you became a victim of your own success.
  • More efficient resource utilization: System administrators usually worry about procuring hardware (when they run out of capacity) and higher infrastructure utilization (when they have excess and idle capacity).
  • Usage-based costing: With utility-style pricing, you are billed only for the infrastructure that has been used. You are not paying for allocated but unused infrastructure.
  • Reduced time to market: Parallelization is the one of the great ways to speed up processing. If one compute-intensive or data-intensive job that can be run in parallel takes 500 hours to process on one machine, with cloud architectures, it would be possible to spawn and launch 500 instances and process the same job in 1 hour.

Aside from the business benefits this also tackles its technical benefits of implementing The Cloud.

Like:

  • Automation – “Scriptable infrastructure”: You can create repeatable build and deployment systems by leveraging programmable (API-driven) infrastructure.
  • Auto-scaling: You can scale your applications up and down to match your unexpected demand without any human intervention. Auto-scaling encourages automation and drives more efficiency.
  • Proactive Scaling: Scale your application up and down to meet your anticipated demand with proper planning understanding of your traffic patterns so that you keep your costs low while scaling.
  • More Efficient Development lifecycle: Production systems may be easily cloned for use as development and test environments. Staging environments may be easily promoted to production.
  • Improved Testability: Never run out of hardware for testing. Inject and automate testing at every stage during the development process. You can spawn up an “instant test lab” with pre-configured environments only for the duration of testing phase.
  • Disaster Recovery and Business Continuity: The cloud provides a lower cost option for maintaining a fleet of DR servers and data storage. With the cloud, you can take advantage of geo-distribution and replicate the environment in other location within minutes.
  • “Overflow” the traffic to the cloud: With a few clicks and effective load balancing tactics, you can create a complete overflow-proof application by routing excess traffic to the cloud.

With a lot of cloud services available out there, this paper manages to help us better understand one of the leading cloud services out there. AWS or Amazon web services are one of the best in its market today. One of the services they offer is the Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud.

  • They also noted that using AWS will not require you to sacrifice the comforts of the old ways your organization is accustomed to. Example:
  • You are free to use the programming model, language, or operating system (Windows, OpenSolaris or any flavor of Linux) of your choice.
  • You are free to pick and choose the AWS products that best satisfy your requirements—you can use any of the services individually or in any combination.
  • Because AWS provides resizable (storage, bandwidth and computing) resources, you are free to consume as much or as little and only pay for what you consume.
  • You are free to use the system management tools you’ve used in the past and extend your datacenter into the cloud.

Other than citing the benefits and understanding the services they also cite the best practices when using or implementing the cloud in your company. These best practices help a lot when you are implementing the cloud into your own business.

Following these best practices is entirely up to you. If you find that one of the practices fit your need then why not?

One great practice is to design for failure: This does not necessarily mean that you should expect to fail; this is like saying that you should always be prepared. Always have a contingency plan ready. It is really simple. In any business, there will always be problems that occur.

Questions that you need to ask: What happens if a node in your system fails? How do you recognize that failure? How do I replace that node? What kind of scenarios do I have to plan for? What are my single points of failure? If there are master and slaves in your architecture, what if the master node fails?

One other practice that can help your business is that when setting up components for your business makes sure that the components are not directly dependent with each other. Make sure that if one component fails all other will be able to continue functioning without any problems.

These are just some of the examples of the benefits and best practices cited by this paper. The best practices are basic and can help you with any type businesses if you follow them. If you need more information with regards to everything else on the paper you can contact us at Myrtec Pty. Ltd. We here at myrtec specialize in these kinds of services. We are partners with AWS and can give you more information with regards to this topic.