Ricky Jimenez | Practice Lead – Cloud Solutions
Azure Virtual Machines is one of several types of on-demand, scalable computing resources that Azure offers. Typically, you’ll choose a virtual machine instead of another option if you need more control over the computing environment than the other choices offer. An Azure virtual machine gives you the flexibility of virtualization without having to buy and maintain the physical hardware that runs the virtual machine. However, you do still need to maintain the virtual machine — configuring, patching, and maintaining the operating system and any other software that runs on the virtual machine.
Virtual Machines scenarios
Build a multi-tier, resilient, secure application that can be deployed in minutes instead of weeks, which can be managed over the internet, as if it was in another rack in your Datacenter. Starting with the simple VM building blocks, your application can grow into a multi-tier service, scaling to support more users, and move up to becoming a critical business asset for your organization – using monitoring, backup and site-to-site connectivity.
Create a standalone Virtual Machine
A standalone virtual machine is a simple solution for a small application that does not require high availability. By using the Virtual Machine and Virtual Network services, an application can be deployed to a Windows machine, a Linux machine or quickly start from one of the 100s of images available through the Azure Marketplace. A Virtual Machine can be scaled up from a single core VM with 1.75GB of RAM up to a 32 core VM using the latest processors and 448GB of RAM. Common single-machine workloads include a web server, a database server or dev/test environments.
Deliver a multi-tier application
Many applications will eventually require more than a single VM for either scalability, availability, security or manageability reasons. By deploying a multi-tier application it can be scaled to provide higher availability or increased performance. By scaling to multiple tiers each application tier can then be independently sized to the best VM size for the tier. A common configuration is a front-end web server, such as Nginix, Apache, or IIS, and a backend database server, such as SQL Server, Oracle, or MySQL. For high performance requirements, you can deploy faster disks on Premium Storage. Use security groups to control access to the various tiers and resources.
Extend and scale to multiple Virtual Machines
Application tiers are typically configured to enable scale-out to multiple VMs in the tier. This scale-out pattern will typically provide higher-availability and performance by leveraging the load balancer service or a storage queue. To enable automatic increase or decrease of the number of virtual machines in the tier the Azure Autoscale service can be used to control the number of virtual machines using a broad range of metrics from the machines or by monitoring communication mechanism such as a storage queue.
Backup, monitor, and manage your application
Production applications must have first class monitoring and management practices to ensure efficient operations. Both simple and complex applications can be monitored using the Azure Diagnostics extension and the Azure Portal to track specific performance counters. You can also take advantage of monitoring services offered by the platform, like Application Insights or Operational Management Suite (formerly Operational Insights). Then to protect against the unexpected or unplanned events, Azure Backup can provide secure backups of VMs using inexpensive Azure storage directly through the Azure management portal experience.
Deploy a hybrid Line of Business application
Many applications need to integrate with data sources from an on-premises system or authenticate to Active Directory running in your local datacenter. These applications can connect to the on-premises data through a Virtual Network with a Virtual Gateway, securing the connection using a VPN over the internet. Or for higher performance the Virtual network can be connected to the ExpressRoute service offering extremely fast and dedicated lines using dozens of Telco providers.
Development and test scenarios
Every software developer needs the infrastructure to design, develop, test, and deliver custom applications. Microsoft Azure gives you everything you need to provision and manage a complete development and test environment in the cloud or integrate with on-premises technologies.
Create dev and test environments on Azure
As a developer or a tester you can quickly create environments in Azure to deploy and test your application. You can easily provision virtual machines and any Azure PaaS components using reusable Azure Resource Manager (ARM) templates saved in source control with tools you are already comfortable working with. You can increase productivity by automatically creating VMs pre-installed with the latest version of your application.
Automate your continuous delivery pipeline
Software delivery teams implementing automated delivery pipelines to increase time to value for their users. You can easily and quickly provision production-like dev and test environments using ARM template. You can initiate your pipeline with Visual Studio by triggering automated builds for every check in, and perform deployments using PowerShell, Desired State Configuration (DSC), or the deployment tool of your choice. You can monitor the quality of your code by running automated tests at every stage of deployment and define necessary approvals before and after deployments.
Test your application from the cloud
As a developer or tester you can leverage the cloud to be your test harness for a number of real world situations, e.g. testing a large number of requests and multiple clients, simulating realistic and distributed load, at the same time validating the scale and tolerance of your application. Using Azure Marketplace templates, there are a host of test frameworks and services that enable you to do functional and performance testing. For customers who have Visual Studio Enterprise, you can leverage the on-demand and scalable infrastructure of Visual Studio Online load testing service to generate unlimited virtual users for your application from various Azure data centers across the globe.