Boda: Important Concepts

Even if are not using Boda, and don’t even have intention to do so) there are some concepts that are very important, and it’s worth to know.

Below we will give a brief summary on some important concepts we use in Boda. For example, you’re gonna know what is a Virtual Machine (VM) and will also use Containers.

But don’t worry: these concepts are needed only if you’re gonna install Boda CE - The Community Edition version installed in Servers and accessed via Browsers (Clients). The Lite version of Boda do not require this knowledgement.

Let’s quickly see it.

What is a Virtual Machine?

There are many reasons to use a virtual machine. In most cases, they are used to run software that does not work on your OS. Whether you’re using a Windows, Mac or Linux OS, a VM will remove its limitations. For example, if you have a Windows machine and want to install an application that is only available for Mac, you can run a macOS instance on your Windows computer to install it.

It doesn’t even have to be the case that the software doesn’t run on Windows. Maybe you work faster on the Linux or Mac version of it because you’re more familiar with its shortcuts and usability.

Most software developers like to work on terminals, so they prefer Linux. That said, since many of us were accompanied by Windows through our school days, we do paperwork faster on it.

Another thing to consider is that programs on Windows are rarely uninstalled without a trace. You will find old settings, registry entries or other artefacts that will slow down your operating system. If you want to use an application temporarily, set up a VM, use the program and remove the VM when you have finished. That way you won’t have to clean your notebook afterward.

Using a virtual machine also makes sense for protection. With the virtualized OS, you bring an extra layer of security into play. If you’re not quite sure you should run a file you downloaded from an untrusted source on your productive OS, use a VM.

A VM will let you get through the dark web more safely, too. At this point, you need to know that a VM is extremely slow. It will bog down your active OS and the virtual one. You should think twice about whether you want to use the slow Tor browser on a slow VM to surf the dark web.

IMPORTANT: Remember a VM uses a lot of memory an space. So make sure your computer’s hardware is fine, to continue.

What is a Container?

A container is a standard unit of software that packages up code and all its dependencies, so the application runs quickly and reliably from one computing environment to another. A container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. By doing so, thanks to the container, the developer can rest assured that the application will run on any other Linux machine regardless of any customized settings that machine might have that could differ from the machine used for writing and testing the code.

Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.

Containers and Virtual Machines Together

Containers and virtual machines have similar resource isolation and allocation benefits, but function differently because containers virtualize the operating system instead of hardware. Containers are more portable and efficient.

Containers and VMs used together provide a great deal of flexibility in deploying and managing app.

CONTAINERS

Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers take up less space than VMs (container images are typically tens of MBs in size), can handle more applications and require fewer VMs and Operating systems.

VIRTUAL MACHINES

Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, the application, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.

What is Docker?

Docker is a tool designed to make it easier to create, deploy, and run applications by using containers.

In a way, Docker is a bit like a virtual machine. But unlike a virtual machine, rather than creating a whole virtual operating system, Docker allows applications to use the same Linux kernel as the system that they’re running on and only requires applications be shipped with things not already running on the host computer. This gives a significant performance boost and reduces the size of the application.

Available for both Linux and Windows-based applications, containerized software will always run the same, regardless of the infrastructure.

And importantly, Docker is open source.

Container images become containers at runtime. In the case of Docker containers images become containers when they run on Docker Engine.

Docker containers that run on Docker Engine:

  • Standard: Docker created the industry standard for containers, so they could be portable anywhere
  • Lightweight: Containers share the machine’s OS system kernel and therefore do not require an OS per application, driving higher server efficiencies and reducing server and licensing costs
  • Secure: Applications are safer in containers and Docker provides the strongest default isolation capabilities in the industry

Docker Containers Are Everywhere: Linux, Windows, Data center, Cloud, Serverless, etc.

Docker container technology was launched in 2013 as an open source Docker Engine.

It leveraged existing computing concepts around containers and specifically in the Linux world, primitives known as cgroups and namespaces. Docker’s technology is unique because it focuses on the requirements of developers and systems operators to separate application dependencies from infrastructure.

Success in the Linux world drove a partnership with Microsoft that brought Docker containers and its functionality to Windows Server (sometimes referred to as Docker Windows containers).

Technology available from Docker and its open source project, Moby has been leveraged by all major data center vendors and cloud providers. Many of these providers are leveraging Docker for their container-native IaaS offerings. Additionally, the leading open source serverless frameworks utilize Docker container technology.

What Is Hyper-V?

Hyper-V is a Windows virtualization software that, well, virtualizes software. It can not only virtualize operating systems but also entire hardware components, such as hard drives and network switches.

Unlike Fusion and Virtualbox, Hyper-V is not limited to the user’s device. You can use it for server virtualization, too.

Hyper-V is available in three versions.

  • Hyper-V for Windows Servers
  • Hyper-V Servers
  • Hyper-V on Windows 10

Hyper-V for Windows Servers is an add-on to the Windows Server OS. Hyper-V Servers, on the other hand, is a standalone solution that can be used to manage virtual and dedicated server instances, just like Hyper-V for Windows Servers.

Hyper-V on Windows 10 is the version that runs on most computers.

To enable Hyper-V on your Windows device, you need a 64-bit OS. It doesn’t have to be Windows 10, though. Windows 8.1 works too.

What is HyperKit?

Similar to Hyper-V on Windows, HyperKit is a lightweight macOS virtualization solution built on top of the Hypervisor.framework.

What is Virtualbox?

When you can not use Hyper-V or HyperKit, you can install the Oracle Virtualbox virtualization solution.

Of course, performance will be degraded compared to native Hyper-V or Hyperkit - because they are Windows/Mac native software, we have processing gains.

Other concepts

Of course, there are some other new important concepts, and we’ll add it here inf future.

Remember this is a collaborative project, and if you want to participate you’re more than welcome! :wink:

Also, above we’ve tried to state only the basics of these concepts, and we encourage you to continue learning.

But for now, it’s enough.