4 Architecting IoT Cloud
233
includes masking server resources so that they are not visible to users. This
can be accomplished by a server administrator using a software application able
to separate a physical server into many virtual environments. The three main
approaches to server virtualization include system virtualization (virtual machine
method), operating system (OS)-level virtualization (Containers), and functionlevel virtualization.
– System Virtualization (Virtual Machine-Based Virtualization): System virtualization requires partitioning a server into multiple virtual servers or machines
with separate operating systems (OS). Although sharing a single computer’s
resources, various virtual machines can run different operating systems and
many applications. In short, system virtualization is the building of a virtual
computer that functions as a physical computer with an OS. A virtual machine
(VM) can also be referred to as a guest machine and functions like a software
simulation of the hardware platform that generates a virtual environment
for the guest OS. The software run on virtual machines is isolated from
the elemental hardware. A hypervisor, also referred to as a Virtual Machine
Monitor (VMM), is software that executes on host hardware and the host
operating system to monitor and manage the running of virtual operating
systems on the guest machines. For example, a computer operating with
Microsoft Windows may host a computer that looks as though it is operating
with the Ubuntu Linux.
– Operating System Virtualization (Containerization or Container-Based Virtualization): In general, a container is a standard software unit that bundles
code and its dependencies to distribute and run applications accessing a
shared OS kernel without requiring VMs. Operating system virtualization is
container-based virtualization that requires an OS structure includes a kernel
which permits many separated user-space instances to exist. These instances
are known as Virtual Environments (VEs), containers (Docker, Solaris),
virtual private servers (OpenVZ), zones (Solaris), partitions, jails (chroot jail,
FreeBSD), or virtual kernels (DragonFly BSD). They may appear to be actual
computers from the perspective of the programs being executed in specific
instances. Docker is the most well-known container technology. It requires
that the application be packaged as an image. The image typically made up of
the application and libraries needed to provide the designated service. After
packaging the application, one or more containers are launched. In general,
several containers run on each host. A cluster manager (e.g., Marathon or
Kubernetes) can be useful in managing containers because the host is treated
as resource pool, deciding where containers belong based on the resources
needed and available on the host. It is very important to understand the main
differences between container and VM (see Fig. 4.36). Virtual machines are
software programs that mimic computing systems or physical hardware by
running a hypervisor software able to replicate hardware resource functionality using the software. VMs encapsulate the OS as well as applications while
containers are responsible for encapsulating applications and their resources
233
includes masking server resources so that they are not visible to users. This
can be accomplished by a server administrator using a software application able
to separate a physical server into many virtual environments. The three main
approaches to server virtualization include system virtualization (virtual machine
method), operating system (OS)-level virtualization (Containers), and functionlevel virtualization.
– System Virtualization (Virtual Machine-Based Virtualization): System virtualization requires partitioning a server into multiple virtual servers or machines
with separate operating systems (OS). Although sharing a single computer’s
resources, various virtual machines can run different operating systems and
many applications. In short, system virtualization is the building of a virtual
computer that functions as a physical computer with an OS. A virtual machine
(VM) can also be referred to as a guest machine and functions like a software
simulation of the hardware platform that generates a virtual environment
for the guest OS. The software run on virtual machines is isolated from
the elemental hardware. A hypervisor, also referred to as a Virtual Machine
Monitor (VMM), is software that executes on host hardware and the host
operating system to monitor and manage the running of virtual operating
systems on the guest machines. For example, a computer operating with
Microsoft Windows may host a computer that looks as though it is operating
with the Ubuntu Linux.
– Operating System Virtualization (Containerization or Container-Based Virtualization): In general, a container is a standard software unit that bundles
code and its dependencies to distribute and run applications accessing a
shared OS kernel without requiring VMs. Operating system virtualization is
container-based virtualization that requires an OS structure includes a kernel
which permits many separated user-space instances to exist. These instances
are known as Virtual Environments (VEs), containers (Docker, Solaris),
virtual private servers (OpenVZ), zones (Solaris), partitions, jails (chroot jail,
FreeBSD), or virtual kernels (DragonFly BSD). They may appear to be actual
computers from the perspective of the programs being executed in specific
instances. Docker is the most well-known container technology. It requires
that the application be packaged as an image. The image typically made up of
the application and libraries needed to provide the designated service. After
packaging the application, one or more containers are launched. In general,
several containers run on each host. A cluster manager (e.g., Marathon or
Kubernetes) can be useful in managing containers because the host is treated
as resource pool, deciding where containers belong based on the resources
needed and available on the host. It is very important to understand the main
differences between container and VM (see Fig. 4.36). Virtual machines are
software programs that mimic computing systems or physical hardware by
running a hypervisor software able to replicate hardware resource functionality using the software. VMs encapsulate the OS as well as applications while
containers are responsible for encapsulating applications and their resources
