Table of Contents
Cloud Computing
Cloud Computing is defined as an updated version of utility computing: basically virtual servers available over the Internet.Also defined as anything consumed outside the firewall.
A way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software.
Encompasses any subscription based or pay-per-use service that, in real time over the Internet, extends IT’s existing capabilities.
NIST Definition of Cloud Computing
Cloud Computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (for example, networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Some of the components of cloud computing
- SAAS: Delivers a single application through the browser to thousands of customers using a multitenant architecture. This means on customer side no upfront investment in servers or software licensing. On provider side, costs are low compared to conventional hosting with just one app to maintain. E.g. Salesforce.com, Google Apps, Zoho Office.
- PAAS: This form of cloud computing delivers development environment as a service. Applications are built on the provider’s infrastructure and delivered to the users via Internet from the provider’s servers. E.g. Force.com, Google App Engine
- Utility computing (IAAS): In this form of cloud computing, storage and virtual servers are offered that IT can access on demand. E.g. Amazon EC2, VMware vCloud Express
- Web services in the cloud: Web Service providers offer APIs that enable developers to exploit functionality over the Internet, rather than delivering full-blown applications e.g. Google Maps, ADP payroll processing.
- MSP (Managed Service Providers): A managed service is basically an application exposed to IT rather than to end-users, such as a virus scanning service for e-mail or an application monitoring service.
- Service commerce platforms: A hybrid of SaaS and MSP, this offers a service hub that users interact with. E.g. Ariba
- Internet integration: This is the integration of cloud-based services.e.g. Dell Boomi.
Characteristics of Cloud Computing environment
- List of characteristics of cloud computing environment (All may not be present in a specific cloud solution):
- Elasticity and scalability: Gives the ability to expand and reduce resources according to specific service requirement
- Pay-per-use: Paid for cloud services only when used for short term (e.g. CPU time) or for longer duration (e.g. cloud based storage)
- On demand: Cloud services invoked only when needed and are not permanent parts of IT infrastructure. That means with cloud services, there is no need to have dedicated resources waiting to be used as with internal services.
- Resiliency – This feature can completely isolate the failure of server and storage resources from cloud users. Work migrated to different physical resource in cloud with or without user awareness.
- Multitenancy – Cloud services hosted for multiple users within the same infrastructure.
- Workload movement – Cloud computing providers can migrate workload across servers – both inside data center and across data centers.
- Cloud computing means shifting the costs from capital expenditures of buying and installing servers and related infrastructure to an operating expense model where it is paid for usage of these type of resources.
Virtualization and Cloud Computing
Cloud computing has accelerated because of the adoption of virtualization, specifically server virtualization.
Virtualization
- Virtualization software is used to run multiple Virtual Machines on a single physical server to provide same functions as multiple physical machines.
- The virtualization software (known as hypervisor) performs the abstraction of the hardware to individual VMs.
- Hypervisor supports running of multiple VMs and schedules the VMs and provides them a unified and consistent access to CPU, memory and I/O resources on physical machine.
- OS inside VM may be virtualization aware and require modifications to run over a hypervisor, a scheme which is known as paravirtualization.
Types of hypervisor
- Type 1 hypervisor – Implemented on a server directly running over the hardware.
- Type 2 hypervisor – Implemented on a server running over an operating system.
VM Migration
- Allows to move an entire VM from one machine to another and continue operation of the VM on the second machine. This is an advantage unique to virtualized environments.
Benefits of Cloud Computing
- Predictable any time, any where access to IT resources.
- Flexible scaling of resources ( resource optimization )
- Rapid, request-driven provisioning
- Lower total cost of operations – Only pay for what you use
- Virtualization
- Cloud resources are typically virtual
- Each machine can be dynamically allocated (since it is virtual)
- New APIs
- Provide dynamic resource allocation
- Abstract resources i.e. Database Server abstracted allows scaling of the database layer without code changes.
Major Models in Cloud Computing – SaaS
Software As A Service (SaaS)
- Is a hosted software model; An enterprise, instead of obtaining licenses for software products it uses can obtain the same functions through a hosted service from a provider through a network connection. Interface is usually through a web browser.
- Saves the complexity of installation, maintenance, upgrades and patches since software is managed centrally at SaaS provider’s facilities.
- Monitoring application delivery performance is responsibility of SaaS provider.
Driving factors in SaaS leading to increased ROI
- Increased speed of deployment
- Traditional desktop applications involve deployment hurdles. Complications of trying to get thousands of clients to run the precise version of a software at the exact time are huge.
- Deploying SaaS versions of software means it is deployed at the providers side and is available to all the SaaS clients.
Increased adoption
- Compared to the full-blown version of sofware with high costs, having a trimmed down SaaS version of the software with lower costs allow users to try out which helps in increased adoption of the software.
Reduced support requirements
- Problem of increased support issues that occur as a result of having to support multiple platforms is largely mitigated with SaaS.
- Implementing fixes after bugs are found, need to be done only at the SaaS provider’s end and the update is available to all SaaS clients.
- Traditional desktop applications need to support more than one platform and hence compatibility has to be validated across multiple platforms whereas in SaaS, it is not the case.
Lowered cost of implementation and upgrades
- Upgrade path to SaaS applications is less cost-prohibitive since the developer has control over the platform on which the software runs and transparent to the user.
- SaaS providers have control over versioning and infrastructure that runs the software.
SaaS Data escrow
- It is the process of keeping a copy of critical SaaS application data with an independent third party.
- It allows companies to protect and insure all data that resides within SaaS applications, protecting against data loss.
- Reason for considering data escrow include concerns about vendor bankruptcy, unplanned service outages and potential data loss or corruption.
Major Models in Cloud Computing – PaaS
Platform As A Service (PaaS)
- Lets developers build an deploy web applications on a hosted infrastructure.
- Because the infrastructure for PaaS is elastic, the cloud can be expanded to provide even more computing resources as needed.
Main ingredients of PaaS
- Computing Platform
- Refers to a place where software can be launched consistently as long as the code meets the standards of the platform. E.g. of platform – Windows, Linux, Google Android etc.
Solution stack
- Consists of applications that will assist in the development process as well as deployment of the application.
- Applications here refer to operating system, run time environments, source control repository and any other required middleware.
Features of PaaS
Following features should be considered when comparing PaaS providers:
- Application Development Framework – A robust application development framework built on technology that is widely used (e.g. Java)
- Ease of use – PaaS should facilitate rapid, iterative application development
- Business Process Modeling tools – A strong BPM framework that allows to model the business process and build the application around it.
- Availability – Platform of choice should be accessible and available anywhere, anytime.
- Scalability – Platform should be able to leverage the elastic capacity of underlying infrastructure to handle the loads the application will be put under.
- Security – To address security, platform should address things like cross-scripting, SQL injection, Denial of Service, encryption of traffic etc.
- Inclusive – Platform should provide the ability to include, embed and integrate other applications built on the same platforms or others.
- Portability – Platform should allow companies to move applications from one IaaS to another.
- Porting Tools – Should provide tools to facilitate quick migration of data from legacy on-premise application to application based on the new platform.
- API – Should provide APIs to perform tasks such as user authentication, storing and retrieving files, making calls directly to a database etc.
Major Models in Cloud Computing – IaaS
Infrastructure As A Service (IaaS)
- IaaS provider offers raw computing, storage and network infrastructure so that we can load our own software, including operating systems and applications, on to this infrastructure. E.g. Amazon Elastic Computing Cloud (EC2) service.
- Two primary facets that make IaaS special: elasticity and virtualization.
Cloudbursting
- Process of off-loading tasks to the cloud during times when the most compute resources are needed.
- Potential for capital savings through cloudbursting is significant since businesses won’t need to invest in additional servers that run only run at 70% capacity two or three times in a year.
Open standards
- Open Virtualization Format (OVF): An open standard for packaging and distributing virtual appliances to be run in virtual machines. Supported by VirtualBox, VMWare etc.
- Virtual Machine Disk format (VMDK): Is a file format which is a type of virtual appliance developed for VMWare products and is an open format.
Elastic infrastructure
- Elasticty is the first critical facet of IaaS.
- Gives the ability to expand and reduce resources according to specific service requirement
- Cloud clustering: Clustering of physical servers to form a virtual cloud.
Machine virtualization
- Virtualization is the second major facet of IaaS.
- Failover, redundancy, monitoring, clustering and other infrastructure management tasks are handled by a virtualization system.
- IaaS consists of a combination of hardware and software resources.
- IaaS software is low-level code that runs independent of an operating system called a hypervisor, which is responsible for taking inventory of hardware resources and allocating said resources based on demand. This process is called resource pooling.
- Resource pooling by hypervisor makes virtualization possible.
- Virtualization makes multi-tenant computing possible.
Types of Cloud
Public Cloud
- Cloud service where data centers are external to users of the service.
- Both the infrastructure and control of the clouds is with the service provider.
Private Cloud
- Cloud provider is responsible only for the infrastructure and not for the control.
- Equivalent to section of shared data center being partitioned for use by specific customer.
Internal Cloud
- Cloud services provided by the IT department of an enterprise from the company’s own data centers.
- Biggest concerns for enterprises to move to an external cloud are security and control.
- In such a case, advantages of the cloud – resiliency, scalability and workload migration – are useful to have in company’s own data centers.
Community Cloud
- Shares infrastructure between several organizations from a specific community with common concerns.
Hybrid Cloud
- A composition of two or more clouds (private, community or public) that remain unique entities but are bound together, offering benefits of multiple deployment models.
Cloud Storage
Cloud Storage is a model of networked online storage where data is stored on virtualized pools of storage which are generally hosted by third parties. The storage may span across multiple servers.
People who require their data to be hosted buy or lease storage capacity and use it for their data needs.
Cloud storage services may be accessed through a web service API or through a Web based user interface
Advantages of Cloud Storage
- Companies need only pay for the storage they actually use.
- Companies do not need to install physical storage devices in their own data centers.
- Storage maintenance tasks such as backup, data replication and purchasing additional storage devices are offloaded to the responsibility of a service provider.
Concerns of Cloud Storage
- Security of stored data and data in transit
- Performance may be lower than local storage
- Reliability and availability may depend on network availability
Examples: Amazon S3, EMC Atmos, iCloud by Apple, Ubuntu One, Google Cloud Storage.
Cloud Database
Cloud Database is a database running on Cloud Computing platform such as Amazon EC2, GoGrid, Rackspace.
Two common deployment models
- Users can run databases on the cloud independently using a Virtual Machine image.
- Users can use database as a service without physically launching a virtual machine database for the database.
Data Model
SQL Databases
- Oracle Database, Microsoft SQL Server and MySQL server are one type of database which can be run on the cloud. Difficult to scale and not natively suited to a cloud environment
NoSQL Databases
- Apache Cassandra, CouchDB and MongoDB are another type of databases which can run on the cloud. Built to service heavy read/write loads and are able to scale up and down easily and hence are more natively suited to run on the cloud.
Cloud Database vendors
- Microsoft SQL Azure, Amazon Relational Database Service etc.
- Amazon SimpleDB, Google AppEngine DataStore, CouchDB Hosted Database etc.
- CouchDB on Amazon EC2, Apache Cassandra on Amazon EC2 etc.