This is the first of six preparation courses for the Architecting Microsoft Azure Solutions 70-534 certification exam. By the end of this course, you will have gained a solid understanding of Azure data center and VPN architecture. We will cover Azure’s use of Global Foundation Services for its data centers, virtual networks, Azure Compute (IaaS, virtual machines, fault domains), VPNs, and ExpressRoute. This session will also feature a high-level discussion of Azure services (load balancing options, Traffic Manager, and more).
Welcome back. In this lesson, we'll be talking about virtual machines which may sound like it would be quick however, there's actually a fair amount to cover here in order to be ready for the exam. So we're going to break this up into two lessons. We'll talk about virtual machines, creating virtual machines, virtual machine sizes, and understanding images.
Azure virtual machines are what's known as Infrastructure as a Service, most commonly abbreviated as IaaS, or IS. Virtual machines give you full control of the software you want to run by providing you with an operating system of your choice. With Azure you can quickly deploy ready-made images that come with pre-installed software on them.
Let's have a look at the typical IS configuration and Infrastructure as a Service offering will provide you with a virtual machine, with the operating system and optionally some software that's pre-installed on top. A key benefit of IS is that you have total control of the software that runs on the virtual machine. You can customize a software running on it as needed.
Virtual machines are extremely flexible and you can do just about anything with them, because really they're just an operating system. And if you're using images from the market, then you can very quickly get a VM up and running with pre-installed, pre-configured software. And you can use these images with the pre-loaded software when there's no ready-made Azure service offering. As an example, you might want to use an image that has sequel server analysis services or maybe Raven DB or Kafka or really any service that can run on Windows or Linux. They work well for porting existing bespoke applications to the cloud without re-architecting as well. And they're great for disaster recovery options. And these are just a few use cases.
One of the key features of virtual machines in Azure is the ability to scale up and down as needed. This is useful for handling increased demand on a VM. We can scale up, also called vertical scaling, by increasing the capacity of the VM and we do this by resizing the VM.
Resizing a virtual machine allows you to choose a virtual configuration and that impacts the functionality and performance. The size of the virtual machine also impacts cost, as does the guest OS. Linus and Windows VMs with the same hardware configuration have different prices. The price that you see in the portal is based on a price per month, however, it's billed per minute of execution. There are two pricing tiers, we have basic and standard. The basic tier is for machines that really are for development stage testing and maybe very simple production environments, where the standard tier is for production machines and offers load balancing and auto scaling.
In addition to pricing, there's also different categories of machines. And these are referred to as machine series. These combine different classes of CPU memory graphics and IO. Each series specifies different combinations of those. Not all series are available in all regions and even regions will vary throughout the year as technology evolves.
Let's look through the different series briefly. There's the general purpose which has a balanced CPU to memory ratio. It's ideal for things like testing and development, small to medium databases, and web servers with maybe low to medium traffic. There's the compute optimized which has a high CPU to memory ratio. It's good for medium traffic web servers, network appliances, batch processes and application servers. We also have the memory optimized which has a high memory decor ratio. This is great for relational database servers, medium to large caches and in-memory analytics. And then there's the GPU with specialized virtual machines targeted for heavy graphics rendering and video editing for single or multiple GPUs. Though this series isn't covered by the exam so we won't talk about it anymore. And then we have the high performance compute. These are virtual machines with the most powerful CPU and with optional high through-put network interfaces. So we have a lot of options when it comes to virtual machine resources.
Alright let's switch gears slightly to cover virtual hard disks. As your virtual machines have two disk types, we have the operating system disks and data disks and both are stored as blobs behind the scene in Azure storage. You can attach multiple data disks to a specific virtual machine and also you can upload your own local virtual hard disks into Azure and connect it as a disk to the virtual machine.
Data disks contain persistent data. In case of a shutdown and restart, the data disks are preserved. In case of scaling or disaster recovery, where moving to another machine is necessary, disks are reattached to the new machine. Each disk has a fixed performance level. Performance is measured as input output operations per second and that's usually abbreviated as iops. Typically, each disk performs 500 iops, while some low end machines use 300 iop disks. So while that measure is fixed you could use multiple disks and conjunction with multiple threads or multiple processes to increase io peformance by distributing work over multiple data disks. If you need to get better performance you can look into premium storage which uses solid state drives but that's not covered on the exam so we won't really be talking about it.
When we created a VM earlier it was using a pre built image from the market place. However, you can use your own images as well and these images can be a snapshot of a running VM or it may be based on a local VM so being able to create our own images allows them to serve as a template for new VMs. Azure images come in two forms, specialized and generalized. Specialized images are designed for running one at a time every time you provision the VM. It's an exact point in time copy from the base image. A general image on the other hand is more flexible and it can be used to provision an entire cluster of images that have the same core image but are configured slightly differently. For instance, maybe different machine names.
Being able to instantiate VMs that are based on our own custom image is one of the best parts of a virtual machine. It allows us to pre-install the supporting software for our applications and this is a fairly common thing to do, companies will create what they refer to as golden images. And these golden images contain everything needed to run their applications. And in some cases they contain the latest version of the application itself and they version these images so that they can deploy and roll back as needed. Now golden images are one way to approach getting your application installed on VMs and deployable. However there's another approach referred to as configuration management which involves provisioning the server on demand and many companies will have some blend of the two, allowing for faster provisioning. And we'll be covering this more in the next lesson so if you're ready to keep learning then let's get started with the next lesson.
About the Author
Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.