At the heart of virtual computing is the instance. Also called a virtual machine, virtual operating system, or virtual server, an instance is an individual guest operating system that runs on top of a virtualization layer which in turn, is on top of a physical server. You can run any operating system of your choice on AppNexus.
You can run multiple instances on one server in order to make efficient use of resources. Each instance will think it's running on its own server and will have its own IP address and share of the CPU, memory, and disk of the underlying server. For example, a server with 8 cores, 16 GB of RAM, and 600 GB of disk space could run your database using 6 cores, 400 GB of disk space, and 14 GB of RAM and also run your internal web site and a wiki on the remaining 2 cores and 2GB of RAM. You can change those allocations however and whenever you like.
Virtualization is what allows instances to exist. Virtualization essentially means you are untethering your operating systems and applications from the physical servers. The most obvious benefit of this is maximizing your resource use (as in the above example). Another reason for virtualization's increasing popularity is its flexibility. Virtualized instances can be easily copied and migrated; instances can run on almost any commodity hardware; and a virtualized architecture is comparatively easy to deploy, modify, and scale.
The virtualization layer that allows you to run instances is called a hypervisor. AppNexus currently runs the Xen hypervisor.
To create an instance, you mount an image. Images are files that contain all of the information needed to start an instance---basically a snapshot of a hard drive running a particular operating system. For convenience, AppNexus provides a pre-built version of a CentOS base image (the open source version of RedHat). You can also create your own.
Launching an Instance
When you launch an instance using our command-line tool manage-instance, a disk partition is created on the server, and the specified image is copied over from shared storage and launched. Once an instance is destroyed by the customer, the disk partition is wiped. If a physical server reboots, or an instance is taken off-line and then revived, all instances on that server will reboot and come up with the same disk partition and networking.
Next core concept: Load Balancing