Cloud Service Models and Performance Ang Li 09/13/2010 Roadmap Re-cap on cloud computing Classes of cloud providers Common services offered by cloud providers Cloud performance comparison Re-cap on cloud computing What is cloud computing? ◦ Cloud application: software-as-a-service ◦ Cloud provider: hardware and software infrastructure that supports the cloud applications Benefits of cloud computing ◦ Pay-as-you-go ◦ On-demand scaling Classes of cloud providers Platform as a Service (PaaS) Infrastructure as a Service (IaaS) Infrastructure-as-a-Service providers Offer near bare-metal virtual machines ◦ You can ssh, get root privilege, install new software, do whatever you want ◦ Can use the APIs provided by the OS ◦ Highly flexible and customizable Charge by machine-hour ◦ (How many machines you use) X (how long you use them) ◦ You can afford it! Demo time! Amazon AWS Platform-as-a-Service providers Offer a sandbox environment ◦ Upload a program, they run it for you ◦ Can only use the APIs provided by the environment Charged by CPU utilization ◦ Pay only how much resource you use ◦ A few free hours per day! Demo time! AppEngine Windows Azure: a combination of both Offer a sand-box environment of C# (PaaS) Charge by machine-hour (IaaS) Demo time! Discussion What are the pros and cons of IaaS and PaaS? Which one do you prefer? ◦ Your homepage ◦ E-business application ◦ Video processing Services offered by a cloud Elastic compute cluster Persistent storage Intra-cloud and wide-area network and others… ◦ MapReduce service ◦ CDN service Elastic compute cluster Where your application is running ◦ VM or sandbox environment Why cluster? ◦ Multiple “instances” can be running your application simultaneously Why elastic? ◦ You can add new instances or remove existing ones with very short latency Scaling the compute cluster Opaque scaling ◦ User can manually increase/decrease the number of instances ◦ Alternatively, she can set up a scaling policy ◦ IaaS providers (including Azure) Transparent scaling ◦ Scaling happens automatically (magically) ◦ PaaS providers Persistent storage Where to store your application’s data Why persistent? ◦ Local storage (VM disk) is not reliable Different types of storage service ◦ Table, blob, queue, etc. ◦ Highly scalable and available Access the storage services Storage APIs ◦ HTTP-based GET https://sdb.amazonaws.com/ ?Action=PutAttributes &Attribute.1.Name=data &Attribute.1.Value=haha &AWSAccessKeyId=[valid access key id] &DomainName=table &ItemName=k… ◦ Library call DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Key k = KeyFactory.createKey(table, key); Entity e = new Entity(k); e.setProperty("data", “haha"); datastore.put(e); Networking service Intra-cloud network: between two instances or between an instance and the storage service Wide-area network: between a cloud instance and the end user Intra-cloud network Within a data center ◦ High bandwidth, low latency Wide-area network Every provider has multiple locations to host cloud applications Application content can be served from the closest location ◦ Why is this a good thing? Re-cap: cloud services Wide-area network Web application Computation service Intra-cloud network Storage service CloudCmp: comparing cloud providers Motivation ◦ Provide shopping advice Analogy: should I buy an IBM or a Dell or a Mac? ◦ Identify performance problems Challenges ◦ What to compare? Each provider is unique in some way… ◦ How do we measure? Methodology Identify the common services ◦ We just did this Pick a few metrics for each service relevant to application performance Develop benchmarking task for each metric Run the tasks on different providers and compare Choose the providers to compare AWS, Rackspace, Azure, and AppEngine Metrics: elastic compute cluster Benchmark finishing time ◦ Java-based benchmark tasks Cost per benchmark ◦ From per-hour price and billing API Scaling latency ◦ Periodically allocate new instances Metrics: persistent storage Operation latency ◦ Client matters Cost per operation Time to consistency ◦ Read-after-write test Metrics: networking service Intra-cloud network ◦ Bandwidth (iperf) ◦ Latency (ping) Wide-area network ◦ Use PlanetLab nodes to simulate a diverse user base ◦ Let each node ping each data center of a cloud provider ◦ Optimal wide-area latency Result: computation performance What can we learn from the figure? ◦ How do the performance differ across different clouds? ◦ Within a provider, how do performance differ across different instance types? Is this enough information to choose provider/instance? ◦ How about cost? Result: computation cost What can we learn from this figure? ◦ Is some provider particularly cost-effective? ◦ Which instance type should I choose within a provider? Result: scaling efficiency How is the scaling latency (high/low)? Linux vs Windows? Result: storage (table) The storage services show high variation ◦ Median – 30ms, 90 percentile – 60ms Is it good or bad? Why? Result: intra-cloud network Intra-cloud bandwidth varies across different providers ◦ From 200Mbps to 800Mbps What might be the cause? Result: wide-area network Wide-area network latency also varies a lot ◦ C3 is much better than the others ◦ What might be the reason? Result summary No provider stands out ◦ C1 has the highest network bandwidth, while its instance is not the most cost-effective ◦ C2 has the most powerful instances, while its network bandwidth is low ◦ C3 has the lowest wide-area network latency, while its storage is slower than others It is not trivial to shop for a cloud provider! ◦ Many research challenges in developing a sound mechanism to select the best provider for an application Summary Two main classes of cloud providers ◦ IaaS: bare-metal virtual machines ◦ PaaS: sand-box environment Four common services ◦ ◦ ◦ ◦ Elastic compute cluster Persistent storage Intra-cloud network Wide-area network No provider has the best performance over all services