Mobile Computing Unit 3: 1. Define Virtualization
Mobile Computing Unit 3: 1. Define Virtualization
1. Define Virtualization
• Virtual Machine: It’s an instance of software that imitates functions of a hardware
based computer. It consists of - CPU, Memory, Storage, Networking and an
Operating System to run Applications.
2. What are Type of Virtualization
a. Desktop Virtualization - Desktop virtualization is a method of simulating a user
workstation so it can be accessed from a remotely connected device.
b. Server Virtualization - the process of dividing a physical server into multiple
unique and isolated virtual servers by means of a software application. Each virtual
server can run its own operating systems independently.
c. Application Virtualization - Application virtualization software allows users to
access and use an application from a separate computer than the one on which the
application is installed.
d. Network Virtualization - Network Virtualization (NV) refers to abstracting network
resources that were traditionally delivered in hardware to software.
3. What is Hypervisor –
• It’s a software necessary to run VMs. It abstracts (isolates) VMs with the underlying
hardware. It provides necessary resources (CPU, Memory, Storage, Networking) for
VMs to run Applications
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:
• VMs are used to deploy Applications (e.g. Web Servers, Backend Applications) by
dynamically bringing up instances (computes) on Hardware.
Operational flexibility
Reducing overhead.
Disaster recovery.
7. What happens in case of a power failure in a Data Center / How to safeguard against
power failures in DC
• Cloud DC - refers to Data Centers hosted on remote Cloud platforms accessible over
Internet. This typically uses services provided a Cloud based DC platform, example:
Amazon AWS, Google Cloud Platform (GCP), Microsoft Azure, Oracle Cloud
Infrastructure (OCI).
• Hybrid DC - refers to mixed use of both On-prem and Cloud Data Centers.
8. Do we need dual Data Centers, if so, why ?
• is that because the computing load can be spread among multiple locations, power
bills can be reduced in each location, particularly if the satellites are in areas with
lower power costs.
• They need to offer high uptime, make use of various cloud computing services, have
a thorough disaster recovery plan in place, ensure regulatory compliance and so
much more.
9. How to Secure Data Centers
a. Use Firewall, VPN, Intrusion Detection System (IDS), DDoS Protection for Network
Security
b. Authentication, Authorization for User Security
c. Storage Encryption for Data Security
d. Endpoint Agents for Server Security
e. Enforce Monitoring and Alerting to detect threats
10. How does Containerization Differ from Virtualization
Containerization: It’s the process of packaging software applications, it’s libraries,
dependencies and configurations that can be easily deployed anywhere - any OS or
Hardware.
Container - packaging of application and all its dependencies. They are lightweight as they
don’t include operating system and use the Host OS. Example: Dockers, LXC (Linux
Containers)
Container Engine: It’s an interface between Containers carrying applications and Operating
system on which the Containers are runnings.
Virtualization - It’s an instance of software that imitates functions of a hardware based
computer. It consists of - CPU, Memory, Storage, Networking and an Operating System to
run Applications.
Hypervisor: It’s a software necessary to run VMs. It abstracts (isolates) VMs with the
underlying hardware. It provides necessary resources (CPU, Memory, Storage, Networking)
for VMs to run Applications
Uses: VMs are used to deploy Applications (e.g. Web Servers, Backend Applications) by
dynamically bringing up instances (computes) on Hardware.
11. What is Docker Hub –
Repository of all Docker Images (https://hub.docker.com/)
Docker Hub is the world's largest repository of container images with an array of content
sources including container community developers, open source projects and independent
software vendors (ISV) building and distributing their code in containers.
12. Quote a few Docker Commands
a. docker pull - pull a docker image from docker hub
b. docker run - run a docker container
c. docker list - list all docker container images available
d. docker ps -a - list all docker instances
13. What is Kubernetes and Docker Swarm
Docker Swarm is a lightweight, easy-to-use orchestration tool with limited offerings
compared to Kubernetes. In contrast, Kubernetes is complex but powerful and provides self-
healing, auto-scaling capabilities out of the box.
Failure Resistant
Create image.
• The initial step is to get the base Docker image that is needed for
the given microservice.
• Using Dockerfile, we create an image for the service. We can use
dockerfile for
o Installing required apps and libraries.
o Adding service to the image.
Deployment and running microservices.
• Let's say we have pushed our new image to the Docker hub and we
provide necessary access to the system where we want to run the
service. Without access to our repository, the host won't be able to
pull an image.
• Docker-machine is a tool that installs docker-engine on hosts and
manages the host with docker-machine commands.
• We can create a host on drivers like VirtualBox. In this case, it'll be
AWS or Digital Ocean.
The practice of keeping "code" - instructions for some machine, whether a microprocessor,
a VirtualMachine, or a scripting language - distinct from data. This is often done for security
reasons, to prevent untrusted code (which might compromise a machine) from being
executed.
The degree and reasons for separation range from hardware-level separation (e.g. to
prevent stack overflows from mucking with the machine instructions, and possibly to allow
greater efficiency in the cache line since code supposedly changes slower) to higher level
separation (e.g. keeping the data in databases to better secure it and because data tends to
survive applications - in this view, the data is what changes slower).
22. How do modules within Microservice communicate with each other?
Because microservices are distributed and microservices communicate with each other by
inter-service communication on network level. Each microservice has its own instance and
process. Therefore, services must interact using an inter-service communication protocols
like HTTP, gRPC or message brokers AMQP protocol.
The synchronous communication protocols can be HTTP or HTTPS.
In synchronous communication, the client sends a request with using http protocols and
waits for a response from the service.
Basically, In Asynchronous communication, the client sends a request but it doesn’t wait for
a response from the service. So the key point here is that, the client should not have blocked
a thread while waiting for a response.
The most popular protocol for this Asynchronous communications is AMQP (Advanced
Message Queuing Protocol).
23. What are Pros and Cons of Microservices
24. Name few databases used in Microservices
a. MySQL, MongoDB,
b. Postgresql, DynamoDB
25. What are characteristics of a cloud native applications
Y-Axis Scaling
Y-axis scaling is also called as a vertical scaling that includes any resource level
scaling. Any DBaaS or Hadoop system can be considered to be Y-axis scaled. In this
type of scaling, the users request is redirected and restricted by implementing some
logic.
This method of breaking down resources into small independent business units is
known as Y-Axis scaling.
Z-Axis Scaling
X- and Y-axis scaling is pretty much easier to understand. However, one application
can also be scaled at the business level, which is called as Z-axis scaling.
Advantages of Scaling
• Cost − Proper scaling of a software will reduce the cost for
maintenance.
• Performance − Due to loose coupling, the performance of a properly
scaled software is always better than a non-scaled software.
• Load distribution − Using different technologies, we can easily maintain
our server load.
Here are the reasons why you use should use Jenkins pipeline: