1 / 19

Dynamically Scaling Applications in the Cloud

Dynamically Scaling Applications in the Cloud. Presented by Paul. Problem. The cloud offers Near infinite computing capabilities Near infinite storage On-demand access to new VMs Pay-as-you-go model But how do you build an application to automatically take advantage of those resources?.

zev
Download Presentation

Dynamically Scaling Applications in the Cloud

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dynamically Scaling Applications in the Cloud Presented by Paul

  2. Problem • The cloud offers • Near infinite computing capabilities • Near infinite storage • On-demand access to new VMs • Pay-as-you-go model • But how do you build an application to automatically take advantage of those resources? [1]

  3. Overview of scaling options [1]

  4. Horizontal Scaling • VM Replication • Duplicate servers and create load balancers to distribute incoming request • Most common approach to scaling • Will look in more detail... • Network Scalability • As an application scales up, the bandwidth requirements for intercloud communication and app requests increases, [1] assesses the possibility of requesting network resources in conjunction with cloud resources Network as a Server (NaaS) [1]

  5. Vertical Scaling • VM resizing (live) • Taking a VM with given processing power, and upgrading it with more resources while it's still running • VM replacement • Replacing less powerful VM with more powerful VM (shutting down original VM) • Might require reboots, and application tolerance [1]

  6. "Rule of thumb" • CPU-Intensive • Best to load balance and split computation among many instances • Network intensive • Better to use single CPU heavy instance • More network intensive • DNS-based load balancing on powerful CPUs [1]

  7. Decisions, decisions • 1 Cloud to rule them all? • Do you want to use multiple cloud providers? • Does part of your application require running on private cloud? • How much control over automated scaling would you like? • If you don't want any control, maybe PaaS is better option • Do you simply want horizontal scaling, and will handle load balancing on your own? • How much $$$ do you have?

  8. Methods for Scaling • Automatic VM Scaling • Dynamic Workload-pattern Matching • Whole Application Scaling • Non-scalable Load Balancing (e.g. Elastic Load Balancing) • DNS-based Load Balancing [1]

  9. Basic: Automatic VM Scaling • Services that scale based on predefined VM-related performance metrics • Offered by Amazon and Rightscale • Amazon Autoscaling comes with Cloudwatch • Set conditions based on Cloudwatch variables, react to latency, CPU speed, etc. • What you might imagine for scaling - like a state machine • If conditions a,b,c are met, do x,y,z [1]

  10. The "Controller"

  11. "Non-Scalable" Load Balancers • Amazon offers load balancing service (Elastic Load Balancing) • The reason it's "non-scalable" is this is a single load balancer • Could be used in conjunction with horizontal scaling • Scale up/down the number of instances, configure load balancer to balance across running instances

  12. Elastic Beanstalk • Automatically scale up your application depending on services it's using, and beanstalk controller parameters • Only pay for underlying AWS resources • Can upload .NET, PHP/Python, and Java apps for integration with Elastic Beanstalk • Closer in function to a PaaS • Still have access to AWS instances, can interact with elastic beanstalk controller

  13. Whole Application Scaling [3]

  14. Whole Application Scaling [3]

  15. Dynamic Workload-pattern Matching [2] Scalability Controller

  16. Dynamic Workload-pattern Matching [2]

  17. Final Observations • You must first decide how many clouds you want to use • Scaling is still an art • Systems for automated scaling still in their infancy • At the core, there is always a scaling controller • Either you configure and operate the controller, or the IaaS provider does (e.g. Elastic Beanstalk) • You pay for automation • Either with your time or your money • More customized automation == more complexity

  18. Sources [1] L. M. Vaquero, L. Rodero-Merino, and R. Buyya. "Dynamically scaling applications in the cloud," SIGCOMM Comput. Commun. Rev., 41:45-52. [2] P. Marshall, K. Keahey, and T. Freeman, "Elastic site:Using clouds to elastically extend site resources," Cluster Computing and the Grid, IEEE International Symposium on, vol. 0, pp. 43-52, 2010. [3]R. Buyya, R. Ranjan, and R. Calheiros, “Intercloud: Utility-oriented federation of cloud computing environments for scaling of application services.” in ICA3PP 2010: The 10th International Conference on Algorithms and Architectures for Parallel Processing, 2010, pp. 19–24.

  19. Links for papers [1] http://www.cloudbus.org/papers/ScalabilityInCloud2011.pdf [2] http://www.nimbusproject.org/files/elasticsite_ccgrid_2010.pdf [3] http://arxiv.org/pdf/1003.3920.pdf

More Related