Virtualization – separating computers from their hardware. Instead, concentrating on software, making things portable and able to run multiple servers on the same hardware simultaneously. These days, servers are powerful enough to run multiple sites or apps simultaneously, but they often need to divvy up the resources and have a separation between them for the sake of security. Virtualization also means there is greater portability or scalability, as your virtual assets are not tied directly to hardware anymore. You might need a web server, email server, domain controller running Active Directory, SIEM, IDS/IPS, firewall, and so on. But instead of having separate devices, you could have software-based implementations of them that all run on the same physical machine, if you really wanted.
Virtual machine (VM) – a software-based computer. Instead of having multiple physical computers, you can use one computer with multiple VMs on it. VMs are useful if you want to do something like run Windows software on a Mac, or have different servers separated for security reasons. A web host might let customers have separate virtual machines so that they can’t interfere with one another. Virtual machines on server hosts are called VPSes, or Virtual Private Servers.
Virtual appliance (VA) – a plain old virtual machine is just an operating system by itself, but a virtual appliance is when a developer takes their software, such as backend server software, and installs it in a virtual machine and configures it, and then saves it and lets other people download it. That way, it already has everything set up so you can get the server software running without having to manually install everything separately within a fresh/blank OS install, which is a longer and more error-prone process.
Snapshot – a way to revert to an earlier state of a virtual machine in case something goes wrong. It can also be useful for security because it means attackers won’t have persistence, as things get rolled back to a certain state. If you’re familiar with the concept of saving in a video game, it’s kind of like that, but for operating systems and software instead.
Hypervisor – something that allows you to run and manage multiple virtual machines simultaneously. Virtual machines are like employees and the hypervisor is their boss. Some hypervisors run within a host OS, like Virtualbox, which can be run within Windows or macOS, for example. Other hypervisors, such as VMware ESXi or Proxmox, can run directly on a server with no host OS required.
If you get into web development, you will inevitably run a VM, because of the client/server nature of web apps. Your VM or VA might be a Linux distro running something like Node, Apache, Nginx, or Django, along with other things like a database management system. Rather than setting it all up yourself, I recommend Bitnami’s virtual appliances.
Sometimes, you might prefer to run a virtual appliance in the cloud instead of on your server. You can run a virtual appliance in something like Amazon Web Services. But for starting out, it can be better to deal with a local hypervisor so that you don’t have to deal with things like securing your remote server and web app. But even a low-end desktop can be used as a local web development server.
FreeBSD jail – an alternative to virtual machines. Jails are not VMs. They separate multiple users and their software and files from each other, but it only uses one primary OS. It is a FreeBSD-centric feature, so people who use other OSes might look elsewhere.
Container – a newer alternative to virtual machines or virtual appliances. It lets you put your software and all of its dependencies into something, but it doesn’t have its own separate OS the way that a VM does. This lets it have lower overhead, though some argue that containers are less secure than VMs. The most widely-used types of containers are Docker and LXC. Some people think that containers are replacing traditional virtualization technology.
Container orchestrator – a VM is to a hypervisor as a container is to a container orchestrator. Some examples of container orchestrators include Docker Swarm and Kubernetes. However, you can even use some hypervisor technology, such as Proxmox, for running LXC containers.
WINE – stands for WINE IS Not an Emulator. It’s a recursive acronym, just like GNU (GNU’s Not Unix). It’s a program that lets you run Windows software on macOS or Linux. It used to be more important, but a lot of things are either web-based or multi-platform these days, so it’s not as crucial as it used to be for Mac or Linux users. The benefit of WINE as opposed to a VM is that WINE has better performance and doesn’t use as much disk space or RAM.
Advanced/Miscellaneous Topic List