Azure is now very much at the heart of Microsoft’s enterprise strategy, providing a place to build the next generation of applications and services. It’s easy to focus on it as a platform and as a host for virtual infrastructures, forgetting one if its other roles: a host for software as a service (SaaS).
Over the last few months, I’ve been talking to a lot of companies that you’d think of as traditional infrastructure or software providers. They’re the type of company you’d talk to about adding storage hardware, security platforms, or hefty pieces of enterprise software. But now, as well as hardware and software for your datacenter, they’re also providing software implementations in the Azure Marketplace. So can you.
Introducing the Azure Marketplace
For example, if you’ve been using a NetApp storage appliance in your on-premises applications, you may well want to use the company’s Ontap storage management platform to link your cloud storage to your own datacenter. Using the Azure Marketplace, you can drop a virtual appliance into your virtual network, linking the two environments without having to change your management tool. Other well-known vendors in the Azure Marketplace include Barracuda, Chef, and Oracle.
There are two reasons this is happening:
- There’s long been in a trend in the datacenter hardware space away from specialized processors to building on cheaper x86 systems. That’s made it a lot easier to deliver virtual appliances for use in cloud-hosted virtual infrastructures, working with software-defined networks and storage.
- The growing maturity of Microsoft’s ARM (Azure Resource Manager) templating language, for defining and deploying Azure infrastructures.
In the Azure Marketplace, you’ll see a mix of solutions, free tools and virtual machine images, subscription services that work as part of your own Azure applications, and hosted services that can be used as part of a virtual infrastructure or on their own. The service catalog sorts Marketplace services by role, either as specific functions like databases or management tools, or as compute, storage, and networking services.
Adding a service to your Azure account is easy enough: Choose the service you want to use and then pick the subscription options, as well as choosing the Azure services you want to host the service instance. Generally, Azure resources are priced separately from a service, so you’ll need to consider them as part of any budget. That’s a different model from traditional SaaS plans, where you pay only for the licenses you need. Some services also require you to have existing on-premises licenses, so check before you deploy them into your applications.
Building and selling your own services on Azure
Microsoft provides a route from your own ARM templates to an Azure Marketplace service offering. That way, you can package existing software and services and sell them through Azure, giving you a new revenue stream. To sell on the Azure Marketplace, you need to be a certified, a process that starts with building the appropriate virtual machine images and templates for your application. Certified organizations also agree to various Azure Marketplace policies, along with publishing company information.
Once certified, you get access to the Cloud Partner Portal, where you can put together marketing materials and code, either as VMs or complete virtual infrastructures. The approval process for code is relatively quick; VM-based applications are usually approved within three business days, but more-complex services can take longer.
Describing infrastructure with ARM templates
ARM is the basis of much of Microsoft’s infrastructure-as-a-service tools, and an essential tool if you’re planning on using devops practices on Azure. With simple service descriptions for all the elements of an Azure virtual infrastructure, from servers to networking to storage to Azure platform services, it’s an important part of working directly with Azure and integrating it with existing devops tools and services.
Once you’ve built an Azure virtual network, you can take all the elements you’ve used, turn them into an Azure resource group, and use that as the basis for an ARM template. ARM templates are JSON files, declarative descriptions of the contents of a resource group that can recreate it as and when required. They’re a useful tool for developers and admins, allowing repeatable deployment of proven environments stored in configuration management systems and used as part of a continuous integration build process.
With Azure Resource Manager, there’s a single consistent view for all the elements that go into building an Azure application. It’s accessible from the Azure Portal, from the command line (using PowerShell or Bash), and through Visual Studio. By wrapping them in a resource group, all those elements also have the same life cycle: They’re created and destroyed at the same time, as well as replicated in other regions.
Building ARM templates
You make your first an ARM template from existing resource group by exporting its current state. The resulting JSON file is ready for editing, using any text editor, though there is an ARM syntax tool built into Visual Studio and available for Visual Studio Code. It’s easy to see how ARM templates describe each aspect of your virtual network, and you can quickly build a library of components that assemble into whatever infrastructure template you might need.
When a template loads into Azure, it’s parsed and checked before running as a series of Azure API operations. These operate in parallel to build, configure, and deploy your application, including setting up Azure services.
Complex applications don’t need to be in a single file, where it’s easy to make mistakes that can affect deployments. Instead, you use a series of templates, wrapped in a single master template. That way, you can keep specific functions separate, with one template handling Azure databases, one storage and another for VMs. The master template handles the application life cycle, controlling the functional templates. Alternatively, you can have separate templates for separate parts of an application or service, where you’re managing each part’s life cycle separately.
Because ARM templates can wrap other ARM templates, if you’re using an application from the Azure Marketplace, you can make it part of your own resource groups. This ensures that any future deployment accesses the same resources and services.
Mixing third-party services and virtual appliances in your Azure applications makes a lot of sense; such mashups let you take advantage of familiar tools or use features that would otherwise require significant configuration and management. With Microsoft certifying code and offering it through the Azure Marketplace, you’ve also got the assurance that it’s been tested—as well as access to support services and a single billing platform.