Cloud computing or simply the cloud is the next generation of information technology and probably the most thriving area of research and development these days. Even the word 'cloud' has blended into our colloquial terminology as nearly all modern – professional, commercial, business, social, entertainment – services available on the Internet utilize the powers of cloud computing. The field is continuously evolving; only the common characteristics and basic service types are defined. It constitutes a paradigm shift that requires a different attitude from development and maintenance experts but is transparent to end users. Cloud computing provides practically unlimited, highly reliable and resilient resource pools for shared usage among numerous consumers in a usage-based billing system. The offered service models range from entirely virtualized, multi-layer infrastructures to simple, customizable workflow support applications. Besides a few mammoth providers offering a wide selection of cloud services, small pioneers are coming forward successfully by providing unique, specialized or hybrid solutions. The only barriers of further spreading are the privacy and data security concerns; however these are constantly fading because of the strict guarantees and standards that providers adopt. The appealing characteristics of the cloud such as infinite capacity, elasticity, high availability from various client platforms, the ease of setup and administration or the reduced initial costs and steady, calculable operation costs make the cloud a strong alternative to traditional hosting.
The focus of this thesis is dynamic scaling, one of the most remarkable cloud features. An automatically scaled cloud infrastructure or cloud application ensures that the amount of reserved resources is always sufficient to keep up a certain service level while optimizing costs by avoiding over-provisioning. But scaling makes it possible to react automatically to demand changes without any human intervention. Scaling services can dynamically change the size of the cloudware based on pre-configured rules in response to load swings. It must be noted that designing and developing cloud applications built for scale require an unconventional approach and techniques.
My thesis intends to provide the reader with a thorough introduction into the world of cloud computing by way of describing both its theoretical background and practical usage. I present the main details and available services of the two currently dominant cloud providers, Amazon Web Services and Windows Azure, emphasizing their scaling solutions with an extensive technical documentation section. I lead the reader through the reflective design and implementation process of two different cloud applications that comply with the special cloud design principles. The knowledge gained of scaling services is then being put into practice by setting up and configuring dynamic scaling for the demonstration applications. I go through the necessary steps and actual tasks of configuration and maintenance of scaling solutions on two platforms. The performance monitoring sections intend to give an insight into the experiments and a deeper understanding of scaling behavior.
My goal is to create a mostly practical thesis on the paradigm of cloud computing through the described case studies that can serve as a reference on the two cloud platforms and the available scaling solutions from a developer and administrational aspect.