Nothing Special   »   [go: up one dir, main page]

Academia.eduAcademia.edu

A Reference Architecture for Building Highly Available and Scalable Cloud Application

A Reference Architecture for Building Highly Available and Scalable Cloud Application Hassan Jamous International Master in Service Engineering (IMSE) University of Crete, University of Stuttgart and Tilburg University Tilburg, Netherlands hassan.jamous@gmail.com Abstract— Building a highly available and scalable web application is not an easy process. Developers should design the system to handle both expected and unexpected failures. Furthermore, the system should be scalable to meet the extra load that might happen. Building such an application using traditional web hosting is very costly, that is why entrepreneurs with new web application ideas start to build their applications on the cloud. This paper introduces a reference architecture and best practices to build highly available and scalable web applications on Amazon Cloud. A case study is used to validate the architecture and to illustrate how the best practices are implemented. Keywords—Amazon Cloud, Scalability, Availability I. INTRODUCTION In the last few years the world has seen many successful web application ideas, some of these applications, like Facebook and Twitter, have hundreds of millions of users all around the world. These success stories make entrepreneurs who have a new web application idea think about high scalability and availability when they want to build their applications in order to handle the large number of users and huge amount of data that might happen in the case that the idea achieves such levels of success. Entrepreneurs face a lot of challenges when they want to implement highly available and scalable web applications; some of these challenges are financial constraints and the lack of proper IT infrastructure [31]. However, with the birth of cloud computing and the payas-you-go concept entrepreneurs have more chances to build successful, highly available and scalable web applications at low cost [3]. This paper aims to help in building highly available and scalable web applications on cloud, it provides a reference architecture and best practices to take into consideration during the build of such an application. The paper starts by a brief Technical Background in section 2. The Research Methodology is detailed in section 3. Sections 4 and 5 are designated for the Qualitative Research. Sections 6 and 7 include an introduction to Amazon Cloud and introduce our reference architecture and best implementation practices. Section 8 includes the Experimental Study. Finally, we conclude and summarize Future Work in sections 9 and 10. II. TECHNICAL BACKGROUND “Cloud Computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the datacenters that provide these services” [3]. The services are called Software as a Service (SaaS). The cloud is the name that is given to the hardware and software installed in the datacenter. The public cloud is available to users under the pay-as-you-go concept. The service that is being sold is called Utility Computing. The term Cloud Computing is given to the sum of SaaS and Utility Computing [3]. Service delivery in Cloud Computing comprises three different service models [4]: 1- Software-as-a-Service (SaaS) which provides fully fledged applications to a cloud„s end user and are mainly accessed through a web portal and service-oriented architecture based on web service technologies. 2- Platform-as-a-Service (PaaS) which provides the environment for developing and provisioning cloud applications. 3- Infrastructure-as-a-Service (IaaS) where the cloud provider supplies the resources (virtual machines, storage, firewalls, load balancers, etc.) to the customers for deploying the applications, the cloud users should install operating system images and maintain it themselves. The three service models are completed by an end user layer that encapsulates the end user perspective on cloud services. III. RESEARCH METHODOLOGY The paper raises the following question: How can a highly available and scalable web application be architected on Amazon Cloud? The paper starts by proofing the following hypothesis: building a highly available and scalable web application in the cloud follows the same architecture of building such an application using traditional web hosting or traditional machine-based infrastructure. To proof the hypothesis a qualitative study has been conducted to check the current successful highly available and scalable web applications on the cloud and comparing the current cloud architecture with the patterns that are used to build highly available and scalable architecture using traditional machinebased infrastructure. Based on that proof the paper introduces a reference architecture to build highly available and scalable web applications on Amazon Cloud, and suggests some best practices for building such an application. Proofing the reference architecture has been done by following the experimental method; the paper introduces a new web application idea that is implemented using the reference architecture and followed the suggested best practices. Performance tests were performed on the application to proof its ability to scale and being available in different circumstances. infrastructure is too complex and expensive. Servers have to be provisioned to the peak capacity, which leads to high upfront costs [3][33]. Cloud hosting companies provide a number of services which are ideal for entrepreneurs. Some of these services are: providing infinite resources on demand, no upfront commitment, clients can pay for resources on a short-term basis (e.g. processor by hour); Just-in-time Infrastructure, Auto-scaling, Disaster Recovery and Business Continuity [11]. With these services, building a new application becomes much easier, faster and cheaper. The next sections show how a highly available and scalable application can be implemented on the cloud. V. Fig. 1. Machine-based highly available and scalable web application IV. TRADITIONAL WEB HOSTING HIGHLY AVAILABLE AND SCALABLE ARCHITECTURE Many researchers have been working on different ways for building highly available and scalable applications [5][27]. “Fig.1,” depicts a highly available and scalable web application architecture that is widely used by multiple companies like Twitter [24], LinkedIn[19], eBay[19] and others [5][25][30]. “Fig. 1,” shows a typical three tier web application architecture, where the presentation tier is responsible for generating web pages, data validation, transforming data into the form that is acceptable by the application tier. The application tier is responsible for doing all calculations and validations. The data-tier is responsible for storing and managing data [6]. “Fig. 1,” also shows that the application is distributed among 2 regions; a DNS load balancer is used to distribute the load between regions. Caching servers, which can be considered as another tier, are used for improving performance [14][18]. Also, the use of a content delivery network CDN, such as Akamai and Limelight Networks, has potential benefits for delivering static content [1]. A cluster of load balancers is used between the presentation tier and application tier. Some architectures suggest using a single highly available load balancer but others emphasize having more than one load balancer to prevent a single point of failure [15]. “Fig. 1,” assumes that the data tier is designed as a Master-Slave and has an asynchronous replication among regions and synchronous replication among zones. In case of using a NoSql data store the data tier architecture will be different as there is no need for the synchronous replication any more [30]. Failures in this architecture are usually due to the hardware or operating system. High availability is achieved by redundancy where new servers should be added and database replication should be done. Scalability in this architecture can be achieved on each layer by adding additional host [25]. Implementing the architecture in “Fig. 1,” using traditional web hosting companies or traditional machine-based HIGHLY AVAILABLE AND SCALABLE WEB APPLICATION ON THE CLOUD Netflix, an on-demand streaming media over the internet company, uses Amazon cloud services; the architecture follows the three tier pattern [16]. Siddharth Anand, Cloud Architect at Netflix, focuses on the importance of setting up the application on multiple availability zones, the use of multiple regions for decreasing network latency and the use of CDN for static content and caching for reducing database requests [16]. In [26], Pinterest, an online web application which provides visual discovery tools where users can save and categorize their images, shows how Amazon Cloud is used to ensure availability and scalability. Pinterest has three tier architecture and uses multiple availability zones and regions. Rightscale, a professional company in the field of cloud management, shows in a number of white papers the reference architecture that they follow to build highly available and scalable cloud-based web applications for their customers. Rightscale uses two tier architecture (application and data), with installation in multiple areas in order to perform failover in case of an outage in one area. Rightscale indicates that a presentation layer can be added based on the customer case. Rightscale encourages the use of caching and CDN for improving performance [18]. In [32], IBM introduces a cloud reference architecture which also follows the architecture shown in “Fig. 1,”. Based on the mentioned cases and other cases (Ericsson, Expedia, Unilever, Sunpower, Outsmart [7]), we can conclude that a highly available and scalable web application on the cloud uses the same architecture that is used in traditional web hosting or machine-based infrastructure which proofs our hypothesis. Based on this proof the next section introduces a reference architecture for building highly available and scalable applications for Amazon Cloud. VI. BUILDING HIGHLY AVAILABLE AND SCALABLE WEB APPLICATION ON AMAZON CLOUD A. Introduction to Amazon Cloud Amazon Cloud or Amazon Web Services (AWS) provides a number of online services for web applications that are accessible over HTTP. All these services are billed on the payas-you-go concept. Amazon claims that it can provide large infrastructure faster and cheaper than the traditional hosting companies. AWS is located in multiple geographical “Regions”; each region has multiple "Availability Zones". Availability zones are located in different places in a region. Failure in one availability zone does not affect other zones. Amazon AWS provides more than 40 services; this paper covers the essential services for building highly available and scalable web applications. These services are [12]: 1- Amazon EC2 “Elastic Computing Cloud”: a web service that gives a resizable virtual machine in the cloud. EC2 users have control over the computing resources, they can scale the resource capacity up and down depending on their needs. 2- Amazon EBS “Elastic Block Store”: data on EC2 instances is not persistent when the instance is powered off and on (no problem with rebooting), EBS service provides a networked backed storage volume whose lifetime is independent from the EC2 instance it is attached to. The EBS storage can easily be detached from one instance to another in case of failure . 3- Amazon Route 53 *: a web service that is used for DNS resolution . 4- Amazon ELB “Elastic Load Balancing” *: a service used for load distribution across multiple Amazon EC2 instances. It automatically detects unhealthy instances and passes requests to the healthy ones. 5- Amazon S3 “Simple Storage Service” *: a service for storing and fetching any amount of data. With S3 there is no need for capacity planning, users can dump data at any time. 6- Amazon RDS “Relational Database Service”: a service which provides a managed relational database in the cloud. RDS provides an easy and cost effective way to operate and scale a relational database. 7- Amazon RDS Multi-AZ: with multi availability zone mode, RDS provisions the database across two availability zones, a master database in one zone and a slave replica in another zone. A synchronous replication will be done between the master and the slave. 8- Amazon DynamoDB *: high performance, fully managed, NoSql database service, which has low latency where the average read is less than 5ms, and the average write is less than 10 ms. 9- Amazon CloudWatch *: a monitoring service for AWS resources like EC2 and RDS. CloudWatch gives metrics like CPU utilization, disk utilization, network utilization. It generates input metrics for another service called Auto Scaling. 10- Amazon Auto Scaling *: a service for scaling capacity up and down in an easy way, users can define scaling conditions or let Auto Scaling takes inputs from CloudWatch. 11- Amazon SQS “Simple Queue Service” *: this service is essential for designing loosely coupled components, it gives a highly scalable and available fault tolerant queue, which is used to tie different pieces of distributed systems together . 12- Amazon CloudFront *: a content delivery service for content distribution in low latency and high transfer speed. 13- Amazon ElastiCache *: this service is used to cache information in-memory to be fetched without database access Services marked with * are inherently highly available and fault tolerant, there is no need to worry about managing either the infrastructures or the services to make it highly available, scalable or fault tolerant. The non-marked services provide tools and features that enable the customer to choose the right mix between fault tolerance and cost. In case the customer needs to build a low cost application and does not care about scalability or vice versa, these services provide the required tools to setup such an application [28]. B. Reference Architecture for Highly Available and Scalable Web Application on Amazon Cloud “Fig. 2,” depicts the architecture of highly available and scalable web applications on Amazon cloud. The architecture is based on the one shown in “Fig. 1,”. “Fig. 2,” shows the web application installed in 2 regions, in region 1 the application is installed in 2 availability zones. Amazon Route 53 is used to balance the load between the regions. Amazon CloudFront is used for content caching to decrease fetching content latency. Amazon ELB is used to distribute the load between availability zones. The presentation tier in each region is a cluster of EC2 servers with auto scaling service to scale up and down. Amazon ELB is used to balance the load that comes from the presentation tier to the application tier. The application tier is also a cluster of EC2 servers with auto scaling service. Amazon RDS service is used for Relational Database. The RDS is under the Availability zone mode which makes a master database in one zone and a slave one in another zone with synchronous replication. Amazon CloudWatch service is used for monitoring EC2 servers and RDS database. Amazon ElasticCache service is used for caching to reduce the number of database requests. Amazon S3 is used to store static contents and to save scheduled database backups. The RDS slave replica in region 2 periodically gets the latest backup in S3 to serve in case of region failover. The architecture shown in “Fig. 2,” is a reference architecture for building a highly scalable and available web application. VII. BEST PRACTICES FOR BUILDING HIGHLY AVAILABLE AND SCALABLE CLOUD BASED WEB APPLICATION ON AMAZON CLOUD 1) Start with single region and multiple zones For start-up projects, entrepreneurs can consider building their application in one Region, but they should always ensure to do the installation in multiple availability zones. Many companies like Netflix stopped working because of an outage in an availability zone [16][22][25]. 2) Amazon RDS & DynamoDB multiple regions installations RDS Multi-AZ service allows having a master/slave architecture where the data is synchronously copied to the slave. This service is available in the multi availability zone within one region and cannot be configured for multi regions. Lately, Amazon has provided a new service for MySql RDS, which is Read Replica; this service allows the customer to have up to 5 regions read replicas of MySql RDS master database. These replicas are updated asynchronously. With Read Replica service, the application which is installed in multiple regions can perform read operations on a local database and redirect the write operation to the master database. In the case of having multiple regions intensive read applications it is advisable to enable Read Replicas on these regions [12]. In the case of facing a problem in multi regions intensive write application, multi master database solution should be considered. Stateless services are services that do not keep any memory about what happens between requests [9]. Managing the application state is the key for having a reliable and scalable system [13]. Stateless services allow the routing of the request to any available running one, which allow easy scalability by adding extra machines with running services. Atomic services are services with fine granularity, Atomic service functionality cannot be logically split into other services [9][25]. Idempotent services are services that can be called multiple times without affecting the outcome [10][25]. Atomic and idempotent services are keys for handling fault tolerance and scalability, they allow the client to safely call them multiple times until achieving the right results [10][25]. Fig . 2. Highly Available and Scalable Web Application Architecture on Amazon Cloud Developers can use third party software for that, like tungsten. As with the DynamoDB service, the current service allows the installation of DynamoDB nodes in multiple availability zones within a region but not multiple regions [12]. One solution recommended by Amazon is to use the Data Pipeline service to periodically move data between DynamoDB tables across regions in order to achieve read replicas. This solution is good for read intensive applications. In the case of slow write operations, developers should develop their own solutions. 3) Divide the application tier’s EC2 servers into multiple types One of the good practices is to divide the application tier EC2 servers into multiple types. For example, Type 1 responsible for providing services 1,2,3 and Type 2 for service 4,5,6 and so on. This will allow customizing EC2 instances, for example, powerful machines for intensive processing services and ordinary machines for normal services (This advice has been taken from multiple cloud architects). ELB service does not allow to write routing logic, in the case of dividing the application tier to multiple types, a load balancer should be dedicated for each type [12]. Alternatively, a third party load balancer can be considered, like Haproxy and Nginx. In the case of having ELB for each type of service, the routing logic should be in the presentation tier, using other load balancers like Haproxy allows moving of the routing logic from the presentation tier to the load balancer itself as it is a Layer 7 load balancer [2]. We do recommend moving this logic of routing from the presentation tier. 4) Use the service if it is available, don't build your own solution If Amazon provides a service that meets your needs, it is better to use this service and not build your own solution. This best practice is one of the benefits of cloud computing which allows moving the risk of administering and managing infrastructure to the cloud provider [3]. 5) Stateless, Atomic and Idempotent services are keys for scalability 6) Divide the application tier into 2 levels, atomic and aggregator. Usually the web application needs to call multiple Atomic services in order to get a response, dividing the application tier into 2 levels, one that provides atomic services and another for aggregating these services to get a composite response is one of good practices [13], also it is very important for the aggregating service to be stateless to ensure scalability. Amazon SWS (simple workflow service) can help in building aggregating services. 7) Asynchronous messaging Asynchronous messaging is a key to ensure loose coupling [9].The highly distributed structure of cloud applications makes using asynchronous messaging essential to design independent components [9][25]. Consider using Asynchronous messaging for services that need a long time to be executed, Amazon SQS is a good choice when it comes to Asynchronous messaging. 8) Keep dynamic data closer to the compute and static data closer to the end-user [33] It is a good practice to use CDN to store static data that does not change a lot; this leads to reducing users‟ access latency. Also, it is better to import data that needs processing to the cloud, this will reduce the processing time and cost because cloud providers charge for the used bandwidth. VIII. CASE STUDY This section introduces Did You Know Encyclopedia “DYKE” as a case study which is a cloud based web application that is implemented based on the introduced reference architecture and best practices. DYKE is an easy and direct way to find verified facts. An example of a fact written in DYKE is: Did you know that: #IMSE is an international master program that takes place in #Stuttgart_University, #Tilburg_University and #University_of_Crete. Pressing on the IMSE hash tag for example gives the user more facts about IMSE. Normal users can vote for each fact, they can emphasize whether the fact is true or not. DYKE also provides special user accounts for organizations, universities, companies etc. With this account they can confirm fact written about them. DYKE is implemented on Amazon cloud. As the budget is limited, the start will be with building the application in one region and 2 availability zones ( best practice 1). DYKE will use two data stores, the first one for handling users‟ information (Amazon MySql RDS database with Multiple Availability Zones mode). Another datastore is required to part. Each test was repeated 10 times and the average results were introduced. Tests were run on one availability zone and US-EAST-1C Region. Fig. 3. DYKE Architecture store all facts; a NoSql database is chosen to store the facts as a dramatic increase is expected in the number of the written facts and the number of the site visitors. Based on best practice 4, Amazon DynamoDB is chosen to store the facts. Based on best practice 3, the application tier is divided into three types: Type 1 provides services related to users; it includes all services that need to interact with the MySql RDS datastore ( Login, Change Information, Verify User etc. ). Type 2 provides services that are related to facts, it includes all services that need to interact with the DynamoDB datastore (Read fact, Edit fact, Vote for fact, etc. ). Type 3 provides services that need intensive processing; an example could be a service that provides all facts based on input (all facts about animals). Also based on best practice 3, Haproxy will be used to route requests between the presentation tier and the application tier. All the services are stateless, atomic and idempotent (best practice 5) this will allow the application to scale easily. For now best practice 6 is not implemented; the current design of stateless and atomic services will allow adding this layer later. Best practice 7 will be taken into consideration; part of the DYKE content will be imported from different places (books, web, current encyclopedias, etc.) all these data will be imported to the cloud for processing. Using CDN has been taken into consideration but not implemented in the current version of DYKE as it is a little bit expensive. For the Type 3 services asynchronous messaging is used (best practice 7), this will allow handling the request when the server is not busy. Processing results will be stored in Amazon S3. “Fig. 3,” Shows DYKE architecture. A. Testing DYKE Availability and Scalability A number of test cases were designed and ran on DYKE. These test cases were launched against the related application 1) Unhealthy Machine Detection Test The test starts with one ELB, 2 EC2 instances and 10 requests per second. During the test one of the EC2 machines will be turned off. The test checks how much time it takes to route all requests to the healthy machine. the test runs on the EC2 cluster Type A and uses Micro EC2 instances. Test results in “Fig. 4.a,” shows that between second 40 and 50 EC2 machine2 is turned off, and between second 50 and 70 the number of requests to the first machine starts increasing, so ELB detects the failed instance in an interval of 20 seconds. 2) EC2 Servers Auto Scaling Test The test starts with a few requests per minute, and then this number increases to make the CPU usage of the server more than 80%. The test checks how much time it takes to start new EC2 server. The test runs on the EC2 cluster Type A and uses Micro EC2 instances. The Database size is fixed with 100 million records. CloudWatch is set to trigger after 5 minutes of 80% CPU usage. “Fig. 4.b,” depicts the CPU consumption every 30 seconds. The first red circle indicates the time when the EC2 instance CPU becomes more than 80%, the second circle indicate the time when another EC2 instance starts. This test shows that the required time to launch a new instance is about 11 minutes, this includes 5 minutes for CloudWatch to trigger. Also the test shows how Auto Scale functionality of EC2 servers makes the application highly available and scalable. 3) MySql RDS Scalability and Availability Test. This test checks how much time it takes for MySql RDS to scale up. The test pings the database every second to check if it is up or not. During the test the RDS instance will be scaled from a small machine to a bigger one. MySQL RDS with Multi-AZ mode with 100 million records is used for this test. The scale will be from the small instance category to the large one. “Fig. 4.c,” shows the test results; the line shows if there is a response from the RDS database or not, where the value 1 means there is a response and 0 no response. The figure plots the value every 10 seconds. As it is shown from second 40 to 100 there is no response from the RDS database. According to [12] this is not the scale time, this is the failover time from the master to slave instance. When a user scales an RDS instance, Amazon firstly scales the Slave, then it does the failover (the downtime), and finally it scales the master. More advanced RDS benchmarking have been done by researchers, which shows the scalability of RDS [20]. 4) Other Tests Testing other parts of the DYNK was not easy to be performed in order to get accurate results, this is due to the cost related to these tests. Other researchers have done similar tests that support the availability and scalability of our architecture and Amazon Cloud in general. For example, SQS benchmark [21][23], Amazon S3[23], Amazon EC2 [17][21], RDS [20][21], DynamoDB [8] and ELB scalability [21][29] IX. CONCLUSION The results of our qualitative study indicates that the Fig. 4. Test Results architecture of an application on cloud is similar to the one implemented on machine based infrastructure. The case study and the test cases shows the scalability and availability of the reference architecture and Amazon cloud. The reference architecture can be used not only on Amazon Cloud but on all other cloud providers like Microsoft Azure. A limitation in resources prevented us from developing a full test suite to cover all aspects of scalability and availability. We believe that the designed test cases and the referenced research study which show detailed performance test cases are good indicators of the scalability and availability of our reference architecture. X. FUTURE WORK This paper does not address the security aspect in the reference architecture and the cloud in general, which is a huge topic that we will work on in our future study. Validating the reference architecture with more case studies is also part of our future work in order to give more value to the architecture, as well as designing more intensive and detailed test cases. REFERENCES A.Vakali, and G.Pallis, “Content delivery networks: status and trends,” IEEE Internet Computing, pp. 68-74, November-December 2003. [2] J. Elson and J. Howell, “Handling flash crowds from your garage,” In USENIX 2008 Annual Technical Conference (ATC ‟08), pages 171– 184, Berkeley, CA, USA, USENIX Association , 2008. [3] M. Armbrust, A. Fox, R. Griffith, A. Joseph, R. Katz, A. Konwinski, G. Lee, D. Patterson, A. Rabkin, I. Stoica, M. Zaharia, “Above the clouds: a berkeley view of cloud computing,” University of California at Berkley, USA , Feb 2009. [4] X. Xu, “From cloud computing to cloud manufacturing,” Robotics and computer integrated manufacturing, 28(1), 75-86 , 2012. [5] C. Henderson, “Building scalable web Sites,” Sebastopol, CA: O'Reilly, 2006. Print. [6] M. Papazoglou, and P. Ribbers, “E-business: organizational and technical foundations,” Chichester, England: John Wiley, 2006. [7] Amazon case studies http://aws.amazon.com/solutions/case-studies [8] S. Müller, D. Bermbach, S. Tai, and F. Pallas, “Benchmarking the performance impact of transport layer security in cloud database systems,” IEEE International Conference on Cloud Engineering, 2014. [9] M. Papazoglou, “Web services: principles and technology,” Harlow, England: Pearson/Prentice Hall, 2008. Print. [10] G. Ramalingam and K. Vaswani, “Fault tolerance via idempotence,” In Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL ‟13, pages 249–262, New York, NY, USA, 2013. [11] J. Gray, "Distributed computing economics," ACM Queue, vol. 6, pp. 63-68, 2008. [12] Amazon AWS http://aws.amazon.com/ [1] [13] G. Decandia, D. Hastorun, M. Jampani, G. Kakulapati, A. Lakshman, A. Pilchin, S. Sivasubramanian, P. Vosshall and W. Vogels, “Dynamo: Amazon‟s highly available key-value store,” In Proceedings of twentyfirst ACM SIGOPS symposium on Operating systems principles (2007), ACM Press New York, NY, USA, pp. 205–220. [14] Q. Luo , S. Krishnamurthy , C. Mohan , H. Pirahesh , H. Woo , B. Lindsay , and J. Naughton, “Middle-tier database caching for ebusiness,” Proceedings of the 2002 ACM SIGMOD international conference on Management of data , Madison, Wisconsin, June 2002. [15] H. Jiang, A. Iyengar, E. Nahum, W. Segmuller, A. Tantawi, and C. Wright, “Design, implementation, and performance of a load balancer for SIP server clusters,” Huazhong University of Science and Technology, IBM T.J. Watson Research Center. [16] S. Anand, “Netflix‟s cloud data architecture,” QCon, 2011. [17] P. Coffey, J. Beliveau, N. Mogre, A. Harner, “Benchmarking the Amazon Elastic Compute Cloud (EC2),” Worcester Polytechnic Institute ( March 2011). [18] B. Adler, “Building scalable applications in the cloud: architectural best practices,” RIGHT SCALE, White paper, February 2013. [19] S. Anand, “Building modern web sites: a story of scalability and availability,” QCon, 2013. [20] G. Burke, “Benchmarking Amazon web services relational database service,” MSc research paper, Galway Institute of Technology, 2012. [21] B. Uddin, B. He, R.Sion, S. Sanghrajka, N. Mahajan, “Cloud performance Benchmark series,” Cloud Computing Center, Stony Brook University, 2012. [22] A. Cockcroft, “Architectural patterns for high availability” QCon, 2013 [23] H. Yoon, A. Gavrilovska, K. Schwan and J. Donahue, “Interactive use of cloud services:Amazon SQS and S3,” 12th IEEE ACM International Symposium on Cluster, Cloud and Grid Computing, 2012. [24] J. Cloud, “Decomposing witter: adventures in Service-Oriented Architecture,” QConm 2013. [25] B. Jimerson, “Software architecture for high availability in the cloud”, Oracle Technology Network , June 2012. [26] Y. Nelapati, M. Weiner, “Scaling Pinterest,” QCon, 2013. [27] S. Gribble, E. Brewer, J. Hellerstein, and D. Culler, “Scalable, distributed data structures for Internet service construction,” In Proceedings of the Fourth Symposium on Operating Systems Design and Implementation, October 2000. [28] A. Narin , “Architecting for high availability,” QCon, 2013. [29] T. Eicken, “Benchmarking load balancers in the cloud,” RIGHT SCALE, White paper, April 2010. [30] “Building high availability applications on Google Compute Engine,” Google Article. [31] S. Rajan, “Why cloud is a boon for entrepreneurs”. Silicon India Cloud City. [32] T. Ganesh, “Designing a scalable architecture for the cloud,” IBM, June 2012. [33] J. Varia, “Architecting for the cloud: best practices,” Amazon white paper, January 2010.