System Deployment

System Deployment

This section covers some fundamental aspects of system deployment.

Deployment Options

Suppose we want to deploy a system on a server. Let’s examine the most common deployment options:

Bare-Metal Deployment

This is the most basic deployment method, in which system components run as native processes directly on the server’s operating system (OS).

ServerHardwareProcess 1Process 2

This model typically delivers maximum performance because processes can access hardware resources with minimal overhead, as there are no virtualization layers.

However, all processes share the same host OS. This shared environment can be vulnerable to exploitation.

For instance, if a process under attack runs under an account with misconfigured permissions, it could exploit those permissions to compromise other processes or even the entire server.

ServerProcess 1 (Attacked)Process 2CompromiseCompromise

Virtual Machines

Virtual machines (VMs) are used to create more strongly isolated environments. A virtual machine emulates a physical computer but runs on a software layer called a hypervisor, rather than directly on physical hardware.

Although VMs rely on the host OS (via the hypervisor), each has its own independent OS and dedicated resources (files, users, processes, etc.), ensuring they are completely isolated from one another.

ServerHypervisorHost OSVirtual Machine 1Virtual Machine 2ResourcesOSOSResourcesManageManage

System processes can then be deployed on different virtual machines. This approach offers a significant security benefit: even if some processes on one VM are compromised, they cannot directly affect processes on other VMs or the underlying physical machine.

ServerHypervisorOSVirtual Machine 1Virtual Machine 2Process 1Process 2

However, virtual machines are not optimal for resource efficiency. Each VM runs its own full operating system, which consumes considerable CPU, memory, and storage resources. Moreover, booting a virtual machine involves numerous setup steps and can take several minutes to complete. This can increase the initialization time of system components, potentially affecting system availability.

In the next topic, we will explore a lighter-weight option known as containerization.

Multi-Tenancy

In practice, organizations often rely on cloud providers for their system infrastructure rather than building their own. When a customer rents an entire physical machine and has full control over it, this arrangement is known as single-tenancy, and the machine is called a dedicated server, as no other customer can access that server.

Dedicated Server 1Dedicated Server 2User 1User 2RentRent

By default, many cloud platforms offer a multi-tenant model. In this setup, cloud providers divide a single physical machine into multiple virtual machines, and each VM can be rented by a different customer.

Physical ServerUser 1User 2Virtual Machine 1Virtual Machine 2RentRent

Ultimately, in a multi-tenant environment, the virtual machines still share the same underlying hardware. This poses a potential risk of data leaks if there are flaws in the software isolation mechanisms. Consequently, multi-tenancy is sometimes prohibited in systems with extremely strict security requirements.

Last updated on