Cloud computing is the notion of abstracting and outsourcing hardware or software resources over the Internet, often to a third party on a pay-as-you-go basis. This emerging concept is sometimes claimed to represent a completely new paradigm, with disruptive effects on our means of viewing and accessing computational resources.
In this thesis, we investigate the state-of-the-art of cloud computing with the aim of providing a clear understanding of the opportunities present in cloud computing, along with knowledge about the limitations and challenges in designing systems for cloud environments. We argue that this knowledge is essential for potential adopters, yet is not readily available due to the confusion currently surrounding cloud computing.
Our findings reveal that challenges associated with hosting systems in cloud environments include increased latency due to longer network distances, limited bandwidth since packets must cross the Internet to reach the cloud, as well as reduced portability because cloud environments are currently lacking standardization. Additionally, systems must be designed in a loosely coupled and fault-tolerant way to fully exploit the dynamic features of cloud computing, meaning that existing applications might require significant modification before being able to fully utilize a cloud environment. These challenges also restrict some systems from being suitable for running in the cloud.
Furthermore, we have implemented a prototype in Amazon EC2 to investigate the feasibility of moving an enterprise search service to a cloud environment. We base the feasibility of our approach on measurements of response time, bandwidth and scalability. We conclude that our cloud-based search service is feasible due to its opportunities for implementing dynamic scaling and reducing local infrastructure in a novel fashion.