CS 441 Lecture Notes, 2016-04-11, Dr. Orion Lawlor
"Virtualization" is a broad and elastic term, covering everything from virtual memory to cloud computing. Today virtualization refers to virtual machines, a software construct where we can boot a separate operating system alongside our normal operating system, providing security and customization benefits.
Major types of virtualization today include:
- Software as a Service: the provider runs, e.g., a blog host like Wordpress.com. You add posts to your blog.
- Platform as a Service (Application Hosting): the provider supplies a runtime system for a particular version of a particular language. You write your applications in that language. This allows users to create their own applications.
- Containers: the provider supplies a UNIX environment, but it is stripped down and restricted to live in a single directory, the "chroot jail". Used by Docker and NetRun. This allows users to run arbitrary applications, but still share a single kernel and management infrastructure.
- Infrastructure as a Service (Virtual Machines): a complete operating system kernel, drivers (for virtual hardware), filesystem, etc. This gives maximum flexibility to the user, and allows users to stage their own kernel updates when desired.
A variety of companies sell or give away virtual machines or hosted applications:
Applications (Platform as a Service)
E.g., Python, PHP, Node.js
|Elastic Beanstalk||App Engine||Azure Cloud Services|
Virtual Machines (Infrastructure as a Service)
E.g., Run a Linux or Windows VM
|AWS EC2||Compute Engine||Azure||c9.io|