Application Development: DevOps and open source solutions

Tim Walton - Technology Solutions Professional, Open Source Solutions

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.

The first blog series for the Application Development Partner community is about DevOps. This post, about DevOps and open source solutions, is part 5 in the series.

Introduction

DevOps enables companies to achieve faster and higher quality software delivery and helps increase customer satisfaction. It focuses on building quality into the supply chain of customer value, and applies the lean/agile methodology into that supply chain, which includes developing, building, testing, deploying, and monitoring of software. DevOps is no longer just a trend – it’s a well-defined set of practices and organizational patterns that for many enterprises is providing a return on investment.

In this blog post, I’ll build on the DevOps information provided in the first four App Dev blog posts for this series (see the links above for Parts 1–4). There is a rich ecosystem of open source tooling and products that support the DevOps methodology. The Microsoft commitment to providing an open and extensible cloud platform extends to using popular open source DevOps tools, several of which I’ve described below and provided additional resources for.

DevOps tooling and services from Microsoft

Success with DevOps requires a change in an organization’s culture and processes. Visual Studio Team Services provides DevOps tooling and services that helps organizations achieve this, as you see in the image below.

image

Microsoft also supports popular open source application frameworks (e.g., node.js, Java, and Python), including SDKs and cross-platform tools and DevOps solutions like Chef, Puppet, Jenkins, and more, as seen in the image below.

image

Support for open source DevOps tools

Configuration management

To implement Configuration Management and automation, we need to express the infrastructure as code so that it can be managed with agile development practices: version control, automation, testing, and validation. Doing so makes infrastructure a flexible resource that accelerates delivery, increases deployment rate, and reduces mean time to remediation. At Microsoft, we define infrastructure as code through Azure Resource Management templates. Microsoft platforms also support open source solutions like Chef, Ansible, and Puppet.

Chef

Chef utilizes Ruby for writing system configuration "recipes” that describe your application/environment. Chef integrates with multiple cloud-based platforms to automatically provision and configure new machines.

Puppet

Puppet consists of a Ruby-based declarative language to describe system configuration. Puppet abstracts the configuration in high-level terms, such as users, services, and packages, removing the need to use OS-specific commands.

Ansible

Ansible is platform for configuring and managing computers, providing multi-node software deployment, ad hoc task execution, and configuration management.

Continuous integration

In the software development practice of Continuous Integration, each member of a development team integrates their code continuously with the rest of the team. A “check in” results in an integrated code base which automatically builds, conducts unit tests, and validates code. Microsoft Azure and Visual Studio Team Services support many open source continuous integration solutions.

Jenkins

Jenkins supports many popular source control systems such as TFS, CVS, Subversion, Git, Mercurial, and Clearcase. Jenkins executes Apache Ant and Apache Maven projects as well as shell scripts and PowerShell commands.

Gradle

Gradle is a polyglot build automation system, integrating your build process with a flexible programming language.

Grunt

Grunt is an automation tool utilizing JavaScript, performing repetitive tasks like minification, compilation, unit testing, linting, etc.

Application Development Partner Community

New! Open Source Solutions (OSS) Partner Community