For tech and IT professionals, cloud computing is mostly associated with Infrastructure as a Service. In this guide, you will learn what Azure offers when you need to create one or one thousand virtual machines in the cloud, how to harness the portability of containers, and how Azure allows you to create private virtual networks and connect them to private/on-premises environments. In this guide we will cover:
- Virtual Machines
- Working with VMs at Scale: Virtual Machine Scale Sets
- Working with VMs at Scale: Azure Batch
- Reducing Errors with Automation: Azure Resource Manager
- Virtual Networks
- Increasing Portability: Azure Container Service
- Increasing Portability: Azure Container Registry
- Increasing Portability: Azure Service Fabric
Microsoft Azure provides Virtual Machines as a service with support for Linux and Windows VMs. Azure Virtual Machines Service offers integration, delivery, development and an extension of your data centers (hybrid cloud). The Azure Marketplace provides a number of pre-built environments and software, both free, community and open-source as well as paid. Examples include Windows Server, Microsoft SQL Server, Red Hat, and Ubuntu. Pay only for what you use with per-minute billing.
Azure VMs support rich developer tooling such as web interface via Azure Portal, as well as command-line tools: Azure CLI and Azure PowerShell or Bash. VMs can be managed by the RESTful HTTP API or in the programming language of your choice, e.g., .NET, Java, Node.js or Python.
Learn More
Get Started: Azure Windows Virtual Machines
Get Started: Azure Linux Virtual Machines
One of the benefits of the cloud is the automation and the ability to provision 1000s of VM. It is possible to rollout your own solution with many of the developer tools which Azure provides such as Azure CLI or REST API. However, there's a better way with Scale Sets. Azure Virtual Machine Scale Sets allows developers to deploy and manage a set of identical VMs (server farms). Scale Sets service allows you to upload your own images (up to 100), and there might be up to 1000 VM in a set.
The Scale Sets service has the ability to auto-scale the VM up or down. This is helpful when working with big-compute tasks, big data and high-load systems.
Azure Batch is an Azure service which automates a large number of VMs and can automatically scale up or down compute resources. Developers can define compute resources such as VMs and execute applications on them in parallel and at scale.
With Azure Batch, there is no need to manually provision and configure the infrastructure or schedule tasks. Batch was designed for operations which regularly process, transform or analyze large volumes of data. Azure Batch works well with intrinsically parallel applications and workloads—those which are straightforward to split and perform on different machines.
Azure provides a rich tooling to facilitate infrastructure as code so developers can reap the benefits such as reproducibility, elasticity, versioning and testing. Developers can utilize one of the many SDKs, CLI or PowerShell or REST APIs.
Azure Resource Manager allows you to deploy, monitor and manage Azure resources as a group so you can work with all resources in a single coordinated operation. With Azure Resource Manager, developers use templates to describe all the resources needed including VMs, storage, virtual networks, web apps, databases, etc. This allows to repeatedly deploy in a consistent state without any discrepancies. If one resource fails, the entire group will fallback. Azure Resource Manager natively supports Role-Based Access Control to apply access control to all resources in a group.
Resource Manager templates are written in JSON. This declarative approach of templates offers better maintenance, more predictability and improved readability over CLI or SDK scripts because there's no racing conditions with the declarative approach of Resource Manager templates.
Developers don't have to create templates from scratch every time. There is a template export feature which will generate a template and a wide variety of ready-to-use templates.
Using Azure Virtual Network (VNet) service, developers can set up logical representations of their networks in the cloud. VNet is a logical isolation of the Azure cloud dedicated to your subscription. All Azure resources in a VNet can securely connect to each other.
Azure Virtual Network offers:
-
Isolation: Networks are isolated from one another and can be segmented into subnets
-
Connectivity: VNets can be connected, resources can be connected to each other and/or the Internet and VNets can be connected to on-premises networks
-
Traffic filtering: Inbound and outbound traffic can be filtered by IP, destination, protocol and port
-
Routing: Developers can override default and configure routes
To connect a virtual network (VNet) with on-premises networks, other Azure VNets, or Microsoft networks, Azure offers VPN Gateway which sends encrypted traffic across via the public connection.
Azure Container Service allows developers to manage, create and configure clusters of VMs which are pre-configured by the Container Service to run containerized applications. Azure Container Service leverages the Docker container format to ensure the maximum portability between environments and at the orchestration layers.
Azure Container Service allows developers to utilize Docker containers by using open-source tools and technologies that are popular among developers today including DC/OS, Docker Swarm and Kubernetes. This allows developers to use familiar tools including DCOS CLI, Docker CLI and kubectl.
Azure Container Registry allows developers to store and manage their private container images across all types of Azure deployments (e.g., App Service), not just across Container Service deployments. Azure Container Registry is managed via portal, CLI or REST API interfaces, and is based on the open-sourced Docker Registry 2.0.
Azure Service Fabric is the middleware platform for building and managing enterprise-level, tier-one, cloud-scale applications by making it easy to package, deploy and manage reliable and scalable microservices.
Service Fabric powers many Microsoft services such as Azure SQL Database, Azure Cosmos DB, Cortana, Microsoft Power BI, Microsoft Intune, Azure Event Hubs, Azure IoT Hub, Skype for Business, and others. Service Fabric can deploy any executables and runtimes and make them reliable. There's no direct equivalents to Azure Service Fabric in AWS.