WHAT IS CLOUD COMPUTING ??
Cloud Computing Definition:
Cloud computing is a model for convenient and on-demand network access to a shared pool of configurable computing resources, such as servers, storage, networks, applications, and services. It offers minimal management effort and provides faster provisioning of applications and services
Cloud Computing resources can be rapidly provisioned with minimal management or service provider interaction. Self-service users launch instances as virtual machines, when needed, without requiring assistance from the service provider. The cloud consumer decides the computing resources needed for their instances.
Cloud computing characteristics:
- Self-service: Allows cloud consumers to provision instances with computing resources without requiring assistance from the service provider.
- Multitenancy: Allows multiple cloud consumers to share underlying hardware and resources.
- Elasticity: Dynamically increases or decreases the resources used according to demand.
- Telemetry: Resources can be monitored and metered by the service provider and the consumer
Cloud Types:
Cloud computing is available in three forms: public, private, and hybrid clouds, offering different levels of security, management, and accessibility.
Public Cloud:
Originally started as application hosting services like web hosting, but has evolved to be applications, infrastructure, and data storage served by a third party vendor.Public Cloud is a shared resources that can be accessed through public network (the internet). All Maintenance and Backups is provider responsibility so its running cost lower than traditional IT Datacenter
Largest Pubic Cloud providers are Amazon Web Services (AWS), Google Cloud, Microsoft Azure, and Alibaba cloud. Providers can offer to you (Infrastructure, Platform, Application)
Private Cloud:
On-premises data centers that include virtualization, software, and automation to build and manage infrastructure that mean infrastructure management and maintenance is your responsibility, accessed through private network, providing greater control over security, data privacy, and compliance.Common private cloud technologies and vendors include VMware and OpenStack.Hybrid Cloud:
Configuring both public and private cloud resources to be orchestrated together.Use cases include client facing apps on the public cloud connected to data storage in private cloud datacenters, we can connect between private and public clouds through IPSEC tunnel
Cloud Models:
There are three models for cloud service offerings, based on the service provided:Infrastructure as a Service (IaaS)
allows the cloud consumer to provision computing resources and software (operating system and applications).The cloud consumer manages the instance images, storage, networking, and all needed computing resources (vCPUs and vRAM).
Platform as a Service (PaaS)
provides the operating system (i.e., libraries, programming languages) for the cloud consumer. The cloud consumer provides the application(s) to be deployed on the instances. The provider manages the underlying cloud infrastructure.
Software as a Service (SaaS)
provides the operating system and all software for the cloud consumer. The provider manages the underlying cloud infrastructure and the application(s) deployed for use as live service
Virtualization and Cloud Computing:
Virtualization considered the base of the Cloud computing, Virtualization allows a single physical computer to host and support multiple operating systems or application environments, each as a software emulation of a complete computer system, known as a Virtual machine or Instance.Each virtual machine runs its own operating system, which can be different from the one on the host computer.
The host system runs specialized software known as a hypervisor, to emulate BIOS, CPUs, memory, network devices and other physical resources for each virtual machine. The host's operating system using an technique known as namespaces to securely isolate each virtual machine.
An end user on a virtual machine has the same experience as on a physical system. Virtual machines are themselves unaware that their resources are virtual, as they appear to have their own hardware devices. interfaces, file systems and software applications.
Hypervisor
A hypervisor is the software that manages and supports the virtualization environment. It runs the virtual machines for each virtualized operating system, providing access to virtual CPUs, memory, disks, networking, and other peripherals while restricting the virtual machines from having direct physical access to the other virtual machines.
A single hypervisor can host a large number of virtual machines; sharing the physical resources more efficiently than the legacy enterprise model where each operating system or application environment required a physical system. There are two types of hypervisors
Type 1 hypervisor:
hypervisors run directly on the system hardware – A “bare metal” embedded hypervisor. Examples (VMware ESX and ESXi, Microsoft Hyper-V, Citrix XenServer, Oracle VM)
Type 2 hypervisor:
hypervisors run on a host operating system that provides virtualization services, such as I/O device support and memory management. Examples (VMware Workstation/Fusion/Player, Microsoft Virtual PC, Oracle VM VirtualBox, KVM)
WHAT IS the CONTAINER?
Container is an isolated emulation environment Like a virtual machine, it behaves as a separate computer system, using hardware emulated in software by the host system. The difference is that a container is designed to share the host's operating system, and provide only the additional libraries and configuration files required to support the application that it contains.
Containers provide a way to deploy an application and its dependencies as self-contained units, without conflicts caused by other applications that are sharing the same host OS.A container only needs the subset of resources directly required by the application, such as shared libraries, user commands, and runtime services. Because containers normally do not contain a full operating system, they are much smaller and faster to start and scale.
Container technology allows each isolated instance to override libraries or files from the host operating system to use modified libraries and files required exclusively for that container's application. The container framework creates an emulated execution environment in which applications do not actually have direct physical access to files, devices, sockets, or processes outside of the container.
If the application requires access to resources that are external to the container, a network connection is opened, acting as if the container was a separate physical server. Each container has an exclusive virtual network interface and private IP address allowing it to access the outside world.
What is the difference between Virtual machines and Containers:
1. Management Software
A VM has its own operating system that uses hardware virtual machine support provided by a host hypervisor.
A container runs on a container management system utilizing the operating system on which it is installed to provide namespace isolation and basic operating system services for all container applications. No hardware emulating hypervisor is required.
2. Size
VMs are larger because their memory footprint includes most or all of an operating system.
Container systems have a lower overhead because they contain only the application and libraries. Container systems typically target environments where thousands of containers are in play.
3. Number of deployed instances
VMs typically exist in environment where the number of instances is measured in hundreds, since most are enterprise applications with a monolithic core design.
Containers are typically deployed in environments where thousands of containers exist simultaneously. The difference is that container applications are implemented as numerous microservices.