Application Development: Infrastructure as Code

jgardner author block

There’s been significant interest from partners about cloud application development, and we’ve decided to offer a practice-building community around the topic. Just as with the Azure Partner and Office 365 Partner communities, the new Application Development Partner community will include a monthly call, blog series, and Yammer group. Dedicating these assets to Application Development will let the Azure Partner community focus on infrastructure and management.

Our first call is scheduled for September 6, and will cover DevOps. In my introductory blog post about DevOps, I talked about using automation as the main tenet for bringing development and operations teams together within an organization and increasing the release rate. Doing this requires standardization and thinking of infrastructure as code.

In this post, I'll explain what infrastructure as code means, the role that Microsoft Azure can play, and the partner opportunity.

Infrastructure as code

Enable application innovationThe concept of infrastructure as code, or programmable infrastructure, plays a significant part in making DevOps possible and is the first step in bringing the development and operations disciplines together within an organization.

As part of the development process, operations works with development from the start of the project - instead of getting involved when the project is nearing deployment - to understand the requirements the application needs to run.  The two work together for the duration of the development cycle. These requirements are used to create the automation files that will be used to provision the infrastructure during code deployment through automation tools.

By storing the infrastructure as code in the same versioning system as the code, a record of the changes be tracked, and changes needed to the environment become a matter of executing the automation script. Beyond the increased speed of deployment, infrastructure as code can help prevent configuration drift in an environment. If a change is made to an environment that is not captured in the code, it will be negated at the time of the next deployment.

Microsoft Azure and infrastructure as code

Microsoft Azure is built to be the target of infrastructure as code and includes tools that help facilitate the adoption of the discipline. Every service in Azure is accessible through automation tools via the Azure Command Line Interface or Azure PowerShell. These connections let the creation of Infrastructure as a Service (IaaS) or Platform as a Service (PaaS) assets be scripted and run for any platform. Beyond the creation of Azure assets, tools like Azure Automation and Desired State Configuration allow for deeper integration with services once they are deployed to configure the environment.

Azure is a first class platform for Linux and open source technology, and there is a great story to tell about support for open source on Azure. Nearly one in three Azure virtual machines run Linux, and there is an open source project for Desired State Configuration for Linux.

Azure Resource Manager

While the creation of environments can certainly be programmed through PowerShell and the Command Line Interface, the components of these environments are usually seen as one entity. Azure Resource Manager allows the deployment and management of these environments as a single entity. Azure Resource Manager templates are JSON files that define the resources to be deployed together through a declarative syntax. These templates can then be deployed via code. To get started, check out the Azure Quickstart Templates on GitHub, and the templates I have published on my personal GitHub account, too.

Chef and Puppet

We know that many organizations have made investments in on-premises hardware, in multiple platforms, and in automation resources like Chef and Puppet. Azure supports all of these scenarios, and lets customers extend investments they have already made into the cloud.

Both Chef and Puppet are supported through virtual machine extensions, allowing VMs that are created to support automation. This assumes that a Chef or Puppet environment is already set up. If you would like to set up a new environment, images for Chef and Puppet are available for download and deployment on the Azure Marketplace.

The partner opportunity

We are looking for partners that have the skills and capabilities to define, build, manage, and release great software on-premises and in the cloud. From a profitability standpoint, long-term, value-added services for application innovation can have margins as high as 65%.

When conducting project reviews, adding a step to identify repeatable steps that can be automated will allow reuse in future projects and increase margin. An example is the deployment of a server and joining it to a domain. This process can be automated through the use of ARM templates with a custom extension. This small step helps reduce time to deployment and may allow you to move from an hourly rate (project services) to a recurring revenue model (managed services and packaged IP). Take a look at the financial model and value proposition materials below to understand the market opportunity and insights for maximizing profitability.

Application Development Partner Community