it. Unlike the CPU, which is shared, RAM is not. Whatever RAM you allocate to a VM is dedicated to that VM, and no other VM can access it. When a VM consumes all of its allocated RAM, it will begin to swap the contents of some of its RAM to storage. This swap file, as it is called, will be used as virtual RAM. When configuring a VM, be sure to allocate enough storage space for the swap file, and keep in mind that the storage latency of the swap file will have a negative impact on the performance of the VM.
Thus far, we've discussed compute pools from the perspective of an IaaS model. But how do compute pools work with PaaS or SaaS models? Behind the scenes, almost everything's the same. What's different is that in the PaaS and SaaS models, the cloud provider runs a user-friendly interface atop the underlying compute infrastructure. For example, if the cloud provider is offering hosted email as a service, that email system gets its computing power from the same compute pools that power the IaaS infrastructure. In fact, every service under the PaaS or SaaS model that the provider offers probably runs directly on the same IaaS infrastructure that we've been discussing. In other words, cloud providers don't reinvent the wheel for every service that they provide. They build the compute infrastructure to provide the compute pools, and everything else uses those.
Network Pools
Cloud providers also virtualize and pool network resources. If you're not familiar with the details of networking, what happens behind the scenes can be a bit difficult to grasp, so we'll start in familiar territory.
The term network is a loaded term because its meaning varies with context. Generally, a network is the infrastructure that allows communication between computing resources, such as two servers or an end user and a server. That much you already know, but here's where it gets complicated. In the cloud, there are two different levels of networking:
The Underlay The underlying network (or underlay) consists of the physical network infrastructure that the cloud provider completely manages. This is transparent to you, and you have no visibility into it whatsoever.
The Overlay The cloud provider allows customers to create and manage virtual networks that run atop the provider's underlying network. These are sometimes called overlay networks or virtual private clouds (VPCs). Virtual networks are what you'll actually work with and connect your cloud resources to. In simple terms, a VPC is a private, software-defined network that exists in the cloud.
A virtual network consists of, at a minimum, a block of private IP addresses to be assigned to VMs and other network resources, such as DNS and DHCP servers. A virtual network can span multiple physical hosts—a VM running on one host can communicate with another VM running on a different host, as if they were on the same subnet. Naturally, you can connect a virtual network to an external network such as the Internet or a corporate network via a VPN.
It's important to understand that networking in the cloud operates quite differently than what you'll find in a traditional data center. In a data center, a VM's virtual network interface card (vNIC) typically connects to a virtual switch (vSwitch) that's associated with one or more physical network interfaces on the host. Each VM can be connected to a different virtual LAN (VLAN) for traffic segmentation. In this virtual switching paradigm, configuring VM networks is a mostly manual task, so the network configuration remains relatively fixed. Without getting into too many details, this inflexibility is due to the limitations of Ethernet. Additionally, such networks are limited to a maximum of about 1 million devices, which is more than enough for a data center but woefully lacking for a cloud provider that may need to support hundreds of millions of VMs.
If you have an application that depends on Ethernet broadcast functionality, it probably won't work in the cloud. Ethernet broadcasts pose a hindrance to scalability in the cloud, so cloud providers generally don't support them.
When you create a virtual network in the cloud, the cloud provider's orchestration platform handles the details of the behind-the-scenes connectivity. For example, suppose that you're running two VMs connected to the same virtual network. These VMs may be on different physical hosts and even in different geographic locations, but they can still communicate. The important point here is that you don't need to know anything about the underlying network infrastructure. All you have to do is to create and configure a virtual network and connect your resources to it, and you're good to go. Just as the provider's proprietary orchestration software automatically picks what server to run your VMs on, so too it dynamically handles connectivity among devices on your virtual networks. This is another example of that “minimal management effort or service provider interaction” qualification that defines cloud computing.
Storage Pools
When you think of the term storage, you might think of files on a drive. That's one example of storage that most people are familiar with because it's how our daily-use computers store files. But in the cloud, you'll encounter three different types of storage:
Block storage
Object/file storage
Filesystem storage
Regardless of the storage type, in the cloud data is redundantly replicated across multiple physical devices that compose a storage pool. Having data distributed across a storage pool allows the cloud provider to achieve exceptionally high read and write speeds.
Block Storage Block storage is designed to mimic a drive by storing data in the same way that a drive does. The virtual disks' (vDisks) VMs used to store data are backed up by block storage. In the data center, a storage area network (SAN) device is what provides block storage. A SAN consists of a collection of redundant drives (either spinning disks or SSDs) that store data in blocks, hence the term block storage. Even the drive in your personal computer stores data in this way.In the cloud, because VMs may move from host to host, the VM's persistent storage is not attached to the host. In cloud provider terminology, block storage may be called elastic block storage or block blob storage. Notice how the terminology hints at the flexible and abstract nature of the storage.To allocate space from a block storage pool, you create a volume that you can then attach to a VM as a virtual disk. Just as when you provision a VM and the cloud provider dynamically and automatically finds a host to run it on, so too the provider selects some SANs from the storage pool to hold the volume. One big advantage of storage pooling is that your data is stored redundantly on multiple physical SANs; if one fails, your VM can keep on running with no loss of data.As you gain experience with the cloud, you'll notice that as a general rule, the more block storage you allocate to a vDisk, the better the performance you get. The reason for this is that allocating more storage means that storage is spread across more physical drives operating in parallel.Although block storage is typically thought of as an IaaS analog to the SAN, it does come into play in some PaaS services. Some managed SQL database services make use of block storage. Although in most cases the cloud provider manages it, you still may get to choose some aspects of the volume such as speed and size.Although the storage systems are generally external from the physical servers themselves, some cloud providers do let your VM use locally attached drives for temporary storage, like swap files or caching.
Object/File Storage As the name suggests, object/file storage is designed just to store files. You can use object storage to store any file of virtually any size. It's often used for file backups, but it can also be used to store web assets such as images, video, HTML files, and PDF documents. Object/file storage is intended to store files that don't change frequently, so although you can use it to store a database backup, it's not appropriate for storing a live database that's regularly written to.The cloud provider will usually offer multiple interfaces to upload or download files. For example, they may allow you to transfer files via a web interface, command-line tool, or API. They may allow you to use HTTP to download files, effectively letting you use the object store as a static web server.One particularly important use of object storage is storing snapshots of elastic block storage volumes. When you take a snapshot of a VM's volume for