CCS335 Cloud Computing-Notes
CCS335 Cloud Computing-Notes
Cloud Architecture: System Models for Distributed and Cloud Computing – NIST
Cloud Computing Reference Architecture – Cloud deployment models – Cloud service
models; Cloud Infrastructure: Architectural Design of Compute and Storage Clouds –
Design Challenges
Cloud Architecture
cloud computing technology is used by both small and large organizations to store the
information in cloud and access it from anywhere at anytime using the internet
connection.Cloud computing architecture is a combination of service-oriented
architecture and event-driven architecture.
o Front End
o Back End
Front End
The front end is used by the client. It contains client-side interfaces and applications that are
required to access the cloud computing platforms. The front end includes web servers
(including Chrome, Firefox, internet explorer, etc.), thin & fat clients, tablets, and mobile
devices.
Back End
The back end is used by the service provider. It manages all the resources that are required to
provide cloud computing services. It includes a huge amount of data storage, security
mechanism, virtual machines, deploying models, servers, traffic control mechanisms, etc.
1. Client Infrastructure
Client Infrastructure is a Front end component. It provides GUI (Graphical User Interface) to
interact with the cloud.
2. Application
The application may be any software or platform that a client wants to access.
3. Service
A Cloud Services manages that which type of service you access according to the client’s
requirement.
i. Software as a Service (SaaS) – It is also known as cloud application services. Mostly, SaaS
applications run directly through the web browser means we do not require to download and
install these applications. Some important example of SaaS is given below –
ii. Platform as a Service (PaaS) – It is also known as cloud platform services. It is quite
similar to SaaS, but the difference is that PaaS provides a platform for software creation, but
using SaaS, we can access software over the internet without the need of any platform.
Example: Amazon Web Services (AWS) EC2, Google Compute Engine (GCE), Cisco
Metapod.
4. Runtime Cloud
Runtime Cloud provides the execution and runtime environment to the virtual machines.
5. Storage
Storage is one of the most important components of cloud computing. It provides a huge
amount of storage capacity in the cloud to store and manage data.
6. Infrastructure
It provides services on the host level, application level, and network level. Cloud
infrastructure includes hardware and software components such as servers, storage, network
devices, virtualization software, and other storage resources that are needed to support the
cloud computing model.
7. Management
8. Security
9. Internet
The Internet is medium through which front end and back end can interact and communicate
with each other.
computer nodes. These node machines are interconnected by SANs, LANs, or WANs in a
hierarchical manner.
With today’s networking technology, a few LAN switches can easily connect hundreds of
machines as a working cluster. A WAN can connect many local clusters to form a very large
cluster of clusters. Massive systems are considered highly scalable, and can reach web-scale
geographically separated and that work together to provide the same service or
application to clients. It is possible that many of the services you run in your network
Active Directory
2. P2P Networks : In a P2P system, every node acts as both a client and a server, providing
part of the system resources. Peer machines are simply client computers connected to the
Internet. All client machines act autonomously to join or leave the system freely. This implies
that no master-slave relationship exists among the peers. No central coordination or central
3. Computing Grids :This is the use of widely distributed computer resources to reach a
common goal. A computing grid can be thought of as a distributed system with non-interactive
workloads that involve many files. Grid computing is distinguished from conventional high-
performance computing systems such as cluster computing in that grid computers have each
node set to perform a different task/application. Grid computers also tend to be more
using server clusters and huge databases at data centers. Cloud computing leverages its low
cost and simplicity to benefit both users and providers. Machine virtualization has enabled
such cost-effectiveness. Cloud computing intends to satisfy many user Virtualized resources
from data centers to form an Internet cloud, provisioned with hardware, software, storage,
2. Cloud Carrier: The mediator who provides offers connectivity and transport of
cloud services within cloud service providers and cloud consumers. It allows access
to the services of the cloud through Internet networks, telecommunication, and other
access devices. Network and telecom carriers or a transport agent can provide
distribution. A consistent level of services is provided when cloud providers set up
Service Level Agreements (SLA) with a cloud carrier. In general, Carrier may be
required to offer dedicated and encrypted connections.
3. Cloud Broker: An organization or a unit that manages the performance, use, and
delivery of cloud services by enhancing specific capability and offers value-added services
to cloud consumers. It combines and integrates various services into one or more new
services. They provide service arbitrage which allows flexibility and opportunistic choices.
There are major three services offered by a cloud broker:
Service Intermediation.
Service Aggregation.
Service Arbitrage.
4. Cloud Auditor: An entity that can conduct independent assessment of cloud services,
security, performance, and information system operations of the cloud implementations.
The services that are provided by Cloud Service Providers (CSP) can be evaluated by
service auditors in terms of privacy impact, security control, and performance, etc. Cloud
Auditor can make an assessment of the security controls in the information system to
determine the extent to which the controls are implemented correctly, operating as planned
and constructing the desired outcome with respect to meeting the security necessities for
the system. There are three major roles of Cloud Auditor which are mentioned below:
Security Audit.
Privacy Impact Audit.
Performance Audit.
5. Cloud Consumer: A cloud consumer is the end-user who browses or utilizes the
services provided by Cloud Service Providers (CSP), sets up service contracts with the
cloud provider. The cloud consumer pays per use of the service provisioned. Measured
services utilized by the consumer. In this, a set of organizations having mutual regulatory
constraints performs a security and risk assessment for each use case of Cloud migrations
and deployments.
Cloud consumers use Service-Level Agreement (SLAs) to specify the technical
performance requirements to be fulfilled by a cloud provider. SLAs can cover terms
concerning the quality of service, security, and remedies for performance failures. A cloud
provider may also list in the SLAs a set of limitations or boundaries, and obligations that
cloud consumers must accept. In a mature market environment, a cloud consumer can
freely pick a cloud provider with better pricing and more favourable terms. Typically, a
cloud provider’s public pricing policy and SLAs are non-negotiable, although a cloud
consumer who assumes to have substantial usage might be able to negotiate for better
contracts.
Most cloud hubs have tens of thousands of servers and storage devices to enable fast loading.
It is often possible to choose a geographic area to put the data "closer" to users. Thus,
deployment models for cloud computing are categorized based on their location. To know
which model would best fit the requirements of your organization, let us first learn about the
various types.
Public Cloud
The name says it all. It is accessible to the public. Public deployment models in the cloud are
perfect for organizations with growing and fluctuating demands. It also makes a great choice
for companies with low-security concerns. Thus, you pay a cloud service provider for
networking services, compute virtualization & storage available on the public internet. It is also
a great delivery model for the teams with development and testing. Its configuration and
deployment are quick and easy, making it an ideal choice for test environments.
There are many benefits of deploying cloud as public cloud model. The following diagram
shows some of those benefits:
Cost Effective
Since public cloud shares same resources with large number of customers it turns out
inexpensive.
Reliability
The public cloud employs large number of resources from different locations. If any of the
resources fails, public cloud can employ another one.
Flexibility
The public cloud can smoothly integrate with private cloud, which gives customers a flexible
approach.
Location Independence
Public cloud services are delivered through Internet, ensuring location independence.
Public cloud is also based on pay-per-use model and resources are accessible whenever
customer needs them.
High Scalability
Cloud resources are made available on demand from a pool of resources, i.e., they can be
scaled up or down according the requirement.
Disadvantages
Low Security
In public cloud model, data is hosted off-site and resources are shared publicly, therefore
does not ensure higher level of security.
Less Customizable
1. Low visibility and control - Public cloud infrastructure is owned by the cloud service
provider. You don't have much visibility and control over it.
2. Compliance and legal risks - Since you don't have much visibility and control over
public cloud infrastructure, you are relying on the cloud service provider to protect
data and adhere to local and international regulations. Your company may still be
liable, if the cloud service provider, fails to live up to the task and if there is a data
breach. So a public cloud, may not be the most viable solution for security sensitive or
mission-critical applications.
3. Cost concerns - Cloud in general, reduces upfront infrastructure costs and it's pay-as-
you-go model provides more flexibility. Depending on the traffic, the amount of cloud
resources you consume, the plan you have chosen, the way you scale resources up and
down, determines the overall price you pay. Sometimes this overall price tag may be
higher than what you anticipated.
Private Cloud
There are many benefits of deploying cloud as private cloud model. The following diagram
shows some of those benefits:
Private cloud operations are not available to general public and resources are shared from
distinct pool of resources. Therefore, it ensures high security and privacy.
More Control
The private cloud has more control on its resources and hardware than public cloud because
it is accessed only within an organization.
The private cloud resources are not as cost effective as resources in public clouds but they
offer more efficiency than public cloud resources.
Disadvantages
The private cloud is only accessible locally and is very difficult to deploy globally.
High Priced
Limited Scalability
The private cloud can be scaled only within capacity of internal hosted resources.
Additional Skills
o Higher Cost - With the benefits you get, the investment will also be larger than the
public cloud. Here, you will pay for software, hardware, and resources for staff and
training.
o Fixed Scalability - The hardware you choose will accordingly help you scale in a certain
direction
o High Maintenance - Since it is managed in-house, the maintenance costs also increase.
Community Cloud
Cost Effective
Community cloud offers same advantages as that of private cloud at low cost.
Sharing Among Organizations
Community cloud provides an infrastructure to share cloud resources and capabilities among
several organizations.
Security
The community cloud is comparatively more secure than the public cloud but less secured
than the private cloud.
Hybrid Cloud
Benefits
There are many benefits of deploying cloud as hybrid cloud model. The following diagram
shows some of those benefits:
Scalability
It offers features of both, the public cloud scalability and the private cloud scalability.
Flexibility
Cost Efficiency
Public clouds are more cost effective than private ones. Therefore, hybrid clouds can be cost
saving.
Security
Disadvantages
Networking Issues
Security Compliance
It is necessary to ensure that cloud services are compliant with security policies of the
organization.
Infrastructure Dependency
With the below table, we have attempted to analyze the key models with an overview of what
each one can do for you:
Cost-Effectiveness Most Most expensive Cost is distributed Cheaper than private but
affordable among members more expensive than public
o Ease of Use - How savvy and trained are your resources? Do you have the time and the
money to put them through training?
o Cost - How much are you willing to spend on a deployment model? How much can you
pay upfront on subscription, maintenance, updates, and more?
o Scalability - What is your current activity status? Does your system run into high
demand?
o Compliance - Are there any specific laws or regulations in your country that can impact
the implementation? What are the industry standards that you must adhere to?
o Privacy - Have you set strict privacy rules for the data you gather?
Each cloud deployment model has a unique offering and can immensely add value to your
business. For small to medium-sized businesses, a public cloud is an ideal model to start with.
And as your requirements change, you can switch over to a different deployment model. An
effective strategy can be designed depending on your needs using the cloud mentioned above
deployment models.
Cloud computing makes it possible to render several services, defined according to the roles,
service providers, and user companies. Cloud computing models and services are broadly
classified as below:
The Infrastructure as a Service (IAAS) means the hiring & utilizing of the Physical
Infrastructure of IT (network, storage, and servers) from a third-party provider. The IT
resources are hosted on external servers, and users can access them via an internet connection.
The Benefits
The Benefits
o Focus on development: Mastering the installation and development of software
applications.
o Time saving and flexibility: no need to manage the implementation of the platform,
instant production.
o Data security: You control the distribution, protection, and backup of your business
data.
Software as a Service (SaaS) is provided over the internet and requires no prior installation.
The services can be availed from any part of the world at a minimal per-month fee.
The Benefits
o You are entirely free from the infrastructure management and aligning software
environment: no installation or software maintenance.
o You benefit from automatic updates with the guarantee that all users have the same
software version.
o It enables easy and quicker testing of new software solutions.
Cloud Infrastructure
Hypervisor
Management Software
Deployment Software
It helps to deploy and integrate the application on the cloud.
Network
It is the key component of cloud infrastructure. It allows to connect cloud services over the
Internet. It is also possible to deliver network as a utility over the Internet, which means, the
customer can customize the network route and protocol.
Server
The server helps to compute the resource sharing and offers other services such as resource
allocation and de-allocation, monitoring the resources, providing security etc.
Storage
Cloud keeps multiple replicas of storage. If one of the storage resources fails, then it can be
extracted from another one, which makes cloud computing more reliable.
Infrastructural Constraints
Fundamental constraints that cloud infrastructure should implement are shown in the
following diagram:
Transparency
Virtualization is the key to share resources in cloud environment. But it is not possible to
satisfy the demand with single resource or server. Therefore, there must be transparency in
resources, load balancing and application, so that we can scale them on demand.
Scalability
To achieve transparency and scalability, application solution delivery will need to be capable
of intelligent monitoring.
Security
The mega data center in the cloud should be securely architected. Also the control node, an
entry point in mega data center, also needs to be secure.
Cloud computing, an emergent technology, has placed many challenges in different aspects
of data and information handling. Some of these are shown in the following diagram:
Security and Privacy of information is the biggest challenge to cloud computing. Security and
privacy issues can be overcome by employing encryption, security hardware and security
applications.
Portability
This is another challenge to cloud computing that applications should easily be migrated from
one cloud provider to another. There must not be vendor lock-in. However, it is not yet made
possible because each of the cloud provider uses different standard languages for their
platforms.
Interoperability
It means the application on one platform should be able to incorporate services from the other
platforms. It is made possible via web services, but developing such web services is very
complex.
Computing Performance
Data intensive applications on cloud requires high network bandwidth, which results in high
cost. Low bandwidth does not meet the desired computing performance of cloud application.
It is necessary for cloud systems to be reliable and robust because most of the businesses are
now becoming dependent on services provided by third-party.
Types of Virtual Machines : You can classify virtual machines into two types:
1. System Virtual Machine: These types of virtual machines gives us complete system
platform and gives the execution of the complete virtual operating system. Just like virtual
box, system virtual machine is providing an environment for an OS to be installed
completely. We can see in below image that our hardware of Real Machine is being
distributed between two simulated operating systems by Virtual machine monitor. And then
some programs, processes are going on in that distributed hardware of simulated machines
separately.
2. Process Virtual Machine : While process virtual machines, unlike system virtual
machine, does not provide us with the facility to install the virtual operating system
completely. Rather it creates virtual environment of that OS while using some app or
program and this environment will be destroyed as soon as we exit from that app. Like in
below image, there are some apps running on main OS as well some virtual machines are
created to run other apps. This shows that as those programs required different OS, process
virtual machine provided them with that for the time being those programs are
running. Example – Wine software in Linux helps to run Windows applications.
Virtual Machine Language : It’s type of language which can be understood by different
operating systems. It is platform-independent. Just like to run any programming language
(C, python, or java) we need specific compiler that actually converts that code into system
understandable code (also known as byte code). The same virtual machine language works.
If we want to use code that can be executed on different types of operating systems like
(Windows, Linux, etc) then virtual machine language will be helpful.
What is System Virtual Machines?
Originally, a Virtual Machine was described by Goldberg and Popek as "an isolated and
efficient duplicate of an actual computer machine." The latest use combines virtual
machines that haven't any direct relation with actual hardware. Generally, the real world or
physical hardware (executing the virtual machine) is termed as the "host" and the VM copied
on the machine is generally termed as the "guest."
The host could emulate various guests, all of which could emulate distinct hardware platforms
and operating systems.
A craving to execute more than one operating system was a starting objective of the virtual
machines. It allows time-sharing between many individual tasking operating systems. A system
VM can be could be considered the concept generalization of virtual memory that preceded it
historically.
CMS/CP of IBM, the initial systems that permit full virtualization, equipped to be sharing by
giving all users an individual-user OS (Operating System). The system VM designated the user
for writing privileged instructions inside the code. This type of method has some advantages
like including output/input devices not permitted by any standard system.
Memory over-commitment's new systems may be used for managing memory sharing between
several VMs over a single computer OS. It is because technology expands VM for various
virtualization purposes. It can be possible to distribute memory pages that include identical
contents for many VMs that execute on a similar physical machine. As a result, mapping them
to a similar physical page by a method called KSM (kernel-same page merging).
It is useful especially for various read-only pages, like those containing code segments. It is a
case for more than one VM executing the similar or same middleware components, web
servers, software libraries, software, etc. A guest OS doesn't require to be compliant with
any host hardware, hence making it feasible to execute distinct OS on a similar computer (such
as an operating system's prior version, Linux, or Windows) for supporting future software.
The virtual machine can be used for supporting isolated guest OS. It is popular regarding
embedded systems. A common use might be to execute the real-time operating system with a
preferred complicated operating system simultaneously such as Windows or Linux.
Other uses might be for unproven and novel software that is still in the stage of
development, thus it executes in a sandbox. VMs have other aspects of OS development. It
may contain faster reboots and developed debugging access.
More than one virtual machine running their guest OS is engaged for the consolidation of the
server frequently.
What is Process Virtual Machines?
A process virtual machine is sometimes known as MRE (Manages Runtime Environment) or
application virtual machine. It runs as a general application in the host operating system and
supports an individual process. These are created if that process begins and destroyed if it exits.
The process virtual machine has become famous with the Java programming language. It can
be implemented with the Java virtual machine. Another example includes the .NET
Framework and Parrot virtual machine which executes on the virtual machine known as
the Common Language Runtime. Each of them could be served as the abstraction layer for a
computer language.
The process virtual machine has a special case for those systems that essence on the
communication mechanisms of the (heterogeneous potentially) computer clusters. These types
of virtual machines do not include any individual process, although one process/physical
machine inside the cluster.
These clusters are created to mitigate the programming confluent applications task by enabling
the programmers to concentrate on algorithms instead of the communication mechanisms given
by the OS and interconnect.
They don't hide a fact that communication takes place and attempt to illustrate a cluster as an
individual machine.
This system doesn't give a particular programming language, unlike other types of process
virtual machines, although, they are embedded within any existing language. Such any system
typically facilitates binding for many languages (like FORTRAN and C).
Examples are MPI (Message Passing Interface) and PVM (Parallel Virtual Machine). They
are not virtual machines strictly because various applications executing on the top still contain
access to every OS service. Thus, they are not restricted to the model of the system.
Full Virtualization
The virtual machine affects hardware to permit a guest operating system to be executed in
separation in full virtualization. It was developed in 1966 using the IBM CP-67 and CP-40
which are the VM family's predecessors.
Some of the examples outside the field of mainframe include Egenera vBlade technology,
Win4Lin Pro, Win4BSD, Mac-on Linux, Adeos, QEMU, VMware ESXi, VMware Server (also
known as GSX Server), VMware Workstation, Hyper-V, Virtual Server, Virtual PC, Oracle
VM, Virtual Iron, VirtualBox, Parallels Desktop for Mac, and Parallels Workstation.
Hardware-assisted virtualization
The hardware facilitates architectural support in hardware-assisted virtualization. This
architectural support provides help for creating a monitor of the virtual machine and permits
various guest operating systems to be executed in separation.
This type of virtualization was first defined in 1972 on the IBM System/370. It was introduced
for applying with VM/370. The initial virtual machine OS provided by IBM was the official
product.
AMD and Intel give additional hardware for supporting virtualization in 2006 and 2005. In
2005, Sun Microsystems (Oracle Corporation) have included similar aspects in the
UltraSPARC T-Series processors. Virtualization platform's examples adapted to some
hardware include Parallels Workstation, VirtualBox, Oracle VM Server for SPARC, Parallels
Desktop for Mac, Xen, Windows Virtual PC, Hyper-V, VMware Fusion, VMware
Workstations, and KVM.
First-generation 64-bit and 32-bit x86 hardware support have been detected to facilitate
performance benefits on software virtualization in 2006.
Operating-system-level virtualization
The environment of the guest operating system shares a similar running instance of an
operating system as any host system. Hence, a similar operating system kernel is used for
implementing guest environments. Also, various applications that are running within the
provided guest environment consider it as the stand-alone system.
The original implementation was FreeBSD jails. Another example includes iCore Virtual
Accounts, Parallels Virtuozzo Containers, AIX Workload Partitions, LXC, Linux-Vserver,
OpenVZ, Solaris Containers, and Dockers.
Full virtualization can be possible with the accurate combination of software and hardware
elements only. For example, full virtualization is not possible using most of the System/360
series of IBM and early System/360 system of IBM.
In 1972, IBM included virtual memory hardware to the series of System/370 which is not
similar to the Intel VT-x Rings. It facilitates a higher-level of privilege for the hypervisor to
handle virtual machines properly.
Full virtualization's primary challenge is the simulation and interception of various privileged
operations like I/O instructions. The consequence of all operations implemented in a provided
VM should be kept inside that VM.
Virtual operations can't be permitted to change any other VM state, hardware, and the control
program.
A few machine instructions could be run via the hardware directly since all the effects are
contained entirely in the components which are handled by the control programs like arithmetic
registers and memory locations.
Although, other instructions (that can pierce the VM) can't be permitted to run directly. They
should rather be simulated and trapped. These types of instructions either affect or access the
state data that is external to the VM.
Full virtualization is highly successful for some of the following reasons:
o Separating users from one other (or from the control program)
o Distribute a single computer system between more than one user
o Imitating new hardware for achieving improved productivity, security, and reliability.
Advantages of VM
o Virtual Machine facilitates compatibility of the software to that software which is
executing on it. Hence, each software specified for a virtualized host would also execute
on the VM.
o It offers isolation among distinct types of processors and OSes. Hence, the processor
OS executing on a single virtual machine can't change the host of any other host systems
and virtual machines.
o Virtual Machine facilitates encapsulation. Various software present over the VM could
be controlled and modified.
o Virtual machines give several features such as the addition of new operating
system. An error in a single operating system will not affect any other operating system
available on the host. It offers the transfer of many files between VMs, and no dual
booting for the multi-OS host.
o VM provides better management of software because VM can execute a complete stack
of software of the run legacy operating system, host machine, etc.
o It can be possible to distribute hardware resources to software stacks independently.
The VM could be transferred to distinct computers for balancing the load.
The first classification discriminates against the service or entity that is being emulated
•Virtualization is mainly used to emulate execution environments, storage and networks
•Execution virtualization is the oldest, most popular
•Process level techniques - on top of existing OS which has full control of the hardware
•System level-Directly on hardware and require minimum support from existing OS
ENVIRONMENT VITUALIZATION:
NETWORK VIRTUALIZATION
PROCESS LEVEL VIRTUALIZATION
WHAT IS EMULATION?
A hypervisor, also known as a virtual machine monitor or VMM. The hypervisor is a piece of
software that allows us to build and run virtual machines which are abbreviated as VMs.
A hypervisor allows a single host computer to support multiple virtual machines (VMs) by
sharing resources including memory and processing.
In other words, this implies that they can be quickly switched between servers. Since a
hypervisor with the help of its special feature, it allows several virtual machines to operate on
a single physical server. So, it helps us to reduce:
Kinds of hypervisors
There are two types of hypervisors: "Type 1" (also known as "bare metal") and "Type 2" (also
known as "hosted"). A type 1 hypervisor functions as a light operating system that operates
directly on the host's hardware, while a type 2 hypervisor functions as a software layer on top
of an operating system, similar to other computer programs.
Since they are isolated from the attack-prone operating system, bare-metal hypervisors are
extremely stable.
Furthermore, they are usually faster and more powerful than hosted hypervisors. For these
purposes, the majority of enterprise businesses opt for bare-metal hypervisors for their data
center computing requirements.
While hosted hypervisors run inside the OS, they can be topped with additional (and different)
operating systems.
The hosted hypervisors have longer latency than bare-metal hypervisors which is a very major
disadvantage of the it. This is due to the fact that contact between the hardware and the
hypervisor must go through the OS's extra layer.
The native or bare metal hypervisor, the Type 1 hypervisor is known by both names.
It replaces the host operating system, and the hypervisor schedules VM services directly
to the hardware.
The type 1 hypervisor is very much commonly used in the enterprise data center or other
server-based environments.
It includes KVM, Microsoft Hyper-V, and VMware vSphere. If we are running the updated
version of the hypervisor then we must have already got the KVM integrated into the Linux
kernel in 2007.
Benefits of hypervisors
o Speed: The hypervisors allow virtual machines to be built instantly unlike bare-metal
servers. This makes provisioning resources for complex workloads much simpler.
o Efficiency: Hypervisors that run multiple virtual machines on the resources of a single
physical machine often allow for more effective use of a single physical server.
o Flexibility: Since the hypervisor distinguishes the OS from the underlying hardware,
the program no longer relies on particular hardware devices or drivers, bare-metal
hypervisors enable operating systems and their related applications to operate on a
variety of hardware types.
o Portability: Multiple operating systems can run on the same physical server thanks to
hypervisors (host machine). The hypervisor's virtual machines are portable because
they are separate from the physical computer.
Container vs hypervisor
Containers and hypervisors also help systems run faster and more efficiently. But they both do
these things in very different manner that is why are different form each other.
The Hypervisors:
o Using virtual machines, an operating system can operate independently from the
underlying hardware.
o Make virtual computing, storage, and memory services available to all.
Containers:
o There is no specific need of the O.S for the program to run, the container makes it sure.
o They only need a container engine to run on any platform or on any operating system.
o Are incredibly versatile since an application has everything it requires to operate within
a container.
Containers and hypervisors have various functions. Containers, unlike virtual machines,
contain only an app and its associated services.
Since they are lighter and more compact than virtual machines, they are often used for rapid
and versatile application creation and movement.
A virtual machine (VM) creates a separate world from the rest of the device, so whatever runs
inside it won't mess with everything else on the host hardware.
Since virtual machines are isolated, even though one is compromised, the rest of the system
should be unaffected.
However, if the hypervisor is compromised, it may trigger issues with all of the VMs that it
handles, putting the data in each one at risk.
The essential characteristics of cloud computing define the important features for successful
cloud computing. If any feature is missing from the defining feature, fortunately, it is not cloud
computing. Let us now discuss what these essential features are:
1. On-demand Service
Customers can self-provision computing resources like server time, storage, network,
applications as per their demands without human intervention, i.e., cloud service provider.
Computing resources are available over the network and can be accessed using heterogeneous
client platforms like mobiles, laptops, desktops, PDAs, etc.
3. Resource Pooling
Computing resources such as storage, processing, network, etc., are pooled to serve multiple
clients. For this, cloud computing adopts a multitenant model where the computing resources
of service providers are dynamically assigned to the customer on their demand.
The customer is not even aware of the physical location of these resources. However, at a
higher level of abstraction, the location of resources can be specified.
4. Sharp elasticity
Computing resources for a cloud customer often appear limitless because cloud resources can
be rapidly and elastically provisioned. The resource can be released at an increasingly large
scale to meet customer demand.
Computing resources can be purchased at any time and in any quantity depending on the
customers' demand.
5. Measured Service
Monitoring and control of computing resources used by clients can be done by implementing
meters at some level of abstraction depending on the type of Service.
The resources used can be reported with metering capability, thereby providing transparency
between the provider and the customer.
Virtualization structure :
Virtualization is technology that you can use to create virtual representations of servers,
storage, networks, and other physical machines. Virtual software mimics the functions of
physical hardware to run multiple virtual machines simultaneously on a single physical
machine.
The term virtualization is often synonymous with hardware virtualization, which plays a
fundamental role in efficiently delivering Infrastructure-as-a-Service (IaaS) solutions
for cloud computing. Moreover, virtualization technologies provide a virtual environment for
not only executing applications but also for storage, memory, and networking.
Virtualization
Host Machine: The machine on which the virtual machine is going to be built is known as
Host Machine.
Guest Machine: The virtual machine is referred to as a Guest Machine.
Work of Virtualization in Cloud Computing
Virtualization has a prominent impact on Cloud Computing. In the case of cloud computing,
users store data in the cloud, but with the help of Virtualization, users have the extra benefit
of sharing the infrastructure. Cloud Vendors take care of the required physical resources, but
these cloud providers charge a huge amount for these services which impacts every user or
organization. Virtualization helps Users or Organisations in maintaining those services which
are required by a company through external (third-party) people, which helps in reducing
costs to the company. This is the way through which Virtualization works in Cloud
Computing.
Benefits of Virtualization
More flexible and efficient allocation of resources.
Enhance development productivity.
It lowers the cost of IT infrastructure.
Remote access and rapid scalability.
High availability and disaster recovery.
Pay peruse of the IT infrastructure on demand.
Enables running multiple operating systems.
Drawback of Virtualization
High Initial Investment: Clouds have a very high initial investment, but it is also true that
it will help in reducing the cost of companies.
Learning New Infrastructure: As the companies shifted from Servers to Cloud, it
requires highly skilled staff who have skills to work with the cloud easily, and for this, you
have to hire new staff or provide training to current staff.
Risk of Data: Hosting data on third-party resources can lead to putting the data at risk, it
has the chance of getting attacked by any hacker or cracker very easily.
Characteristics of Virtualization
Increased Security: The ability to control the execution of a guest program in a
completely transparent manner opens new possibilities for delivering a secure, controlled
execution environment. All the operations of the guest programs are generally performed
against the virtual machine, which then translates and applies them to the host programs.
Managed Execution: In particular, sharing, aggregation, emulation, and isolation are the
most relevant features.
Sharing: Virtualization allows the creation of a separate computing environment within
the same host.
Aggregation: It is possible to share physical resources among several guests, but
virtualization also allows aggregation, which is the opposite process.
For more characteristics, you can refer to Characteristics of Virtualization.
Types of Virtualization
1. Application Virtualization
2. Network Virtualization
3. Desktop Virtualization
4. Storage Virtualization
5. Server Virtualization
6. Data virtualization
Types of Virtualization
1. Application Virtualization: Application virtualization helps a user to have remote access
to an application from a server. The server stores all personal information and other
characteristics of the application but can still run on a local workstation through the internet.
An example of this would be a user who needs to run two different versions of the same
software. Technologies that use application virtualization are hosted applications and
packaged applications.
2. Network Virtualization: The ability to run multiple virtual networks with each having a
separate control and data plan. It co-exists together on top of one physical network. It can be
managed by individual parties that are potentially confidential to each other. Network
virtualization provides a facility to create and provision virtual networks, logical switches,
routers, firewalls, load balancers, Virtual Private Networks (VPN), and workload security
within days or even weeks.
Network Virtualization
3. Desktop Virtualization: Desktop virtualization allows the users’ OS to be remotely stored
on a server in the data center. It allows the user to access their desktop virtually, from any
location by a different machine. Users who want specific operating systems other than
Windows Server will need to have a virtual desktop. The main benefits of desktop
virtualization are user mobility, portability, and easy management of software installation,
updates, and patches.
4. Storage Virtualization: Storage virtualization is an array of servers that are managed by
a virtual storage system. The servers aren’t aware of exactly where their data is stored and
instead function more like worker bees in a hive. It makes managing storage from multiple
sources be managed and utilized as a single repository. storage virtualization software
maintains smooth operations, consistent performance, and a continuous suite of advanced
functions despite changes, breaks down, and differences in the underlying equipment.
5. Server Virtualization: This is a kind of virtualization in which the masking of server
resources takes place. Here, the central server (physical server) is divided into multiple
different virtual servers by changing the identity number, and processors. So, each system
can operate its operating systems in an isolated manner. Where each sub-server knows the
identity of the central server. It causes an increase in performance and reduces the operating
cost by the deployment of main server resources into a sub-server resource. It’s beneficial in
virtual migration, reducing energy consumption, reducing infrastructural costs, etc.
Server Virtualization
6. Data Virtualization: This is the kind of virtualization in which the data is collected from
various sources and managed at a single place without knowing more about the technical
information like how data is collected, stored & formatted then arranged that data logically
so that its virtual view can be accessed by its interested people and stakeholders, and users
through the various cloud services remotely. Many big giant companies are providing their
services like Oracle, IBM, At scale, Cdata, etc.
Uses of Virtualization
Data-integration
Business-integration
Service-oriented architecture data-services
Searching organizational data
ISA virtualization can work through ISA emulation. This is used to run many legacy codes
written for a different hardware configuration. These codes run on any virtual machine using
the ISA. With this, a binary code that originally needed some additional layers to run is now
capable of running on the x86 machines. It can also be tweaked to run on the x64 machine.
With ISA, it is possible to make the virtual machine hardware agnostic.
For the basic emulation, an interpreter is needed, which interprets the source code and then
converts it into a hardware format that can be read. This then allows processing. This is one of
the five implementation levels of virtualization in Cloud Computing..
True to its name HAL lets the virtualization perform at the level of the hardware. This makes
use of a hypervisor which is used for functioning. The virtual machine is formed at this level,
which manages the hardware using the virtualization process. It allows the virtualization of
each of the hardware components, which could be the input-output device, the memory, the
processor, etc.
Multiple users will not be able to use the same hardware and also use multiple virtualization
instances at the very same time. This is mostly used in the cloud-based infrastructure.
At the level of the operating system, the virtualization model is capable of creating a layer that
is abstract between the operating system and the application. This is an isolated container on
the operating system and the physical server, which uses the software and hardware. Each of
these then functions in the form of a server.
When there are several users and no one wants to share the hardware, then this is where the
virtualization level is used. Every user will get his virtual environment using a dedicated virtual
hardware resource. In this way, there is no question of any conflict.
4) Library Level
The operating system is cumbersome, and this is when the applications use the API from the
libraries at a user level. These APIs are documented well, and this is why the library
virtualization level is preferred in these scenarios. API hooks make it possible as it controls the
link of communication from the application to the system.
5) Application Level
The application-level virtualization is used when there is a desire to virtualize only one
application and is the last of the implementation levels of virtualization in Cloud Computing.
One does not need to virtualize the entire environment of the platform.
This is generally used when you run virtual machines that use high-level languages. The
application will sit above the virtualization layer, which in turn sits on the application program.
It lets the high-level language programs compiled to be used at the application level of the
virtual machine run seamlessly.
Full Virtualization
1. Full Virtualization: Full Virtualization was introduced by IBM in the year 1966. It is the
first software solution for server virtualization and uses binary translation and direct approach
techniques. In full virtualization, guest OS is completely isolated by the virtual machine from
the virtualization layer and hardware. Microsoft and Parallels systems are examples of full
virtualization.
2. Para virtualization: Paravirtualization is the category of CPU virtualization which uses
hypercalls for operations to handle instructions at compile time. In paravirtualization, guest
OS is not completely isolated but it is partially isolated by the virtual machine from the
virtualization layer and hardware. VMware and Xen are some examples of
paravirtualization.
Hardware Virtualization
Hardware virtualization is mainly done for the server platforms, because controlling virtual
machines is much easier than controlling a physical server.
Physical resources can be shared among virtual machines. Although the unused resources can
be allocated to a virtual machine and that can be used by other virtual machines if the need
exists.
Now it is possible for multiple operating systems can co-exist on a single hardware platform,
so that the number of servers, rack space, and power consumption drops significantly.
The modern hypervisors provide highly orchestrated operations that maximize the abstraction
of the hardware and help to ensure the maximum uptime. These functions help to migrate a
running virtual machine from one host to another dynamically, as well as maintain a running
copy of virtual machine on another physical host in case the primary host fails.
4) Increased IT Flexibility:
Hardware virtualization helps for quick deployment of server resources in a managed and
consistent ways. That results in IT being able to adapt quickly and provide the business with
resources needed in good time.
Memory Interfacing
When we are executing any instruction, the address of memory location or an I/O device is sent
out by the microprocessor. The corresponding memory chip or I/O device is selected by a
decoding circuit.
Memory requires some signals to read from and write to registers and microprocessor transmits
some signals for reading or writing data.
The interfacing process includes matching the memory requirements with the microprocessor
signals. Therefore, the interfacing circuit should be designed in such a way that it matches the
memory signal requirements with the microprocessor's signals.
I/O interfacing
As we know, keyboard and displays are used as communication channel with outside world.
Therefore, it is necessary that we interface keyboard and displays with the microprocessor.
This is called I/O interfacing. For this type of interfacing, we use latches and buffers for
interfacing the keyboards and displays with the microprocessor.
But the main drawback of this interfacing is that the microprocessor can perform only one
function.
UNIT III VIRTUALIZATION INFRASTRUCTURE AND DOCKER 7
Desktop Virtualization
Desktop virtualization creates a software-based (or virtual) version of an end user’s
desktop environment and operating system (OS) that is decoupled from the end user’s
computing device or client. This enables the user to access his or her desktop from any
computing device.
Desktop virtualization deployment models
Virtual desktop infrastructure (VDI)
In VDI deployment model, the operating system runs on a virtual machine (VM)
hosted on a server in a data center. The desktop image travels over the network to the end
user’s device, where the end user can interact with the desktop (and the underlying
applications and operating system) as if they were local.
VDI gives each user his or her own dedicated VM running its own operating system. The
operating system resources—drivers, CPUs, memory, etc.—operate from a software layer
called a hypervisor that mimics their output, manages the resource allocation to multiple
VMs, and allows them to run side by side on the same server.
A key benefit of VDI is that it can deliver the Windows 10 desktop and operating system to
the end user’s devices. However, because VDI supports only one user per Windows 10
instance, it requires a separate VM for each Windows 10 user.
Remote desktop services (RDS)
In RDS—also known as Remote Desktop Session Host (RDSH)—users remotely access
desktops and Windows applications through the Microsoft Windows Server operating
system. Applications and desktop images are served via Microsoft Remote Desktop Protocol
(RDP). Formerly known as Microsoft Terminal Server, this product has remained largely
unchanged since its initial release.
From the end user’s perspective, RDS and VDI are identical. But because one instance of
Windows Server can support as many simultaneous users as the server hardware can handle,
RDS can be a more cost-effective desktop virtualization option. It’s also worth noting
applications tested or certified to run on Windows 10 may not be tested or certified to run on
the Windows Server OS.
Desktop-as-a-Service (DaaS)
In DaaS, VMs are hosted on a cloud-based backend by a third-party provider. DaaS is readily
scalable, can be more flexible than on-premise solutions, and generally deploys faster than
many other desktop virtualization options.
Like other types of cloud desktop virtualization, DaaS shares many of the general benefits of
cloud computing, including support for fluctuating workloads and changing storage demands,
usage-based pricing, and the ability to make applications and data accessible from almost any
internet-connected device. The chief drawback to DaaS is that features and configurations are
not always as customizable as required.
Benefits of desktop virtualization
Virtualizing desktops provides many potential benefits that can vary depending upon
the deployment model you choose.
Simpler administration. Desktop virtualization can make it easier for IT teams to manage
employee computing needs. Your business can maintain a single VM template for employees
within similar roles or functions instead of maintaining individual computers that must be
reconfigured, updated, or patched whenever software changes need to be made. This saves
time and IT resources.
Cost savings. Many virtual desktop solutions allow you to shift more of your IT budget from
capital expenditures to operating expenditures. Because compute-intensive applications
require less processing power when they’re delivered via VMs hosted on a data center server,
desktop virtualization can extend the life of older or less powerful end-user devices. On-
premise virtual desktop solutions may require a significant initial investment in server
hardware, hypervisor software, and other infrastructure, making cloud-based DaaS—wherein
you simply pay a regular usage-based charge—a more attractive option.
Improved productivity.
Desktop virtualization makes it easier for employees to access enterprise computing
resources. They can work anytime, anywhere, from any supported device with an Internet
connection.
Support for a broad variety of device types.
Virtual desktops can support remote desktop access from a wide variety of devices,
including laptop and desktop computers, thin clients, zero clients, tablets, and even some
mobile phones. You can use virtual desktops to deliver workstation-like experiences and
access to the full desktop anywhere, anytime, regardless of the operating system native to the
end user device.
Stronger security.
In desktop virtualization, the desktop image is abstracted and separated from the
physical hardware used to access it, and the VM used to deliver the desktop image can be a
tightly controlled environment managed by the enterprise IT department.
Agility and scalability.
It’s quick and easy to deploy new VMs or serve new applications whenever
necessary, and it is just as easy to delete them when they’re no longer needed.
Better end-user experiences.
When you implement desktop virtualization, your end users will enjoy a feature-rich
experience without sacrificing functionality they’ve come to rely on, like printing or access to
USB ports.
Network Virtualization
Network virtualization can include storage virtualization, which contains managing all storage
as an individual resource. Network virtualization is created to enable network optimization of
data transfer rates, flexibility, scalability, reliability, and security. It automates many network
management functions, which disguise a network's true complexity. All network servers and
services are considered as one pool of resources, which can be used independently of the
physical elements.
Virtualization can be defined as making a computer that runs within another computer. The
virtual computer, or guest device, is a fully functional computer that can manage the same
processes your physical device can. The processes performed by the guest device are separated
from the basic processes of your host device. You can run several guest devices on your host
device and each one will identify the others as an independent computer.
Advantages of Network Virtualization
Lower hardware costs − With network virtualization, entire hardware costs are
reduced, while providing a bandwidth that is more efficient.
Storage Virtualization
Storage virtualization is the pooling of physical storage from multiple storage devices
into what appears to be a single storage device -- or pool of available storage capacity. A
central console manages the storage.
Storage virtualization is becoming more and more important in various other forms:
File servers: The operating system writes the data to a remote location with no need to
understand how to write to the physical media.
WAN Accelerators: Instead of sending multiple copies of the same data over the WAN
environment, WAN accelerators will cache the data locally and present the re-requested blocks
at LAN speed, while not impacting the WAN performance.
SAN and NAS: Storage is presented over the Ethernet network of the operating system. NAS
presents the storage as file operations (like NFS). SAN technologies present the storage as
block level storage (like Fibre Channel). SAN technologies receive the operating instructions
only when if the storage was a locally attached device.
Storage Tiering: Utilizing the storage pool concept as a stepping stone, storage tiering analyze
the most commonly used data and places it on the highest performing storage pool. The lowest
one used data is placed on the weakest performing storage pool.
This operation is done automatically without any interruption of service to the data consumer.
Application Virtualization
Virtualization is technology that you can use to create virtual representations of
servers, storage, networks, and other physical machines. Virtual software mimics the functions
of physical hardware to run multiple virtual machines simultaneously on a single physical
machine.
Disadvantages Of App Virtualization
The advantages of virtualized environments are numerous and include some of the following,
which are related to the proliferation of mobile and mixed working environments:
The provisioning of VMs to a virtual cluster is done dynamically to have the following
interest-ing properties:
The virtual cluster nodes can be either physical or virtual machines. Multiple VMs running
with different OSes can be deployed on the same physical node.
• A VM runs with a guest OS, which is often different from the host OS, that manages the
resources in the physical machine, where the VM is implemented.
• The purpose of using VMs is to consolidate multiple functionalities on the same server.
This will greatly enhance server utilization and application flexibility.
VMs can be colonized (replicated) in multiple servers for the purpose of promoting
distributed parallelism, fault tolerance, and disaster recovery.
• The size (number of nodes) of a virtual cluster can grow or shrink dynamically, similar to
the way an overlay network varies in size in a peer-to-peer (P2P) network.
The failure of any physical nodes may disable some VMs installed on the failing nodes. But
the failure of VMs will not pull down the host system.
Since system virtualization has been widely used, it is necessary to effectively manage VMs
running on a mass of physical computing nodes (also called virtual clusters) and consequently
build a high-performance virtualized computing environment. This involves virtual cluster
deployment, monitoring and management over large-scale clusters, as well as resource
scheduling, load balancing, server consolidation, fault tolerance, and other techniques. The
different node colors in Figure 3.18 refer to different virtual clusters. In a virtual cluster system,
it is quite important to store the large number of VM images efficiently.
Network Migration:
Virtual Cluster Management:
Container Vs Virtual Machine
Virtual Machine
It runs on top of an emulating software called the hypervisor which sits between the
hardware and the virtual machine. The hypervisor is the key to enabling virtualization. It
manages the sharing of physical resources into virtual machines. Each virtual machine runs
its guest operating system. They are less agile and have lower portability than containers.
Container:
It sits on the top of a physical server and its host operating system. They share a
common operating system that requires care and feeding for bug fixes and patches. They
are more agile and have higher portability than virtual machines.
SNo. Virtual Machines(VM) Containers
4. VM size is very large, generally in While the size of the container is very
gigabytes. light, generally a few hundred
megabytes, though it may vary as per
use.
5. VM takes longer to run than While containers take far less time to
containers, the exact time depending run.
on the underlying hardware.
7. VM is more secure, as the underlying While containers are less secure, as the
hardware isn’t shared between virtualization is software-based, and
processes. memory is shared.
8. VMs are useful when we require all of While containers are useful when we
the OS resources to run various are required to maximize the running
applications. applications using minimal servers.
INTRODUCTION TO DOCKER:
Docker is a set of platforms as a service (PaaS) products that use Operating system-
level virtualization to deliver software in packages called containers. Containers are isolated
from one another and bundle their own software, libraries, and configuration files; they can
communicate with each other through well-defined channels. All containers are run by a
single operating system kernel and therefore use fewer resources than a virtual machine.
Docker Containers
Docker containers are the lightweight alternatives of the virtual machine. It allows
developers to package up the application with all its libraries and dependencies, and ship it as
a single package. The advantage of using a docker container is that you don't need to allocate
any RAM and disk space for the applications. It automatically generates storage and space
according to the application requirement.
o Docker allows us to easily install and run software without worrying about setup or
dependencies.
o Developers use Docker to eliminate machine problems, i.e. "but code is worked on
my laptop." when working on code together with co-workers.
o Operators use Docker to run and manage apps in isolated containers for better compute
density.
o Enterprises use Docker to securely built agile software delivery pipelines to ship new
application features faster and more securely.
o Since docker is not only used for the deployment, but it is also a great platform for
development, that's why we can efficiently increase our customer's satisfaction.
Advantages of Docker
o It runs the container in seconds instead of minutes.
o It uses less memory.
o It provides lightweight virtualization.
o It does not a require full operating system to run applications.
o It uses application dependencies to reduce the risk.
o Docker allows you to use a remote repository to share your container with others.
o It provides continuous deployment and testing environment.
Disadvantages of Docker
Docker Engine
Prerequisite
Before learning Docker, you must have the fundamental knowledge of Linux and programming
languages such as java, php, python, ruby, etc.
DOCKER ARCHITECTURE
Docker follows Client-Server architecture, which includes the three main components
that are Docker Client, Docker Host, and Docker Registry.
1. Docker Client
Docker client uses commands and REST APIs to communicate with the Docker
Daemon (Server). When a client runs any docker command on the docker client terminal, the
client terminal sends these docker commands to the Docker daemon. Docker daemon receives
these commands from the docker client in the form of command and REST API's request.
Docker Client uses Command Line Interface (CLI) to run the following commands -
docker build
docker pull
docker run
2. Docker Host
Docker Host is used to provide an environment to execute and run applications. It contains the
docker daemon, images, containers, networks, and storage.
3. Docker Registry
Docker Objects
There are the following Docker Objects -
Docker Images
Docker images are the read-only binary templates used to create Docker Containers. It uses
a private container registry to share container images within the enterprise and also uses public
container registry to share container images within the whole world. Metadata is also used by
docket images to describe the container's abilities.
Docker Containers
Containers are the structural units of Docker, which is used to hold the entire package that is
needed to run the application. The advantage of containers is that it requires very less resources.
In other words, we can say that the image is a template, and the container is a copy of that
template.
Docker Networking
Using Docker Networking, an isolated package can be communicated. Docker contains the
following network drivers -
o Bridge - Bridge is a default network driver for the container. It is used when multiple
docker communicates with the same docker host.
o Host - It is used when we don't need for network isolation between the container and
the host.
o None - It disables all the networking.
o Overlay - Overlay offers Swarm services to communicate with each other. It enables
containers to run on the different docker host.
o Macvlan - Macvlan is used when we want to assign MAC addresses to the containers.
Docker Storage
Docker Storage is used to store data on the container. Docker offers the following options for
the Storage -
o Data Volume - Data Volume provides the ability to create persistence storage. It also
allows us to name volumes, list volumes, and containers associates with the volumes.
o Directory Mounts - It is one of the best options for docker storage. It mounts a host's
directory into a container.
o Storage Plugins - It provides an ability to connect to external storage platforms.
Docker Container
Docker Container is a virtual environment that bundles application code with all the
dependencies required to run the application. The application runs quickly and reliably from
one computing environment to another
Docker
Docker is currently one of the most widely used Container platforms on the market. You
can create and use Linux containers with Docker. You can easily create, deploy and run
applications using Docker. Canonical and Red Hat both use Docker and also companies
like Amazon, Oracle and Microsoft have embraced it.
LXC
LinuxContainers.org’s open-source project LXC is also a popular Container Platform on
the market whose goal is to provide app environments that are like the VMs but they do not
have the overhead. LXC does not have a central daemon because it follows the Unix
process model. This means that instead of having one central program that manages it, all
the containers behave like they are being managed by different, individual programs. LXC
is pretty different from Docker because, in LXC, you will be able to run multiple processes
using an LXC Container, on the other hand, it is better if you run one process in each
Container in Docker.
CRI-O
CRI-O is also an open-source tool. It is an implemented version of the Kubernetes CRI
(Container Runtime Interface). The goal of this tool is to replace Docker and become
the Kubernetes Container Engine.
rkt
Much like LXC, rkt also does not have a central daemon and therefore it gives you the
freedom to control individual containers more easily. But Docker offers end-to-end
solutions, which they do not. But they have a community and set of tools that rival Docker.
Podman
This Container Engine is also open-source. This has pretty much the same role as Docker
but they function a bit differently, because like LXC and rkt, Podman also lacks a central
daemon. This means that in Docker if the central daemon is out of service, all the
containers will stop functioning. But the Containers in Podman are self-sufficient and can
be managed individually.
RunC
runC is a universal lightweight container runtime. Even though it began as a low-level
component of Docker, it is now a separate modular tool. It provides you with a more
portable container environment. This container runtime can work both with Docker and
without any other container system.
containerd
Windows and Linux both support containerd, which is technically a daemon. Its purpose is
to act as an interface between a container runtime and a container engine. It was also one of
the building blocks of Docker, much like runC. And also like runC, it is now an open-
source project.
Cost Reduction
Since they are more lightweight, Containers require a lot less memory than VMs or Virtual
Machines. If a company or organization wants to cut back on their cloud computing costs,
they can always opt for Containers instead of VMs as they have less expensive needs.
Security
There are no interactions that take place between different containers. So, if one of them
crashes or gets hacked for some reason, the others can run smoothly despite that hiccup.
Since the problem will be confined to one of the Containers, the whole development
process will not slow down too much.
Portable
As we have already mentioned, Containers are very light and agile. They can be run on
virtually any system, be it, Macs, Windows, Linux, or the Cloud. If a developer needs a
Container, it will be ready to run under any circumstances.
If you want to know more about DevOps containers and how they work, you can take
the DevOps Foundation Certification Training. Here you can learn all you need about
how to work with Containers, the types of Containers and why developers use them in
greater detail.
You can also see what are some of the most common ways to make sure you are taking full
advantage of the Containers. Here is how -
1. Containers are used by some organizations when they want to move applications to
more modern environments. This process has some of the benefits of OS
Virtualization. However, a modern, Container-based app architecture has more
benefits. This process is also known as lift and shift migration.
2. You can also refactor the applications that you already have for Containers. Though it
will be more comprehensive, you will also be able to use all the benefits of a
Container environment. And if you develop applications that are Container native,
you can also reap the benefits of a container environment.
3. If you use individual Containers, then you can distribute microservices and
applications alike to be easily located, deployed and scaled.
4. Jobs like Batch Processing and ETL functions which are repetitive and usually run in
the background can be easily supported with the help of Containers.
5. Continuous Integration and Continuous Deployment (CI/CD) can also be easily
pipelined with Containers as they can create, test and deploy simplified images. This
also unlocks the full potential of a Container environment much like refactoring.
docker images
Example:
$ docker ls
Untagged: <image_id>
Deleted: sha256:<image_id>
DOCKER REPOSITORIES:
A repository potentially holds multiple variants of an image. This means: A Docker
image can belong to a repository, e.g. when it was pushed to a Docker registry (with docker
push my/reporitory:version1 ). On the other side, a repository contains multiple versions of
an image (= different tags).
UNIT IV CLOUD DEPLOYMENT ENVIRONMENT
Google App Engine – Amazon AWS – Microsoft Azure; Cloud Software Environments
– Eucalyptus – OpenStack.
Google provides GAE free up to a certain amount of use for the following resources:
processor (CPU)
storage
concurrent requests
Users exceeding the per-day or per-minute rates can pay for more of these resources.
Automated management
Looking deeper into Google App Engine's automated management reveals a world where
manual intervention is minimised. Google App Engine takes the reins when it comes to
managing applications. From maintaining the core infrastructure to adeptly routing traffic,
overseeing software patches, and ensuring a robust failover system, this tool does it all. For
Developers and businesses, this translates to a significant reduction in operational intricacies
and the hours usually spent on infrastructure oversight.
Scalability
Google App Engine has a one of a kind scalability feature. Imagine an application that
intelligently scales up or down in response to the ebb and flow of user traffic, ensuring
consistent performance without manual tweaks. Google App Engine's automatic scaling
discerns the needs of the application based on traffic and usage patterns, empowering it to
handle even unexpected surges in demand effortlessly.
Integrated environment
The synergy between various Google Cloud Computing services is palpable when you use
Google App Engine. A harmonious integration with platforms like Cloud Datastore, Cloud
Storage, and Google Workspace paves the way for a holistic development environment. This
not only streamlines the development process but also offers a plethora of tools and services at
one's fingertips. Such an integrated approach fosters efficiency, making it simpler to both
develop and sustain applications over time.
GAE extends the benefits of cloud computing to application development, but it also has
drawbacks.
Benefits of GAE
Ease of setup and use. GAE is fully managed, so users can write code without
considering IT operations and back-end infrastructure. The built-in APIs enable users to
build different types of applications. Access to application logs also
facilitates debugging and monitoring in production.
Pay-per-use pricing. GAE's billing scheme only charges users daily for the resources they
use. Users can monitor their resource usage and bills on a dashboard.
Scalability. Google App Engine automatically scales as workloads fluctuate, adding and
removing application instances or application resources as needed.
Security. GAE supports the ability to specify a range of acceptable Internet Protocol (IP)
addresses. Users can allowlist specific networks and services and blocklist specific IP
addresses.
GAE challenges
Performance limits. CPU-intensive operations are slow and expensive to perform using
GAE. This is because one physical server may be serving several separate, unrelated app
engine users at once who need to share the CPU.
Limited access. Developers have limited, read-only access to the GAE filesystem.
Java limits. Java apps cannot create new threads and can only use a subset of the Java
runtime environment standard edition classes.
It is also used to build scalable back end mobile applications. These are then used to adapt
workloads as needed. Google App Engine can also be used for application testing where users
can route traffic to different application versions.
GAE ARCHITECTURE:
GAE Architecture. App Engine is created under Google Cloud Platform project when
an application resource is created. The Application part of GAE is a top-level container that
includes the service, version and instance-resources that make up the app.
1) Datastore: Serving as the central data management system in Cloud Computing, Google
App Engine's Datastore is a NoSQL database renowned for its scalability. What sets it apart is
its dynamic nature, adapting in real-time to the demands of the application. Whether it's a minor
data retrieval or a massive data influx, the datastore scales on-the-fly, ensuring that data
remains consistently accessible and safeguarded against potential threats.
2) Task queues: In any application, there exist tasks that don’t necessitate immediate user
feedback. Google App Engine's Task queues are designed to manage such background
operations. By queuing these tasks, they're executed asynchronously, optimising application
performance and ensuring users aren't bogged down with processing delays.
4) Blobstore: In today's digital age, applications often deal with voluminous data, be it high-
definition images, videos, or other large files. The Blobstore is Google App Engine's dedicated
solution for such requirements. By efficiently managing and storing these large objects, it
ensures that the primary datastore isn’t overwhelmed, maintaining a harmonious data
ecosystem.
5) Automatic scaling: One of Google App Engine’s crowning features, Automatic Scaling,
epitomises proactive resource management. By continually monitoring application traffic and
user requests, it dynamically scales resources. This ensures optimal performance even during
unexpected traffic surges, eliminating the need for manual adjustments and guaranteeing a
consistently smooth user experience.
6) Integrated services: Google App Engine isn't an isolated entity but a cog in the vast
machinery of Google Cloud Computing services. Its ability to seamlessly mesh with other
services, from Data Analytics platforms to state-of-the-art Machine Learning tools, transforms
it from a mere hosting platform to a comprehensive, integrated Cloud solution. This
interoperability enhances the capabilities of applications hosted on Google App Engine, giving
Developers a richer toolset to work with
Amazon AWS :
o AWS stands for Amazon Web Services.
o The AWS service is provided by the Amazon that uses distributed IT infrastructure to
provide different IT resources available on demand. It provides different services such
as infrastructure as a service (IaaS), platform as a service (PaaS) and packaged software
as a service (SaaS).
o Amazon launched AWS, a cloud computing platform to allow the different
organizations to take advantage of reliable IT infrastructure.
Uses of AWS
o A small manufacturing organization uses their expertise to expand their business by
leaving their IT management to the AWS.
o A large enterprise spread across the globe can utilize the AWS to deliver the training to
the distributed workforce.
o An architecture consulting company can use AWS to get the high-compute rendering
of construction prototype.
o A media company can use the AWS to provide different types of content such as ebox
or audio files to the worldwide files.
Pay-As-You-Go
Based on the concept of Pay-As-You-Go, AWS provides the services to the customers.
AWS provides services to customers when required without any prior commitment or upfront
investment. Pay-As-You-Go enables the customers to procure services from AWS.
o Computing
o Programming models
o Database storage
o Networking
Advantages of AWS
1) Flexibility
o We can get more time for core business tasks due to the instant availability of new
features and services in AWS.
o It provides effortless hosting of legacy applications. AWS does not require learning
new technologies and migration of applications to the AWS provides the advanced
computing and efficient storage.
o AWS also offers a choice that whether we want to run the applications and services
together or not. We can also choose to run a part of the IT infrastructure in AWS and
the remaining part in data centres.
2) Cost-effectiveness
AWS requires no upfront investment, long-term commitment, and minimum expense when
compared to traditional IT infrastructure that requires a huge investment.
3) Scalability/Elasticity
Through AWS, autoscaling and elastic load balancing techniques are automatically scaled up
or down, when demand increases or decreases respectively. AWS techniques are ideal for
handling unpredictable or very high loads. Due to this reason, organizations enjoy the benefits
of reduced cost and increased user satisfaction.
4) Security
Microsoft Azure:
Azure is Microsoft’s cloud platform, just like Google has its Google Cloud and
Amazon has its Amazon Web Service or AWS.000. Generally, it is a platform through which
we can use Microsoft’s resources. For example, to set up a huge server, we will require huge
investment, effort, physical space, and so on. In such situations, Microsoft Azure comes to
our rescue. It will provide us with virtual machines, fast processing of data, analytical and
monitoring tools, and so on to make our work simpler. The pricing of Azure is also simpler
and cost-effective.
Virtual machines, storage, and networking will come under the category of infrastructure as
a service but the users have to do manually the build and deploy of the applications. Azure
will support a wide range of operating systems because of its Hyper-hypervisor.
Azure app service, Azure functions, and logic apps are some services that are offered by
Azure under the platform as a service. This service will provide autoscaling and load
balancing and also there will be a pre-configured environment for the application.
Office 365, Dynamics 365, and Azure Active Directory are some of the services provided by
Microsoft Azure under Software as a Service (SaaS) the complete application will be
managed by the Microsoft azure including deploying, scaling and load balancing.
Following are the some the use cases that Microsoft Azure Used.
Deployment Of applications: You can develop and deploy the application in the azure
cloud by using the service called Azure App Service and Azure Functions after
deploying the applications end users can access it.
Identity and Access Managment: The application and data which is deployed and
stored in the Microsoft Azure can be secured with the help of Identity and Access
Managment. It’s commonly used for single sign-on, multi-factor authentication, and
identity governance.
Data Storage and Databases: You can store the data in Microsoft azure in service like
blob storage for unstructured data, table storage for NoSQL data, file storage, and Azure
SQL Database for relational databases. The service can be scaled depending on the
amount of data we are getting.
DevOps and Continuous Integration/Continuous Deployment (CI/CD): Azure
DevOps will provide some tools like ncluding version control, build automation, release
management, and application monitoring.
Azure for DR and Backup
A full range of disaster recovery (DR) and backup services are available from Microsoft
Azure to help shield your vital data and apps from interruptions. With the help of these
services, you may quickly restore your data and applications in the event of a disaster by
replicating them to a secondary cloud site. Azure backup services also protect your data from
ransomware attacks, unintentional deletion, and corruption.
Difference between AWS (Amazon Web Services), Google Cloud, and Azure
AWS Google Cloud Azure
Databases Technologies
Supported pioneered by
AWS fully Google, like Azure supports
supports Big Query, Big both relational and
relational and Table, and NoSQL through
NoSQL Hadoop, are Windows
databases and databases, and AzureTable and
Big Data. Big HDInsight.
Data,naturally
fully supported.
Difficulties Many
enterprises find
it difficult to Fewer features Less “Enterprise-
understand the and services. ready.
company cost
structure.
AWS Google Cloud Azure
Storage Blob
Services Simple Storage
Storage Queue Cloud
Service(S3) Storage. storage.
Elastic File Persistent
Block Storage Disk
Storage. Disk Transfer
Elastic File Storage. appliance.
storage. Data Lake
Store
In a cloud environment, consumers can deploy and run their software applications on a
sophisticated infrastructure that is owned and managed by a cloud provider (eg, Amazon Web
Services, Microsoft Azure, and Google Cloud Platform).
The Java Development Kit (JDK) is one example of a software environment. The JDK
contains tools for developing Java-based applications. The JDK also includes an integrated
development environment (IDE), which allows developers to write code in one window while
viewing output from another window
Microsoft Azure
Microsoft Azure, formerly known as Windows Azure, is Microsoft's public cloud
computing platform. It provides a broad range of cloud services, including compute, analytics,
storage and networking.
Azure Services
o Compute services: It includes the Microsoft Azure Cloud Services, Azure Virtual
Machines, Azure Website, and Azure Mobile Services, which processes the data on the
cloud with the help of powerful processors.
o Data services: This service is used to store data over the cloud that can be scaled
according to the requirements. It includes Microsoft Azure Storage (Blob, Queue Table,
and Azure File services), Azure SQL Database, and the Redis Cache.
o Application services: It includes services, which help us to build and operate our
application, like the Azure Active Directory, Service Bus for connecting distributed
systems, HDInsight for processing big data, the Azure Scheduler, and the Azure Media
Services.
o Network services: It helps you to connect with the cloud and on-premises
infrastructure, which includes Virtual Networks, Azure Content Delivery Network, and
the Azure Traffic Manager.
It is essential to understand the internal workings of Azure so that we can design our
applications on Azure effectively with high availability, data residency, resilience, etc.
Microsoft Azure is completely based on the concept of virtualization. So, similar to other
virtualized data center, it also contains racks. Each rack has a separate power unit and network
switch, and also each rack is integrated with a software called Fabric-Controller. This Fabric-
controller is a distributed application, which is responsible for managing and monitoring
servers within the rack. In case of any server failure, the Fabric-controller recognizes it and
recovers it. And Each of these Fabric-Controller is, in turn, connected to a piece of software
called Orchestrator. This Orchestrator includes web-services, Rest API to create, update, and
delete resources.
When a request is made by the user either using PowerShell or Azure portal. First, it will go to
the Orchestrator, where it will fundamentally do three things:
Combinations of racks form a cluster. We have multiple clusters within a data center, and we
can have multiple Data Centers within an Availability zone, multiple Availability zones within
a Region, and multiple Regions within a Geography.
Azure covers more global regions than any other cloud provider, which offers the scalability
needed to bring applications and users closer around the world. It is globally available in 50
regions around the world. Due to its availability over many regions, it helps in preserving data
residency and offers comprehensive compliance and flexible options to the customers.
Eucalyptus – OpenStack.
Eucalyptus and OpenStack are both open-source cloud computing platforms that enable
the creation and management of private and hybrid clouds. While they share similar goals,
there are several key differences between the two platforms.
Eucalyptus Architecture
Eucalyptus CLIs can handle Amazon Web Services and their own private instances. Clients
have the independence to transfer cases from Eucalyptus to Amazon Elastic Cloud. The
virtualization layer oversees the Network, storage, and Computing. Occurrences are isolated
by hardware virtualization.
Important Features are:-
1. Images: A good example is the Eucalyptus Machine Image which is a module software
bundled and uploaded to the Cloud.
2. Instances: When we run the picture and utilize it, it turns into an instance.
3. Networking: It can be further subdivided into three modes: Static mode(allocates IP
address to instances), System mode (assigns a MAC address and imputes the instance’s
network interface to the physical network via NC), and Managed mode (achieves local
network of instances).
4. Access Control: It is utilized to give limitations to clients.
5. Elastic Block Storage: It gives block-level storage volumes to connect to an instance.
6. Auto-scaling and Load Adjusting: It is utilized to make or obliterate cases or
administrations dependent on necessities.
Components of Architecture
Node Controller is the lifecycle of instances running on each node. Interacts with the
operating system, hypervisor, and Cluster Controller. It controls the working of VM
instances on the host machine.
Cluster Controller manages one or more Node Controller and Cloud Controller
simultaneously. It gathers information and schedules VM execution.
Storage Controller (Walrus) Allows the creation of snapshots of volumes. Persistent
block storage over VM instances. Walrus Storage Controller is a simple file storage
system. It stores images and snapshots. Stores and serves files using S3(Simple Storage
Service) APIs.
Cloud Controller Front-end for the entire architecture. It acts as a Complaint Web
Services to client tools on one side and interacts with the rest of the components on the
other side.
Managed Mode: Numerous security groups to users as the network is large. Each security
group is assigned a set or a subset of IP addresses. Ingress rules are applied through the
security groups specified by the user. The network is isolated by VLAN between Cluster
Controller and Node Controller. Assigns two IP addresses on each virtual machine.
Managed (No VLAN) Node: The root user on the virtual machine can snoop into other
virtual machines running on the same network layer. It does not provide VM network
isolation.
System Mode: Simplest of all modes, least number of features. A MAC address is
assigned to a virtual machine instance and attached to Node Controller’s bridge Ethernet
device.
Static Mode: Similar to system mode but has more control over the assignment of IP
address. MAC address/IP address pair is mapped to static entry within the DHCP server.
The next set of MAC/IP addresses is mapped.
1. Eucalyptus can be utilized to benefit both the eucalyptus private cloud and the eucalyptus
public cloud.
2. Examples of Amazon or Eucalyptus machine pictures can be run on both clouds.
3. Its API is completely similar to all the Amazon Web Services.
4. Eucalyptus can be utilized with DevOps apparatuses like Chef and Puppet.
5. Although it isn’t as popular yet but has the potential to be an alternative to OpenStack and
CloudStack.
6. It is used to gather hybrid, public and private clouds.
7. It allows users to deliver their own data centers into a private cloud and hence, extend the
services to other organizations.
OpenStack.
OpenStack is a cloud OS that is used to control the large pools of computing, storage,
and networking resources within a data center. OpenStack is an open-source and free
software platform. This is essentially used and implemented as an IaaS for cloud computing.
Open Source: Under the Apache 2.0 license, OpenStack is coded and published. Apache
allows the community to use it for free.
Open Design: For the forthcoming update, the development group holds a Design Summit
every 6 months.
Open Development: The developers maintain a source code repository that is freely accessible
through projects like the Ubuntu Linux distribution via entig100s.
Open Community: OpenStack allows open and transparent documentation for the
community.
Components of OpenStack
Object Storage (Swift): To store and retrieve arbitrary data in the cloud, object storage is used.
In Swift, it is possible to store the files, objects, backups, images, videos, virtual machines, and
other unstructured data. Developers may use a special identifier for referring the file and objects
in place of the path, which directly points to a file and allows the OpenStack to manage where
to store the files.
Block Storage (Cinder): This works in the traditional way of attaching and detaching an
external hard drive to the OS for its local use. Cinder manages to add, remove, create new disk
space in the server. This component provides the virtual storage for the virtual machines in the
system.
Dashboard (Horizon): This is the first component that the user sees in the OpenStack. Horizon
is the web UI (user interface) component used to access the other back-end services. Through
individual API (Application programming interface), developers can access the OpenStack's
components, but through the dashboard, system administrators can look at what is going on in
the cloud and manage it as per their need.
Identity Service (Keystone): It is the central repository of all the users and their permissions
for the OpenStack services they use. This component is used to manage identity services like
authorization, authentication, AWS Styles (Amazon Web Services) logins, token-based
systems, and checking the other credentials (username & password).
Image Service (Glance): The glance component is used to provide the image services to
OpenStack. Here, image service means the images or virtual copies of hard disks. When we
plan to deploy a new virtual machine instance, then glance allows us to use these images as
templates. Glance allows virtual box (VDI), VMware (VMDK, OVF), Raw, Hyper-V (VHD)
and KVM (qcow2) virtual images.
Telemetry (Ceilometer): It is used to meter the usage and report it to OpenStack's individual
users. So basically, Telementry provides billing services to OpenStack's individual users.
Orchestration (Heat): It allows the developers to store the cloud application's necessities as a
file so that all-important resources are available in handy. This component organizes many
complex applications of the cloud through the templates, via both the local OpenStack REST
API and Query API.
Shared File System (Manila): It offers storage of the file to a virtual machine. This component
gives an infrastructure for managing and provisioning file shares.
Elastic Map-reduce (Sahara): The Sahara component offers a simple method to the users to
preplanned Hadoop clusters by referring to the multiple options such as the Hadoop version,
cluster topology and hardware details of nodes and some more.
Basically, OpenStack is a series of commands which is called scripts. And these scripts
are packed into packages, which are called projects that rely on tasks that create cloud
environments. OpenStack relies on two other forms of software in order to construct certain
environments:
o Virtualization means a layer of virtual resources basically abstracted from the hardware.
o A base OS that executes commands basically provided by OpenStack Scripts.
So, we can say all three technologies, i.e., virtualization, base operating system, and OpenStack
must work together.
The Horizon is an interface for the appliance environment. Anything that the user wants
to do should use the Horizon (Dashboard). The Dashboard is a simple graphical user
interface with multiple modules, where each module performs specific tasks.
All the actions in OpenStack work by the service API call. So, if you are performing any
task, it means you are calling a service API. Each API call is first validated by Keystone.
So, you will have to login yourself as a registered user with your login username and
password before you enter the OpenStack dashboard.
Once you successfully log in to the OpenStack dashboard, you will get many options to
create new instances, volumes, Cinder, and configure the network.
Instances are nothing but a virtual machine or environment. To generate a new VM, use
the 'instances' option from the OpenStack dashboard. In these instances, you can configure
your cloud. Instances can be RedHat, OpenSUSE, Ubuntu, etc.
The formation of an instance is also an API call. You can configure network information
in the instances. You can connect these instances to the cinder instance or volume to add
more services.
After the successful creation of an instance, you can configure it, you can access it through
CLI, and whatever data you want to add, you can do it. Even you can set up an instance to
manage and store the snapshots for future reference or backup purposes.
Benefits of OpenStack
There are a lot of benefits of OpenStack in the cloud computing platform. Let's see one by one
:
1. Open Source
As we know, using the open-source environment, we can create a truly defined data center.
OpenStack is the largest open-source platform. It offers the networking, computing, and storage
subsystems in a single platform. Some vendors (such as RedHat) have developed and continue
to support their own OpenStack distributions.
OpenStack source code is available at github. The two main advantages of the open-source
OpenStack project is :
o OpenStack can be modified according to your rising demand - As per your requirement,
you can add the extra features in OpenStack.
o It can be used without any limitations - Since OpenStack is a freely available project,
so there are no limitations or restrictions to use it. You can use it as per your
requirement. There are no limits for what purpose you use it, where you use it, or how
long you use it.
2. Scalability
Scalability is the major key component of cloud computing. OpenStack offers better scalability
for businesses. Through this feature, it allows enterprises to spin up and spin down servers on-
demand.
3. Security
One of the significant features of OpenStack is security, and this is the key reason why
OpenStack is so popular in the cloud computing world.
o With OpenStack, your data is always secure - When company owners want to move
their IT infrastructure to the cloud, they always fear data loss. But there is no need to
think about data loss with OpenStack. It offers the best security feature.
o OpenStack provides security professionals who are responsive to OpenStack's strong
security.
4. Automation
Automation is one of the main keys selling points of OpenStack when compared to another
option. The ease with which you can automate tasks makes OpenStack efficient. OpenStack
comes with a lot of inbuilt tools that make cloud management much faster and easier.
OpenStack provides its own API or Application Program Interface that helps other applications
to have full control over the cloud. This function makes it easier to build your own apps that
can communicate with OpenStack to perform tasks such as firing up VMs.
We can easily access and manage OpenStack, which is the biggest benefit for you. OpenStack
is easy to access and manage because of the following features :
Command Line Tools - We can access the OpenStack using command-line tools.
Dashboard - OpenStack offers users and administrators to access and manage various aspects
of OpenStack using GUI (graphical user interface) based dashboard component. It is available
as a web UI.
APIs - There are a lot of APIs (Application Program Interface), which is used to manage
OpenStack.
6. Services
OpenStack provides many services required for several different tasks for your public, private,
and hybrid cloud.
List of services - OpenStack offers a list of services or components such as the Nova, Cinder,
Glance, Keystone, Neutron, Ceilometer, Sahara, Manila, Searchlight, Heat, Ironic, Swift,
Trove, Horizon, etc.
Each component is used for different tasks. Such as Nova provides computing services,
Neutron provides networking services, Horizon provides a dashboard interface, etc.
7. Strong Community
OpenStack has many experts, developers, and users who love to come together to work on the
product of OpenStack and enhance the feature of OpenStack.
8. Compatibility
Public cloud systems like AWS (Amazon Web Services) are compatible with OpenStack.
Compute (Nova)
Nova is one of the most common and important components of OpenStack. Compute is a
controller that is used to handle virtualized environments' resources. It handles several virtual
machines and other instances that perform computing tasks.
Nova is written in Python language. VMware, Xen, and KVM are the hypervisor technologies
used, and this choice is contingent on OpenStack's version.
OpenStack Services which communicate with Nova
To ensure that Nova operates at its most basic level, certain OpenStack services are required.
These services are:
Keystone: Firstly, Keystone authenticates and offers an identity for all OpenStack services.
The first feature built on OpenStack is Keystone, and all projects, like Nova, are responsible
for it.
Glance: It works to handle server images for your cloud. Therefore, it has the ability to upload
compatible images of OpenStack via the repository of compute images.
Neutron: The physical or virtual networks that compute instances within your OpenStack
cloud are given by Neutron.
Placement: Finally, Nova needs placement to track the inventory of resources to assist in
selecting which resource provider would be the right option when building a virtual machine
inside your OpenStack cloud.
To ensure optimum accessibility and performance, these additional OpenStack services closely
interact with Nova.
Nova Architecture
The above diagram can be summed up in these functionalities :
o The Nova-api processes the requests and responses to and from the end-user.
o When a request is submitted, the Nova generates and removes the instances.
o The Nova-scheduler schedules nova-compute jobs.
o The Glace Registry, along with its metadata, stores the image information.
o The Image stores predefined images for the user or admin.
o The Nova-network assures connectivity and routing of the network.
This works in the traditional way of attaching and detaching an external hard drive to the OS
for its local use. Cinder manages to add, remove, create new disk space in the server. This
component provides the virtual storage for the VMs in the system. Conceptually, Cinder is
similar in function to the EBS (Elastic Block Storage).
It is usually implemented in combination with other OpenStack services (e.g., Compute, Object
Storage, Image, etc.). Cinder and Nova logical architecture are:
Without needing to think about costly physical storage systems or servers, Cinder users are
able to reduce and expand their storage space significantly. In addition, by allowing users to
use one code for each operation, Cinder simplifies code management. With reliability and ease
of usage, Cinder can handle all the provisioning and eliminate consumers' needs.
o Highly Available
o Recoverable
o Fault-Tolerant
o Component-based architecture
o Open Standards
Cinder Components
Object Storage (Swift)
Object storage is used in order to store and recover arbitrary data in the cloud. In Swift, it is
possible to store the files, objects, backups, images, videos, virtual machines, and other
unstructured data. Developers may use a special identifier for referring the file and objects in
place of the path, which directly points to a file and allows the OpenStack to manage where to
store the files to the API.
For longevity, availability, and competitiveness, it is scalable and optimized. For storing
unconstrained, redundant data, Swift is ideal. Since this is an object storage service, Swift
enables an API-accessible storage option that can be used around the cluster for backups, data
retention, or archives that are redundant.
Object Storage components are divided into the following key groups :
o Proxy Services
o Auth Services
o Storage Services
o Account Service
o Container Service
o Objective Service
Usually, Manila is deployed with other OpenStack resources, such as Compute, Image or
Object Storage.
o Highly Available
o Recoverable
o Open-Standards
o Fault-tolerant
o Component-based architecture
manila-api: It is an application for the Web Server Gateway Interface (WSGI), which verifies
and guides requests via the shared file system service and also offers support to the OpenStack
API.
manila-data: This service receives the requests, processes the data operations with long
running times such as backup, copying, or share migration.
manila-scheduler: This service schedules and routes the requests to the shared file system
services. To route requests, the scheduler follows configurable filters and weighers. The Filter
Scheduler is the default and allows filters on items such as Availability Zones, Capacity,
Capabilities, and Share Types. Manila-scheduler also allows custom filters.
manila-share: This service manages back-end systems in which have a shared file system. A
manila-share service is capable of running in 1 of 2 modes, with or without the managing of
shared servers.
The shared file system (Manila) contains the following set of components :
o Shares
o Snapshots
o Share networks
Networking (Neutron)
This component is used for networking in OpenStack. Neutron manages all the network-related
queries, such as IP address management, routers, subnets, firewalls, VPNs, etc. It confirms that
all the other components are connected properly with the OpenStack.
Networking has a service on the controller node, called the neutron server, including a lot of
agents and plugins that use a messaging queue to communicate with each other. You can select
the various agents you want to use, dependent on the type of operation.
o VMware NSX
o Cisco switches (NX-OS)
o Ryu network OS
o NEC OpenFlow
o Open vSwitch
o PLUMgrid Director plugin
o Linux bridging
o OpenDaylight plugin
o Juniper OpenContrail
o Midokura Midonet plugin
Neutron Architecture
The neutron architecture is very simple. It is fully based on agents and plugins.
Dashboard (Horizon)
This is the first component that the user sees in the OpenStack. Horizon is the web UI (user
interface) component used to access the other back-end services. Through individual API
(Application programming interface), developers can access the OpenStack's components, but
through the Dashboard, system administrators can look at what is going on in the cloud and
manage it as per their need.
At the core of its architecture and design, the Dashboard has many key values :
Core Support: Out-of-the-box provision for all core OpenStack projects.
Manageable: The core codebase has to be easy to direct and should be simple.
Horizon is based on the Django web framework for both users and administrators of an
OpenStack cloud. It interacts with instances, images, volumes, and networks within an
OpenStack cloud. Through Horizon, we can manage Nova, Glance, Neutron, and Cinder
services within the OpenStack cloud.
The image below shows how the Dashboard is connected to all the OpenStack components.
Notice that OpenStack with all seven core components is shown in this image :
Highlights of OpenStack
o OpenStack has made it possible for companies such as Bloomberg and Disney to handle
their private clouds at very manageable prices.
o OpenStack offers mixed hypervisor environments and bare metal server environments.
o RedHat, SUSE Linux, and Debian have all been active contributors and have been
supporting OpenStack since its inception.
o OpenStack is used by Walmart to organize more than one lac cores, which offers 100
% uptime during last year's Black Friday.
The difference between AWS and OpenStack usually depends on your company's specific
requirements. Let's see the difference between OpenStack and AWS:
2. Glance handles the images. AMI (Amazon Machine Image) handles the
images.
3. LBaaS of OpenStack handles the load The ELB (Elastic Load Balancer)
balance traffic. automatically distributes the incoming traffic
from the services to the EC2 instances.
10. For networking, OpenStack uses For networking, AWS uses VPC (Virtual
Neutron. Private Cloud).
11. Machine learning (ML) and NLP Machine Learning (ML) and NLP (Natural
(Natural Language processing) are not Language processing) are possible in AWS.
readily available.
12. OpenStack has no Speech or Voice Lex is used for speech or voice recognition
recognition solution. solutions.
13. It has the Mistral - Workflow Service. It follows the Simple Workflow Service
(SWF).
14. Ceilometer - the Telemetry based AWS Usage and the Billing Report.
billing, resource tracking etc.
Virtualization System:
Virtualization plays a very important role in the cloud computing technology, normally in the
cloud computing, users share the data present in the clouds like application etc, but actually
with the help of virtualization users shares the Infrastructure.
The main usage of Virtualization Technology is to provide the applications with the standard
versions to their cloud users, suppose if the next version of that application is released, then
cloud provider has to provide the latest version to their cloud users and practically it is possible
because it is more expensive.
Specific Attacks:
Cloud attacks encompass malicious activities that target vulnerabilities in cloud
computing systems and services. Attackers use weak points in cloud infrastructure,
applications, or user accounts to gain access without authorization, jeopardize data integrity,
steal confidential data, or disrupt services.
Guest hopping :
In this type of attack, an attacker will try to get access to one virtual machine by
penetrating another virtual machine hosted in the same hardware. One of the possible
mitigations of guest hopping attack is the Forensics and VM debugging tools to observe the
security of cloud.
Hypervisor Risks
• The hypervisor is the part of a virtual machine that allows host resource sharing
and enables VM/host isolation.
• Therefore, the ability of the hypervisor to provide the necessary isolation during
intentional attack greatly determines how well the virtual machine can survive Risk.
• One reason why the hypervisor is susceptible to risk is because it’s a software
program; risk increases as the volume and complexity of application code
increases.
• Ideally, software code operating within a defined VM would not be able to
communicate or affect code running either on the physical host itself or within a
different VM; but several issues, such as bugs in the software, or limitations to
the virtualization implementation, may put this isolation at risk.
• Major vulnerabilities inherent in the hypervisor consist of rogue hypervisor
rootkits, external modification to the hypervisor, and VM escape.