An Introduction to the CloudCloud Computing and a look at Windows AzureHarbinder Singh
What is a CloudWikipediaA cloud is a visible mass of droplets, in other words, little drops of water orfrozen crystals suspended in the atmosphere above the surface of the Earthor another planetary body.On Earth the condensing substance is typically water vapor, which formssmall droplets or ice crystals, typically 0.01 mm (0.00039 in) in diameter.When surrounded by billions of other droplets or crystals they becomevisible as clouds.
Cloud Computing CharacteristicsWikipediaCloud computing is Internet-based computing, whereby shared resources,software and information are provided to computers and other devices on-demand, like the electricity grid.Cloud CharacteristicsA cloud service has three distinct characteristics that differentiate it fromtraditional hosting.It is sold on demand, typically by the minute or the hour;it is elastic -- a user can have as much or as little of a service as they wantat any given time;and the service is fully managed by the provider (the consumer needsnothing but a personal computer and Internet access).
Common Cloud FeaturesCloud computing leverages the following: Massive scale Homogeneity Virtualization Resilient computing Low cost software Geographic distribution Service orientation Advanced security technologies
4 Cloud Deployment ModelsPrivate cloud Enterprise owned or leased : The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise. Community cloud Shared infrastructure for specific community: The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise.Public cloud Sold to the public, mega-scale infrastructure : The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.Hybrid cloud Composition of two or more clouds: The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting).
3 Cloud Service ModelsCloud Software as a Service (SaaS) Use provider’s applications over a networkCloud Platform as a Service (PaaS)Deploy customer-created applications to a cloud – providers estateRent processing, storage, network capacity, and other fundamental computingresourcesCloud Infrastructure as a Service (IaaS)Rent processing, storage, network capacity, and other fundamental computingresources from the ProviderTo be considered “cloud” they must be deployed on top of cloud infrastructure thathas the key characteristics
SAAS – Software as a ServiceSoftware as a Service (SaaS). The capability provided to the consumer is to usethe provider’s applications running on a cloud infrastructure and accessible fromvarious client devices through a thin client interface such as a Web browser (e.g.,web-based email). The consumer does not manage or control the underlying cloudinfrastructure, network, servers, operating systems, storage, or even individualapplication capabilities, with the possible exception of limited user-specificapplication configuration settings.In the software-as-a-service cloud model, the vendor supplies the hardwareinfrastructure, the software product and interacts with the user through a front-endportal. SaaS is a very broad market. Services can be anything from Web-basedemail to inventory control and database processing. Because the service providerhosts both the application and the data, the end user is free to use the service fromanywhere.
PAAS – Platform as a ServicePlatform as a Service (PaaS). The capability provided to the consumer is to deployonto the cloud infrastructure consumer-created applications using programminglanguages and tools supported by the provider (e.g., java, python, .Net). Theconsumer does not manage or control the underlying cloud infrastructure, network,servers, operating systems, or storage, but the consumer has control over thedeployed applications and possibly application hosting environment configurations.Platform-as-a-service in the cloud is defined as a set of software and productdevelopment tools hosted on the providers infrastructure. Developers createapplications on the providers platform over the Internet. PaaS providers may useAPIs, website portals or gateway software installed on the customers computer.Force.com, (an outgrowth of Salesforce.com) and GoogleApps are examples ofPaaS. Developers need to know that currently, there are not standards forinteroperability or data portability in the cloud. Some providers will not allow softwarecreated by their customers to be moved off the providers platform.
IAAS – Infrastructure as a ServiceInfrastructure as a Service (IaaS). The capability provided to the consumer is toprovision processing, storage, networks, and other fundamental computing resourceswhere the consumer is able to deploy and run arbitrary software, which can includeoperating systems and applications. The consumer does not manage or control theunderlying cloud infrastructure but has control over operating systems, storage,deployed applications, and possibly select networking components (e.g., firewalls,load balancers).Infrastructure-as-a-Service like Amazon Web Services provides virtual serverinstances with unique IP addresses and blocks of storage on demand. Customersuse the providers application program interface (API) to start, stop, access andconfigure their virtual servers and storage. In the enterprise, cloud computing allowsa company to pay for only as much capacity as is needed, and bring more online assoon as required. Because this pay-for-what-you-use model resembles the wayelectricity, fuel and water are consumed, its sometimes referred to as utilitycomputing.
Business Benefits of Cloud ArchitecturesThere are some clear business benefits to building applicationsusing Cloud Architectures as broadly stated below: Almost zero upfront infrastructure investment: Just-in-time Infrastructure: More efficient resource utilization: Usage-based costing: Potential for shrinking the processing time
What is Driving Cloud Computing? Customer Perspective • Economics • Faster, simpler, cheaper to use cloud apps • No upfront capital required for servers and storage • No ongoing operational expenses for running datacenter • Applications can be accessed from anywhere, anytime Vendor Perspective • Easier for application vendors to reach new customers • Lowest cost way of delivering and supporting applications • Ability to use commodity server and storage hardware • Ability to drive down data center operational cots • In one word: economics
What are the Barriers to Cloud Computing?Customer Perspective1 Data Security • Many customers don’t wish to trust their data to “the cloud” • Data must be locally retained for regulatory reasons2 Latency • The cloud can be many milliseconds away • Not suitable for real-time applications3 Application Availability • Cannot switch from existing legacy applications • Equivalent cloud applications do not existVendor Perspective1 Service Level Agreements • What if something goes wrong? • What is the true cost of providing SLAs?2 Business Models • SaaS/PaaS models are challenging • Much lower upfront revenue3 Customer Lock-in • Customers want open/standard APIs • Need to continuously add value
General Security Advantages and DisadvantagesGeneral Security AdvantagesShifting public data to a external cloud reduces the exposureof the internal sensitive data Cloud homogeneity makes security auditing/testing simpler Clouds enable automated security management Redundancy / Disaster RecoveryGeneral Security Challenges Trusting vendor’s security model Customer inability to respond to audit findings Obtaining support for investigations Indirect administrator accountability Proprietary implementations can’t be examined Loss of physical control
Cloud CriticismsWhats Wrong with Cloud computing No control of your data Its just as bad as using a proprietary program Vendor can hold both your data and program functionality Hostage What do the terms of service say?Terms of Service[XYZ Company] makes no representation, warranty, orguaranty as to the reliability, timeliness, quality, suitability, truth,availability, accuracy or completeness of [its cloudcomputing service].Quote “The interesting thing about cloud computing is that we’ve redefinedcloud computing to include everything that we already do... Thecomputer industry is the only industry that is more fashion-driven thanwomen’s fashion. .. It’s complete gibberish. It’s insane. When is thisidiocy going to stop? - Larry Ellison, CEO Oracle
Amazon Cloud ArchitectureAmazon cloud components Elastic Compute Cloud (EC2) Simple Storage Service (S3) SimpleDBNew Features Availability zones Place applications in multiple locations for failovers Elastic IP addresses Static IP addresses that can be dynamically remapped to point to different instances (not a DNS change)Linux based virtual machines1.7Ghz x86 processor1.75GB of RAM160GB of local disk250Mb/s of network bandwidth$0.10 per hour per machine + bandwidth
Google / IBM Architectures“Google and IBM plan to roll out a worldwide network of servers for a cloudcomputing infrastructure” – Infoworld - Initiatives for universitiesArchitectureOpen sourceLinux hostsXen virtualization (virtual machine monitor)Apache Hadoop (file system)“open-source softwarefor reliable, scalable, distributed computing”IBM Tivoli Provisioning ManagerGoogle Cloud ServicesAs SaaS it offers Google Apps: a web-based communication, collaboration &security apps which includes, Gmail, Google Calendar, Google Talk, GoogleDocs & Google Sites. 15 Sep 2009, Google announced that it will provideGovCloud, which will host Google Apps in a separate data environment withenhanced encryption for meeting state and government security standards.As PaaS it offers Google App Engine: a platform for developing and hostingweb applications in Google-managed data centers. Currently, the supportedprogramming languages are Python and Java (by extension other JVMlanguages are also supported).
Microsoft Cloud ArchitectureThere are some clear business benefits to building applicationsusing Cloud Architectures. A few of these are listed here:
Windows Azure @MicrosoftPresentation•ASP.NET C#, PHP, Java•Distributed in-memory cacheServices• .NET C#, Java, native code• Distributed in-memory cache• Asynchronous processes• Distributed parallel processes• Transient file storageConnectivity• Message queues• Service orchestrations• Identity federation SERVICE ACCESS WORK BUS CONTROL FLOWS• Claims-based access control• External services connectivityS•Relational & transactional data•Federated databases•Unstructured, de-normalized data
Microsoft Cloud @: Microsoft~100 Globally Distributed Data CentersQuincy, WA Chicago, IL San Antonio, TX Dublin, Ireland Generation 4 DCs
Windows Azure Platform Personal Application InformationApplication Services Data Marketplace Marketplace Repository Services Workflow DistributedFrameworks Hosting Hosting Cache Secure Claims- Declarative FederatedSecurity Token Policies Based Identities Service Identity Composite On-PremiseConnectivity Service Bus Applications Bridging Relational ADO.NET, Transact- DataData Database ODBC, PHP SQL Synchronizatio nCompute Unstructure Message Distributed ContentStorage d Data Blobs Queues Filesystem Distribution
Windows Azure Platform ComponentsThe components of the Windows Azure platform are: Windows Azure: Provides a Windows-based environment for runningapplications and storing data on servers in Microsoft data centers. SQL Azure: Provides data services in the cloud based on SQL Server. Windows Azure platform AppFabric: Provides cloud services forconnecting applications running in the cloud or on premises.
Windows AzureWhatever a Windows Azure application does, the platform itself provides the samefundamental components, as Figure 2 shows.Windows Azure has three main parts: the Compute service, the Storage service, and theFabric.• As their names suggest, the Compute service runs applications• The Storage service stores data.• The third component, the Windows Azure Fabric, provides a common way to manageand monitor applications that use this cloud platform.
Windows AzureWindows Azure runs on a large number of machines, all located in Microsoftdata centers and accessible via the Internet. A common Windows Azure fabric connects all the processing power into aunified whole. Windows Azure compute and storage services are built on top of this fabric. The Windows Azure compute service is based on Windows. Developers canbuild applications using the .NET Framework, unmanaged code, or otherapproaches written in various languages, such as C#, Visual Basic, C++, andJava. Developers can create Web applications, using technologies such asASP.NET, Windows Communication Foundation (WCF), and PHP, applicationsthat run as independent background processes, or applications that combine thetwo. Both Windows Azure applications and on-premises applications can access theWindows Azure storage service, and both do it in the same way: using aRESTful approach. This service allows storing binary large objects (blobs),provides queues for communication between components of Windows Azureapplications, and even offers a form of tables with a simple query language. Forapplications that need traditional relational storage, the Windows Azure platformprovides SQL Azure Database. An application using the Windows Azure platformis free to use any combination of these storage options
Windows AzureOn Windows Azure, an application typically has multiple instances, eachrunning a copy of all or part of the application’s code. Each of these instancesruns in its own Windows virtual machine (VM). These VMs are provided by ahypervisor that’s specifically designed for use in the cloud.Windows Azure applications can consist of Web role instances and Worker roleinstances, with each instance running in its own virtual machine. A Web role instance accepts incoming HTTP (or HTTPS) requests viaInternet Information Services (IIS) 7. A Web role can be implemented usingASP.NET, WCF, or another technology that works with IIS.Web roles are intended to accept and process HTTP requests using IIS.In addition for non web application logic, Windows Azure provides Workerroles. A Worker role instance is quite similar to a Web role instance. The keydifference is that a Worker role doesn’t have IIS preconfigured to run in eachinstance, and so unlike Web roles, Worker role instances aren’t hosted in IIS. AWorker role can still accept requests from the outside world, however, anddevelopers can even run another Web server, such as Apache, in a Workerrole instance.
Windows AzureWorker role instances can communicate with Web role instances in variousways like :Windows Azure storage queues.Worker roles and Web roles set up direct connections via WCF or anothertechnology.Each VM also contains a Windows Azure agent that allows the application tointeract with the Windows Azure fabric
Windows Azure Storage The simplest way to store data in Windows Azure storage is to use Blobs. Astorage account can have one or more containers, each of which holds one ormore blobs. Blobs can be big—potentially as large as a terabyte eachAnother way to use blobs is through Windows Azure XDrives, which can bemounted by a Web role instance or Worker role instance. Windows Azure storage also provides Tables. These aren’t relational tables.Here the data is actually stored in a set of entities with properties. A table hasno defined schema; instead, properties can have various types, such as int,string, Bool, or DateTime. Instead of using SQL, an application can access atable’s data using ADO.NET Data Services or LINQ. A single table can be quitelarge, with billions of entities holding terabytes of data, and Windows Azurestorage can partition it across many servers if necessary to improveperformance. The third option in Windows Azure storage, is queues, used to provide a wayfor Web role instances to communicate with Worker role instances. This ismore like a message queue.
SQL AzureSQL Azure Database provides a cloud-based database management system(DBMS). This technology lets on-premises and cloud applications storerelational and other types of data on Microsoft servers in Microsoft datacenters. SQL Azure Database is built on Microsoft SQL Server. This technology offersa SQL Server environment in the cloud, complete with indexes, views, storedprocedures, triggers, and more. The data can be accessed using ADO.NET and other Windows data accessinterfaces, ODBC, etc. Applications that access SQL Server locally will largelywork unchanged with data in SQL Azure Database. Customers can also use on-premises software such as SQL Server ReportingServices to work with their cloud-based data. This service an application gets is more robust than what a single instance ofSQL Server provides. All data stored in SQL Azure Database is replicated three times. Also likeWindows Azure storage, the service provides strong consistency: When a writereturns, the data has been made persistent
SQL Azure Database @Microsoft Relational database service Browser SQL Azure Database (Windows Azure Compute) • SQL Server technology foundationSOAP/REST Astoria/REST - EDM • Highly symmetrical HTTP/S HTTP/S • Highly scaled App Code Database “as a Service” – beyond hosting (ASP.NET) SQL Server Reporting Server Windows Azure (on-premises) Customer Value Props ComputeT-SQL (TDS) Self-provisioning and capacity on demand T-SQL (TDS) Symmetry w/ on-premises database platform SQL Azure Automatic high-availability and fault-tolerance Database MS Datacenter Automated DB maintenance (infrastructure) Simple, flexible pricing – “pay as you grow” - AD Federation (LiveId /.Net Svcs ACS)
App FabricThe functions provided by AppFabric today address common infrastructurechallenges in connecting distributed applications.The components of Windows Azure platform AppFabric are:Service Bus: Exposing an application’s services on the Internet is harder thanit might seem. The goal of Service Bus is to make this simpler by letting anapplication expose endpoints that can be accessed by other applications,whether on-premises or in the cloud. Each exposed endpoint is assigned aURI, which clients can use to locate and access the service. Service Bus alsohandles the challenges of dealing with network address translation and gettingthrough firewalls without opening new ports for exposed applications. Access Control: This service allows a RESTful client application toauthenticate itself and to provide a server application with identity information.The server can then use this information to decide what this application isallowed to do.
The FabricAll Windows Azure applications and all of the data in Windows Azure Storageresides in some Microsoft data center. Within that data center, the set ofmachines dedicated to Windows Azure is organized into a fabric.The Windows Azure Fabric consists of a (large) group of machines, all of whichare managed by software called the fabric controller. The fabric controller isreplicated across a group of five to seven machines, and it owns all of theresources in the fabric: computers, switches, load balancers, and more.Fabric VM ChoicesIn the first release of Windows Azure, the fabric offers four VM sizes fordevelopers to choose from. The options are: Small, with a single-core 1.6 GHz CPU, 1.75 GB of memory, and 225 GB ofinstance storage Medium, with a dual-core 1.6 GHz CPU, 3.5 GB of memory, and 490 GB ofinstance storage Large, with a four-core 1.6 GHz CPU, 7 GB of memory, and 1,000 GB ofinstance storage Extra large, with a eight-core 1.6 GHz CPU, 14 GB of memory, and 2,040 GBof instance storage
Windows Azure Benefits @ MicrosoftAlmost zero upfront infrastructure investment:Just-in-time Infrastructure:More efficient resource utilization:Usage-based costing: ring your ideas to market faster and pay as you go Reduce costs of building and extending on-premises resources Reduce the effort and costs of IT management Respond quickly to changes in your business and customer needs Choose an on-premises or off-premises deployment model that best suitsyour needs. Scale your IT resources up and down based on your needs. Consume computing resources ONLY when the needs arise. Focus less energy on managing operational resources and constraints. Remove the need to manage hardware Use your existing development skills to build cloud applications Consistent development and management experience across on-premisesand the cloud.
References Effectively and Securely Using the Cloud Computing Paradigm Cloud Computing – IBM http://www.microsoft.com/windowsazure/windowsazure/ Introducing the Windows Azure Platform: David Chappell Microsoft Cloud Computing : David Chou Cloud Computing: A Greater Threat to Freedom than Proprietary Software? http://msdn.microsoft.com/en-us/azure/cc994380.aspx