Cloud computing: the state of the art and challenges Jānis Kampars Riga Technical University
Presentation structure Enabling technologies Cloud computing defined Dealing with load in cloud computing Service & deployment models Architecting applications for the cloud Challenges
Enabling technologies Utility computing Distributed computing Service oriented architecture Virtualization Autonomic computing
Utility computing A business model more than a technology No need to build data centers, purchase licenses, servers No up-front expenses Rent the service provided by 3rd party ~1961, John McCarthy, American scientist said: «If computers of the kind I have advocated become the computers of the future, then computing may someday be organized as a public utility, just as the telephone system...»
Electricity supply Nicholas Carr, 2006. In 1900s most factories had private generators Technological evolution made central supply a reality Private generators were abandoned in favor of central supply Computing shows a similar trend today
Distributed computing Uses multiple independent components that are perceived as a single entity and are trying to achieve one global goal Allow to share and utilize resources efficiently Clusters ~1980 Power of commodity machines combined to solve complex problems Underutilized Grids ~1990 Evolution of cluster computing Dynamic aggregation of geographically dispersed heterogeneous computing nodes SETI (Search for Extraterrestrial Intelligence) has more than 5 million users QoS is an issue
Service oriented architecture Build applications (mashups) from services Characteristics of a web service Platform-agnostic use them from anywhere Implementation abstraction Self-describing Loosely coupled and reusable QoS response time, availability, scalability Most popular WS architectural styles Representation state transfer (REST) Easier to implement Less limiting for developers Simple Object Access protocol (SOAP) Well standardized - Web Service Description Language (WSDL), WS-Security, WS* More complex to implement
Virtualization Virtual machine Virtual machine Virtual machine Application OS Application OS Application OS Hypervisor Hardware
Advantages of virtualization Run multiple OS on a single server High level server utilization Most traditional servers are only 15% loaded Improve energy efficiency, reduced carbon emissions Efficient network-attached storage usage Thin provisioning VMs are provisioned in much less time Isolation & mobility Applications can be isolated in VMs Failure of one virtual machine doesn t affect others Easily move VMs from one server to another
Autonomic computing Systems should manage themselves (with high-level guidance from humans) Monitoring probes Adaption engine Features of autonomic system Self-configuration Self-optimization Self-healing Self-protection Very important for large data center automation
Cloud computing defined (I) Often confused with previously mentioned technologies, although it s a broader term Definition by NIST: Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction
Cloud computing defined (II) Definition by Buyya et al.: A cloud is a type of parallel and distributed system consisting of a collection of interconnected and virtualized computers that are dynamically provisioned and presented as one or more unified computing resources based on service-level agreements established through negotiation between the service provider and consumers.
Characteristics of CC Cloud provider & cloud consumer Service-level agreements (SLA) On demand self-service acquire the resources through management interface Ubiquitous access as far as you are connected to Internet, you can use your cloud resources, data centers located in many countries Resource pooling millions of concurrent users can be supported (Skype - 60 millions) Rapid elasticity scale up or down when required in a matter of minutes Metered service pay-per-use (Salesforce, AWS)
CC general architecture Virtual Virtual machine machine Virtual machine Virtual machine Virtual machine Virtual machine Virtual machine Virtual machine Virtual machine Application OS Application OS Application OS Hypervisor Hypervisor Hypervisor Hardware Hardware Hardware Cloud Computing platform
Dealing with varying load - traditional approach Computing power Losses due to dropped requests Initial power Underutilized resources Available power Power surplus Power shortage Actual number of requests Time
Dealing with varying load CC approach Scale-down when needed Computing power Start small (>=2 nodes) Computing power Number of requests Scale-up in small steps Initial power Time
Load Load Load Load Most suitable load scenarios Periodic with possible downtime Modeling software, sending out the newsletter Periodic Submission of annual income declaration Time Time Continiously changing Continiously growing web site Unpredictable 11. September and CNN news page Time Time
CC service models Cloud services can categorized as Infrastructure as a Service (IaaS) Platform as a Service (PaaS) Software as a Service (SaaS)
IaaS Virtualized resources Most common of all service models On-demand provisioning (based on load) Almost any system can be deployed in IaaS (at least using a single node) Pay-per-use (based resource size and uptime) Hardware managed by provider OS and programs managed by consumer Examples disk space, virtual machines Examples Dropbox, AWS Target audience administrators, developers
PaaS A platform used to deploy applications Virtual machine might be still used Not all systems can be deployed using PaaS Already available components like persistent file storage, database, load balancers and queues are provided Limited options to choose programing language and development environment Vendor lock-in HW, OS, runtime managed by provider Software managed by consumer Examples Google App Engine Target audience - developers
SaaS A software deployed in the cloud Typically accessible through browser or thin client Charged based on number of users Provider manages HW, OS, runtime and application Examples Office 365, Salesforce, Adobe Creative Cloud Target audience - users
CC Deployment models (I) Private cloud CC infrastructure built for a single enterprise Next step of evolution of corporate data center Community cloud Infrastructure shared by similar organizations (government, universities)
CC Deployment models (II) Public cloud CC infrastructure publicly available Easy to develop and deploy apps Hybrid cloud A mix of above mentioned models Non-crucial parts are deployed to public cloud, while most critical ones are in private cloud Cloud bursting when reaching certain load threshold, requests are served by public cloud
Architectural differences Self-hosted traditional application Cloud native application deployed in AWS
Self-hosted application AWS
Cloud-hosted application AWS
Challenges (I) IaaS how many resources to provision and for how long Security infrastructure for data processing is owned by someone else Legal issues data storage location and jurisdiction You might be asked to store data in your country, but where will the data end up? How can U.S. enforcer get data from U.S. Company that stores it in EU based cloud?
Challenges (II) Development of cloud native applications and migration of existing ones to the cloud Stateless nodes Distributed computing Compatibility between different cloud providers Cloud Computing Interoperability Forum (CCIF) works on Unified Cloud Interface (UCI) Open Virtual Format (OVF) packaging of virtual machine (virtual applicances)