On this page, we will go over some key concepts that will help you when going through the course content. These key concepts will be quickly accessible from anywhere within the course, just click on the Glossary tab.
In the context of Cloud, Bare Metal refers to the physical machine which is not virtualized. A general definition is provided by Wikipedia.
Historically, the word "cloud" was used as a metaphor for the Internet. More recently, it has been used to depict the Internet in computer network diagrams. To learn about the origin and evolution of the cloud, you can review the details provided by Wikipedia.
According to NIST (National Institute of Standards and Technology), "Cloud Computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction."
A Container is a user-space instance that has the application code, the required libraries, and the required runtime to run the application without any external dependencies. With Containers, we can take an application with all of its dependencies and put them in a jailed environment (the Container), with respective resource isolation and allocation. The Container runs as a process on the Host Operating System. On Linux, the Linux Kernel provides features like Namespaces and Control Groups (cgroups) to provide resource isolation and allocation for Containers.
Container as a Service (CaaS)
As containers are becoming first-class citizens, many cloud providers are now offering Containers as a Service. According to docker.com, CaaS "is a model where IT organizations and developers can work together to build, ship, and run their applications anywhere".
Continuous Integration and Deployment
Continuous Integration (CI) is a practice used in development, requiring developers to integrate their code into a shared repository multiple times a day. Each code integration is automatically verified, thus allowing teams of developers to detect problems early in the process. Continuous Deployment (CD) is closely related to Continuous Integration, referring to the release of software into different phases (staging, production, etc.). Each software release must first pass a set of automated tests. The practice of CI/CD enables developers to quickly address today's rapid technological changes, thus responding to the users and business needs.
The collaborative work between Developers and Operations teams is referred to as DevOps. It is more of a mindset, a way of thinking, versus a set of processes implemented in a specific way.
A Filesystem is a method used to organize files on physical storage (e.g. hard disk, SSD). There are different types of filesystems available (e.g. ext4, BtrFS, XFS, NTFS, ZFS, etc.). Filesystems have a unique way of storing files. To learn more about Filesystems, you can go here.
According to the definition provided by Wikipedia, a "Hypervisor or Virtual Machine Monitor (VMM) is a piece of computer software, firmware or hardware that creates and runs Virtual Machines". The machine on which the Hypervisor runs is referred to as the Host System. The OS installed on the Host System is called a Host OS. We can run Virtual Machines with different OSes on the same Hypervisor.
Host Machine OS
In the context of Cloud, a machine that runs Virtual Machines or containers is generally referred to as a Host Machine. The Operating System that runs on the Host System is referred to as the Host Machine OS.
Infrastructure as a Service (IaaS)
IaaS is a form of Cloud Computing which provides on-demand physical and virtual computing resources, storage, network, firewall, load balancers, etc. To provide virtual computing resources, IaaS uses Hypervisors like Xen, KVM, VMware, RSX/ESXi, Hyper-V, etc.
A Micro OS is a specialized OS, that results from a base OS after removing the packages that are not required to boot the base OS and run container-related services.
According to Wikipedia, Microservices "are small, independent processes that communicate with each other to form complex applications which utilize language-agnostic APIs. These services are small building blocks, highly decoupled and focused on doing a small task, facilitating a modular approach to system-building. The microservices architectural style is becoming the standard for building continuously deployed systems".
Open Source Software (OSS)
According to Wikipedia, Open Source Software is "computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose. Open Source Software may be developed in a collaborative public manner. Open Source Software is the most prominent example of Open Source development".
According to Wikipedia, an Overlay Network "is a computer network that is built on top of another network".
Platform as a Service (PaaS)
PaaS is a platform which allows you to host your application without worrying about the underlying infrastructure. As a developer, your end goal is to deploy your application. You can go to any of the PaaS providers and, after packaging your application, you can deploy it on your own. You can also build your developer workflow on top of PaaS. For example, whenever you commit on GitHub, tests are run and, after a successful pass, applications get deployed on PaaS.
A Plugin is a general term which is used for software, packages, or components. Plugins enhance the functionalities of core software. For example, we have plugins for Vagrant, Docker storage and networking, etc.
Service Discovery is a mechanism by which processes and services can find each other automatically and talk. With respect to containers, Service Discovery is used to map a container name with its IP address, so that we can access the container without worrying about its exact location (IP address).
Software as a Service (SaaS)
SaaS is a software distribution model, in which third-party providers host and deliver applications over the Internet, thus making them available to clients. Once an application is deployed, we can offer services on top of it. We use such services every day, like taking an online course, watching online movies, chatting etc. Some of well-known examples of SaaS are Facebook, Twitter, Skype, etc.
Software Defined Networking (SDN)
Each Virtual Machine or container has its own network stack. They connect to other network end points, which may be on the same Host or on an external one. As VMs or containers do not have physical cables, we need to create virtual entities through which they can communicate across the Hosts. This is referred to as Software Defined Networking. Through SDN, network administrators can manage services on the network.
Software Defined Storage (SDS)
Software Defined Storage (SDS) is a form of storage virtualization in which storage hardware is separated from the software, which manages it. By doing this, we can bring hardware from different sources and we can manage it with software. Software can provide different features, like replication, erasure coding, snapshot, etc. on top of the pooled resources. Once the pooled storage is configured in the form of a cluster, SDS allows multiple access methods like File, Block, and Object.
According to Wikipedia, a Virtual Machine (VM) "is an emulation of a particular computer system. Virtual Machines operate based on the computer architecture and functions of a real or hypothetical computer, and their implementations may involve specialized hardware, software, or a combination of both". Virtual Machines run on top of a Hypervisor, and are referred to as Guest Machines.
In computing, Virtualization generally refers to the emulation of something, backed by some real hardware or resources. For example, while creating Virtual Machines, we emulate the Hard Disk, Memory, etc. to install a Guest OS on it. Examples of Virtualization are Virtual Memory, Virtual Filesystem, Virtual Machine (VM), etc.
One can emulate hardware, Operating Systems, Storage, Network, etc. With technologies like Nested Virtualization, we can have a VM inside another VM. In the last decade, with the spread of virtualization, whole new classes of software and platform offerings have evolved (like Infrastructure as a Service, Software as a Service, etc.).
VXLAN (Virtual Extensible LAN)
The Overlay Network can be used to connect VMs or containers from different Hosts. In an Overlay Network, we encapsulate a VM's/container's packet in the Host's packet and send it over the network. When receiving it, we decapsulate the packet and forward the source VM/container packet to the targeted VM/container. VXLAN is the effort to standardize the Overlay Network. VXLAN uses VLAN types of encapsulation methods.
According to unikernel.rog, "Unikernels are specialised, single-address-space machine images constructed by using library operating systems".