If you are developing a simple app, implementing an algorithm to analyze a given data series, then you probably won’t need too much HW or SW resources. However, if your app has to use a database, and/or needs to access an LDAP directory, and/or interact with cellular wireless network access point, etc., then your development environment HW+SW cost could go up substantially. For a large enterprise, the data center run by the IT department can host the development environment with a charge back to the department that is developing the app. For Small and Medium Businesses (SMB) the data center and IT staff may not make economical sense and hosted development environment may be the most cost-effective solution.
All mission critical enterprise applications have to meet certain usability criteria such as response time and availability including recovery from disaster (e.g., the entire data center becomes inoperable due to a disaster). Testing to make sure that these usability metrics are satisfied requires simulating the workload and various faults, which in turn requires a lot of hardware and software that may not make sense for Small and medium businesses.
If the enterprise application is deployed in its own data center, then the cost of hardware, software, and IT personnel could become very high. This may not be cost-effective for SMBs.
“ Server utilization, especially in x86 environments, is often at the low end of the performance range, averaging between 7% and 15% in many organizations today. One of the key drivers for virtualization has been to improve these performance levels, driving servers up towards 60%-70% average utilization” -- Data Center Efficiency – Beyond PUE and DCiE, by Dave Cappuccio, February 15, 2009, Gartner.
What is Cloud Computing?
One of the areas of confusion is the definition of Cloud Computing. There are many definitions of Cloud Computing out there. Here is one of them that seems to represent the most commonly held view. It’s from the National Institute of Standards and Technology (NIST) and seems to be gaining in popularity, not only in the US, but also the rest of the world as well. The definition is essentially about “on-demand access to a shared pool of computing resources.” Breaking it down, cloud computing is composed of: 5 essential characteristics 3 service models 4 deployment models The 5 essential characteristics are key: On demand self-service – provisioning, monitoring, management control Broad network access – typically means access through a browser on any networked device Resource pooling – implies sharing and a level of abstraction between consumers and services Rapid elasticity – the ability to quickly scale up/down as needed Measured service – metering utilization for either internal chargeback (private cloud) or external billing (public cloud) I’ll cover the 5 characteristics, 3 service models and 4 deployment models on the next few slides.
This slide has animations/builds. We believe that enterprises are on a JOURNEY to cloud computing. Most will EVOLVE their current IT infrastructure to become more “cloud-like” – to become a better internal service provider to the lines of business, BUs, departments – to provide greater agility and responsiveness to business needs, higher quality of service in terms of latency & availability, and lower costs and higher utilization. This evolution will take time. Not only is the available technology evolving and advancing, but enterprises are also working on the new policies and processes needed. In many cases, the technical building blocks for cloud computing are available in advance of enterprise readiness, so we think that enterprises will evolve towards the right at different rates. The first step that many enterprises are taking is to move from a “Silo’ed” environment to a “Grid” or virtualized environment –moving from a dedicated, rigid, physical structure for each application to a virtual environment with shared services, dynamic provisioning and standardized configurations or appliances. This trend is very strong right now. Many enterprises are leveraging Grid and virtualization technologies to consolidate and reduce costs. [CLICK] From here, enterprises can evolve to a self-service and pay-per-use environment, similar to how Amazon works. A user goes to the employee portal, signs in, makes a request for a virtual machine(s) with a certain amount of CPU, memory and disk, picks a VM image for database or middleware, then clicks “submit.” If that employee’s role and entitlements allow him to have that amount of IT resource, then it auto-magically gets provisioned without an IT person being involved. If not, perhaps his request gets routed to his manager and/or IT for workflow approval. In 10 minutes, they are up and running with a full “private PaaS.” After he deploys the app, the system has policy-based resource management to automatically make capacity adjustments, and the employee’s business unit gets an internal charge every month based on how much IT resources they consumed. To make all that happen, the enterprise must have policies and processes defined, and the technology must be able to support it.
Why do we need Cloud Computing?
Before Virtualization: Two physical machines for App1 and two for App2 (why do we need 2?). Each using less than half of the compute resources. After Virtulization: Three physical machines each running both App1 and App2. These apps are isolated by virtualization technology and can run on different OS/platforms and can listen on the same port. The availability characteristic is also better (why?)
Now lets take a look at the new world of platform environments – PaaS. The new PaaS lifecycle has four macro-level steps. First, the central IT function sets up the cloud platform, starting with out-of-the-box cloud platform and creating the enterprise-specific shared components and self-service interface. Once the basic platform is up and running, the application developers within the enterprise’s departments can set up their respective applications. Again, depending on the nature of the domain and enterprise, this may involve fairly simple application composition using platform components, or it may involve a substantial amount of custom application development. Once an application has been deployed on the platform, the third step is simply the use of the application. From the application users’ perspective, the application is no different from any other network/Web-based application they would use within the enterprise—there is nothing special about the fact that it’s running on a cloud platform as far as they are concerned. Finally, there is of course ongoing administration of the application, which is carried out by the application owners. Depending on the nature of the applications, the application owners will carry out some amount of user administration, such as adding and removing users or other high-level functions specific to the application. Application owner is also concerned with lower-level issues such as whether the application is resourced appropriately, is meeting its service-level agreements (SLAs), etc. One of the goals in setting up shared infrastructure in general and private cloud in particular is to exploit as many economies of scale and opportunities for efficiency as possible. Among these is the opportunity to automate dynamic resource allocation and optimization, enabling the elastic capacity that characterizes cloud. This also enables the continuously high responsiveness demanded by users irrespective of load and minimizes manual intervention.
This presentation reflects my own
view on cloud computing and does not necessarily represent Oracle’s cloud computing strategy. To understand Oracle’s cloud computing strategy, please see various Oracle Open World 2010 presentations available at www.oracle.com/rednetwork
Rationale for Cloud Computing: Application
Developer Perspective <ul><li>Capital Expenditure (CapEx) for development env could be high </li></ul><ul><ul><li>Acquisition of hardware, software, necessary services, etc. </li></ul></ul><ul><ul><li>HW, SW upgrades, back up/restore of dev env, etc. </li></ul></ul><ul><li>Some Operational Expenditure (OpEx) for support, etc. </li></ul><ul><li>Dev env utilization low => Cost per unit time used high </li></ul><ul><li>Wouldn't it be nice if the developer has a basic desktop/laptop and someone else hosts the entire development environment/service for a fee based on usage? </li></ul><ul><li>capex ≈ 0; opex constant for the duration of use </li></ul><ul><li>If development takes too long it may not make economical sense </li></ul><ul><li>For large enterprises, the in-house IT dept can host the dev env </li></ul>
Rationale for Cloud Computing: Quality
Assurance Perspective <ul><li>CapEx for test environment is very high </li></ul><ul><ul><li>Scalability, availability, DR tests require a lot of HW + SW </li></ul></ul><ul><ul><li>Testing permutations of supported technologies requires HW + SW </li></ul></ul><ul><li>OpEx for support, etc. could also be high </li></ul><ul><li>QA env utilization is bursty </li></ul><ul><ul><li>Utilization is very high from end of development to deployment </li></ul></ul><ul><ul><li>Utilization tapers off after deployment </li></ul></ul><ul><li>Cost per unit time used is very high </li></ul><ul><li>Wouldn't it be nice if someone else hosts the testing environment/service and QA pays only for the usage? </li></ul><ul><li>CapEx ≈ 0; OpEx is pay-per-use </li></ul><ul><li>For short release cycles, it may not make economical sense </li></ul><ul><li>For large enterprises, in-house IT dept can host the QA env </li></ul>
Rationale for Cloud Computing: Enterprise
Perspective <ul><li>Application deployment and upgrade cost is very high </li></ul><ul><ul><li>In-house evaluation requires resources </li></ul></ul><ul><ul><li>Pilot deployment requires more resources </li></ul></ul><ul><ul><li>Production deployment requires even more resources </li></ul></ul><ul><li>Cost per end user is very high </li></ul><ul><li>Wouldn't it be nice if someone else hosts your application with a certain service level agreement (SLA) and you pay for the usage? Hosted system should support variations in number of users, compute power, network usage, data storage volume, etc. </li></ul><ul><li>CapEx ≈ 0; OpEx is pay-per-use or per user </li></ul><ul><li>Based on the number of users and resource usage hosted apps can make more economical sense </li></ul><ul><li>Ideal for Small and Medium Businesses (SMB) </li></ul>
Rationale for Cloud Computing: IT
Perspective <ul><li>CapEx for the data center is very high </li></ul><ul><ul><li>Scalability, availability, and DR require redundant HW + SW </li></ul></ul><ul><li>OpEx can also be high </li></ul><ul><ul><li>App administrators, DBA, storage administrators are expensive </li></ul></ul><ul><ul><li>Data center power usage has also become a big issue </li></ul></ul><ul><li>Data center resource utilization is typically low </li></ul><ul><ul><li>Primary system utilization is typically low at non-peak hours </li></ul></ul><ul><ul><li>Redundant HW + SW usually sit idle for a long time </li></ul></ul><ul><li>Cost per unit time used is very high </li></ul><ul><li>Wouldn't it be nice if the resources can be shared among different applications and/or different functions (e.g. QA and production) and/or different departments and/or different tenants to more efficiently use the resources and reduce the HW, space, and power cost? </li></ul>
NIST Definition of Cloud Computing
<ul><li>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. This cloud model promotes availability and is composed of five essential characteristics , three service models, and four deployment models. </li></ul>Source: NIST Definition of Cloud Computing v15 <ul><li>3 Service Models </li></ul><ul><li>SaaS </li></ul><ul><li>PaaS </li></ul><ul><li>IaaS </li></ul><ul><li>4 Deployment Models </li></ul><ul><li>Public Cloud </li></ul><ul><li>Private Cloud </li></ul><ul><li>Community Cloud </li></ul><ul><li>Hybrid Cloud </li></ul><ul><li>5 Essential Characteristics </li></ul><ul><li>On-demand self-service </li></ul><ul><li>Broad network access </li></ul><ul><li>Resource pooling </li></ul><ul><li>Rapid elasticity </li></ul><ul><li>Measured service </li></ul>
Cloud Computing Characteristics: Broad Network
Access <ul><li>Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). </li></ul>Wireless WAN LAN Etc. HTTP TCP/IP UDP Etc. REST Web Service DAV IMAP Etc.
Cloud Computing Characteristics: Resource Pooling
<ul><li>The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand... Examples of resources include storage, processing, memory, network bandwidth, and virtual machines. </li></ul>
Cloud Computing Characteristics: Rapid Elasticity
<ul><li>Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out, and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. </li></ul>Enterprise 1 Cluster 1 Enterprise 2 Cluster 2
Cloud Computing Characteristics: Measured Service
<ul><li>Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service. </li></ul>
Cloud Computing Service Models: Infrastructure-as-a-Service
(IaaS) <ul><li>Consumer uses provider’s processing, storage, networks, and other fundamental computing resources to deploy and run arbitrary software, which can include operating systems and applications. </li></ul>Examples Elastic Compute Cloud (EC2)
Cloud Computing Deployment Models <ul><li>Private
cloud. 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. </li></ul><ul><li>Community cloud. The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns. </li></ul><ul><li>Public cloud. The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services. </li></ul><ul><li>Hybrid cloud . The cloud infrastructure is a composition of two or more clouds that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability. </li></ul>
Cloud Computing Deployment Models: Public
Clouds and Private Clouds <ul><li>Used by multiple tenants on a shared basis </li></ul><ul><li>Hosted and managed by cloud service provider </li></ul><ul><li>Exclusively used by a single organization </li></ul><ul><li>Usually managed by in-house IT </li></ul>Public Clouds IaaS PaaS SaaS I N T R A N E T Private Cloud IaaS PaaS SaaS I N T E R N E T Enterprises will adopt a mix of public and private clouds Source:“Enterprise Cloud Computing: What, Why and How” by Rex Wang, Oracle Lower upfront costs Outsourced management OpEx Lower total costs Greater control over security, compliance, QoS CapEx & OpEx Trade-offs IaaS PaaS IaaS PaaS Apps SaaS
Server Virtualization and Clustering Deliver
Resource Pooling and Elastic Scalability Both server virtualization and clustering are key technologies for cloud Single Physical Resource Consumers Multiple Virtual Resources Server Virtualization Make one physical resource look like many Virtualization Software Clustering Software Consumers Multiple Physical Resources Clustering Make many physical resource look like one Single Virtual Resource
Rationale for Virtualization App1 App1
App2 App2 Free Free Free Free Before Virtualization: 2 physical machines for App1, 2 for App2 (why 2?) After Virtualization: 3 physical machines each hosting App1, App2 on VM <ul><li>25% savings in </li></ul><ul><li>HW cost </li></ul><ul><li>Space and power usage </li></ul><ul><li>Better availability characteristic (why?) </li></ul>OS OS OS OS HOS/VMM VM1 GOS1 GOS2 VM2 HOS/VMM VM1 GOS1 GOS2 VM2 HOS/VMM VM1 GOS1 GOS2 VM2
Technologies Behind the Cloud: Rapid
Elasticity <ul><li>Cloud Uses Distributed Resource Scheduler </li></ul><ul><li>Sense the change in load </li></ul><ul><ul><li>Reactive or Predictive </li></ul></ul><ul><ul><li>Black box (server level) or clear box (queuing model) </li></ul></ul><ul><li>React to the load changes to avoid bottlenecks </li></ul><ul><ul><li>Add more resources where needed </li></ul></ul><ul><ul><ul><li>Challenge is to react quickly to avoid SLA violation and still be optimal in resource usage </li></ul></ul></ul><ul><ul><li>Remove resources where not needed </li></ul></ul><ul><ul><li>Throttle load if needed </li></ul></ul><ul><ul><ul><li>Triage based on different SLA with different enterprise </li></ul></ul></ul><ul><li>AIT’s Iqbal Waheed and Mathew Dailey do research on this topic </li></ul>
Build Time vs. Run Time
Perspectives Need to Separate Development / Operations Horizons BUILD TIME RUN TIME Source “Enterprise Cloud Computing: What, Why and How” by Rex Wang, Oracle Process Modeling, Simulation and Documentation Deployment Engineering Cloud Monitoring and Metrics Service Identification & Discovery End Users Application Owner Service Developer Service Deployer Cloud Operator Cloud Builder
Example of Build vs. Run
Time 1. Set Up Cloud 2. Build App 3. Use App 4. Manage App BUILD TIME RUN TIME Set up Cloud Platform Set up self-service portal Set up shared components Dept App Build app using shared components IT App Developer Deploy using self service App Users App Owner Manage Adjust Capacity Review Charge-back Use app Self-Service Interface Shared Components Application Server Integration / SOA BPM Portal Security & Identity System Manager Database Operating System,Virtualization,Server,Storage Cloud Platform
Do You Provide or Use
Internal or Private Clouds? Source: IOUG ResearchWire member study on Cloud Computing, conducted in August-September 2010. 28.6% 28.6% of respondents have internal or private clouds today Yes, in production at scale 11.3% Yes, in limited use 12.8% Yes, in pilot stage 4.5% Preliminary planning 4.9% Under consideration 10.5% No 47.4% Don ’t know/unsure 8.7%
What Type of Private Platform
and Infrastructure Cloud Services Is Your Company Providing? Source: IOUG ResearchWire member study on Cloud Computing, conducted in August-September 2010. Most popular: App Server as a service Database as a service PaaS IaaS Application server platform as a service 24.7% Database platform as a service 21.4% Identity as a service 4.7% Compute as a service 10.2% Storage as a service 18.1% Software development and test as a service 14.9% Don ’t know/unsure 20.5% None 37.2%
Cloud Computing Challenges <ul><li>Security </li></ul><ul><ul><li>Consumers
don’t necessarily know who has access to their data and how it is managed </li></ul></ul><ul><ul><li>Records management and compliance </li></ul></ul><ul><li>Service Level Agreement </li></ul><ul><ul><li>May not be good enough for some mission critical applications </li></ul></ul><ul><li>Payment </li></ul><ul><ul><li>Metering is not mature yet. Not easy for consumers to verify his/her usage easily </li></ul></ul>
Summary <ul><li>Cloud computing attempts to
formalize the characteristics of a next generation application development and deployment environment that can </li></ul><ul><ul><li>Lower the cost of application development and deployment specially for small and medium businesses </li></ul></ul><ul><ul><li>Increase the efficiency of data centers </li></ul></ul><ul><li>To learn more about cloud computing, please attend Oracle Cloud Summit event in Bangkok. See www.oracle.com/goto/cloudevents for details. </li></ul>