What is virtualization?
The hardware of a computer is managed by an operating system (OS). The OS operates all hardware drivers and manages access to memory, scheduling of processes, Input/output, storage, network or other devices. All user applications rely on this functionality to access and control hardware and devices.
The idea of virtualization is to add an extra layer (called hypervisor) between hardware and OS. All OS operations accessing hardware will be captured and redirected to the hypervisor. The hypervisor provides simulated hardware to the OS which is kept in a kind of container and isolated from other OSes running on the hypervisor. Any OS installed in such a virtual container see its own exclusive machine with the physical characteristics the hypervisor defines. This allows to create multiple independent virtual machines (VMs) on the same hardware. Virtual machines can be configured as desired and easily stored away in a single file which can be reused or duplicated.
Having multiple independent virtual machines share the same hardware is a very efficient concept. However if all your virtual machines would get busy at the same time, you would see a drop in the overall performance of all machines. But as most servers are idle about 70 % of the time, there is plenty of room for "over-provisioning" that does not affect the perceived performance for a single instance. Still, if the demand for computing power goes beyond the capacity of the underlying hardware server, virtualization allows to scale out and run several instances cloned from one original image on multiple machines in parallel - even automated!
Cloud providers make intensive use of this technology and overall availability of connectivity. By using over-provisioning and advanced server management they are able to optimize the cost for computing power (cpu, storage, IO), resulting in highly attractive and flexible pay-per-use offers.
They offer dedicated resource options (e.g. placement in datacenter Frankfurt) and take care of security aspects. Companies are attracted to these models as they deliver a reduction of Capex and overall IT-cost, reduction in complexity and a shift in speed and flexibility.
Virtualization is about to transform computing power into a commodity that can be purchased, used, shared and traded much like Energy or water today. While for a new company to start and grow with virtual resource at minimum cost is surprisingly fast and easy, the transition of established businesses is a rewarding but complex change that requires a solid understanding of the options and implications.
What is the difference between Private/Public/Hybrid Cloud?
These are different deployment models which describe the access scope of a cloud service.
Cloud infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises. (NIST Definition)*
So private in this case means “for your own private use”. Another term you may hear is “corporate cloud”, to describe a cloud used solely by a corporation, not by its customers. However, by definition it does not provide any more “privacy” or “security” than a public cloud would. This model is adopted by organizations in cases where data or applications are required to conform to various regulatory standards such as SOX, HIPAA, or SAS 70. These may require data to be managed for privacy and audits that govern the corporation i.e. healthcare or pharmaceuticals.
To accomodate customers in these segments Software-as-a-Service providers such as SugarCRM, provide options to their clients to maintain their data on their own premises to ensure data privacy is maintained according to the requirements.
The cloud infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization, or some combination of them. It exists on the premises of the cloud provider. (NIST Definition)*
A public cloud is simply a cloud that you build physically and charge money for others to use it. Public Cloud customers can benefit from three factors:
Economies of scale: hardware and infrastructure costs are shared across all users
Speed: creation and deployment of servers takes minutes instead of weeks with low-cost pay-as-you-go models
Flexibility: Public clouds are typically much larger in scale than in-house enterprise clouds which provides clients with seamless, on-demand scalability.
Public clouds offer the greatest level of efficiency in shared resources. Despite the name, the public cloud resources you are renting out are not necessarily accessible to the general public. By definition there is no difference in “privacy” or “security” to private clouds.
The cloud infrastructure is a composition of two or more distinct cloud infrastructures (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 for load balancing between clouds) (NIST-Definition)*
Private clouds can not exist in isolation from the rest of a companies' IT and the public cloud. Most companies with private clouds will evolve to manage workloads across data centres, private clouds and public clouds – thereby creating hybrid clouds.
The cloud infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be owned, managed, and operated by one or more of the organizations in the community, a third party, or some combination of them, and it may exist on or off premises. (NIST-Definition)*
Community clouds are a hybrid form of private clouds built and operated specifically for a targeted group like government organisations within a state that need to share resources, i.e. US government cloud http://aws.amazon.com/de/govcloud-us/
*NIST = National Institute of Standards and Technology, US department of commerce
What is the difference between IaaS/PaaS/SaaS etc.?
These service models describe the market segments of cloud services and the kind of cloud products you receive within. They can be sorted along the stack of an application, starting with infrastructure services at the bottom (IaaS; raw server systems providing a generic operating system) over platform services (PaaS; e.g. a database service) to application-level functionality (SaaS; e.g. a web application to prepare your tax statement). These are the traditional levels, but with new innovations cloud services grow more diverse and other – more specialized – types of cloud services arise, e.g. Desktop-as-a-Service.
Infrastructure as a service (IaaS)
With virtualization, it is possible to divide a powerful machine into several virtual machines with smaller shares of its total resources. A standard business of cloud providers is to virtualize their servers and provide portions of them with a plain OS installed. This is called 'Infrastructure as a Service' (IaaS).
The provider enables the consumer to provision computing, storage, network and other fundamental resources and deploy and run arbitrary software which include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g. host firewalls).Typically, IaaS providers also offer application programming interfaces (APIs) that can be used to provide machines programmatically from the outside. For example: a scheduler or a systems management tool inside your datacenter could initiate an event which calls the IaaS provider API and automatically provision several machines. The returned IPs could be used for an internal load balancer configuration and only a few minutes after initiation the new systems are available.
Platform as a service provides a cloud-based environment with everything required to support the complete lifecycle of building and delivering web-based (cloud) applications. Development departments benefit from having an image of a working environment and the ability of spawning new instances within minutes helps to reduce development and test cycles.
In technical terms, PaaS enables the consumer to deploy consumer-created or acquired applications onto the cloud infrastructure by using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
Software as a Service (SaaS)
With the beginning of the millennium and the advanced internet connectivity it became a business model to provide web-based software solutions. Probably one of the best known today might be salesforce.com, the online sales- support & CRM tool. 'Software as a service' is the promise that a software is operated 'elsewhere' at a certain service level. It is typically very specific and suitable for a particular business purpose. It may use virtualization to help operate the infrastructure.
Technically, the capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g. web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
Vendors often apply seat based licensing making them attractive especially to small and medium size enterprises. For core-applications or high numbers of users the case most often turns fast. Main reasons are the need of integration and accessibility for core applications. The closer to the heart, the more information will be required by or shared with other systems which would increase costs of integration of the SaaS solution. As a rule of thumb a small amount of users in a non-core application might suit a SaaS solution best.
Virtual Datacenter as a Service (VDCaaS)
Beyond the purchase of compute capacity the same user might want to add storage, requires network and access configurations such as firewalls, security policies and some monitoring. When all these services are added to a bundle, the user advances to the manager of his own datacenter, called 'Virtual Datacenter as a Service'.
Based on shared or dedicated resources customers define network settings and segments, security policies, set up machines, assign them to one or more segments and establish connections to or from the outside using VPN tunnels. Most providers today allow this kind of configurability. However, usability and feature richness vary strongly, so checking critical functionality before deciding for a specific provider is essential.
Virtual Desktop as a service (VDaaS)
This concept has been developed in very large scale enterprises responsible for managing thousands of desktops across many locations. Software distribution, security as well as limited accessibility are constant pains of large organizations. The idea of virtual desktops burns down to the idea of the old mainframes: The user-session is fully managed and operated in the datacenter. The client himself just requires a slim connection manager locally. After authenticating successfully, the connection manager allows access to the centrally running desktop instance. Only the rendering of the user interface remains executed on the local machine.
Main advantages are that the risk of data loss reduces to a minimum as management and backup of datacenter storage is very efficient. Also, the rollout of new software can be managed centrally by providing new images. While a desktop image requires around 50GB of disk space, the Terminal Server not even requires half. However with the variety of different image types according to different user types release management will remain an organizational challenge.