Convention wisdom refers DevOps as a strategy, an approach, or a movement as some call it. DevOps addresses the idea that Development and Operations need to be aligned well in an application lifecycle, work closely and collaboratively to eliminate inefficiency, reduce bottlenecks, and maximize productivity. The concept is certainly not new, for decades business processes and operations based on software engineering concepts or lifecycle management methodologies are all trying to minimize inefficiency and maximize productivity. So what is different now.
DevOps in Cloud Computing
In cloud computing, infrastructure construction, run-time configuration, and application deployment are now delivered on demand, i.e. as a service, hence IaaS, PaaS, and SaaS. (1, 2) Form an operation’s point of view, cloud computing eliminates most, if not all, physical aspects of Dev and Ops. The physical establishments of Dev and Ops including servers, networks, and storage are now a lesser concern on application administration, maintenance, and costs since applications are based and operated upon logical artifacts like virtual machines, virtual networks, and virtual storage. From a user’s point of view, infrastructure support, run-time operations, and application maintenance are now all logical models where Dev and Ops can operate on a common, i.e. identical platform with standardized services from a cloud provider. This setting offers many opportunities to promote and to practice DevOps. With cloud computing, the integration of Dev and Ops becomes lucid and an achievable proposal both financially and administratively. DevOps is also an opportunity to further increase productivity, hence the ROI, of adopting cloud. I believe the inevitability to integrate Dev and Ops is quickly becoming apparent as IT continues to adopt cloud as a service delivery platform.
DevOps and Automation
Why to automate anything should be obvious. In addition to efficiency, there are also considerations on consistency, repeatability, and predictability to programmatically carry out tasks. Considering Dev and Ops, automation is an effective vehicle to minimal user interventions from both Dev and Ops for establishing application infrastructure, configuring run-time, and deploying a target application. This automation provides consistency and predictability of application deployment with transparency to both Dev and Ops. The theme is that DevOps calls for automation and automation sets DevOps in motion.
DevOps and Tools
Here, I highlight a few tools which can cultivate DevOps. Azure PowerShell Cmdlets and Cross-Platform Command Line Interface are for installing on individual devices, and with which each of us can take a DevOps approach and automate as much as applicable on our deliveries. Parallel processes, plan operations based on a logical unit of work, separate business logic from data, etc. and make automation a common work style.
Azure Automation is a Microsoft’s solution for IT automation. For those have not had a chance to work on Microsoft System Center Orchestrator, this may possibly present a learn curve to some. Orchestrator as the name suggests is a powerful component in System Center to for automating and orchestrating a data center. You can consider it as a turbo DevOps engine leaning towards the Ops side.
Visual Studio Lab Management on the other side is the ultimate DevOps operating environment facilitating entire application lifecycle management. Form departments, business units, organizations, to an entire enterprise, Visual Studio Lab Management can be scoped accordingly.
This is the tool to manage Microsoft Azure with Windows PowerShell. For those who are new to PowerShell, relevant information is readily available in TechNet Library. To learn and assess Microsoft Azure cmdlets, one needs first acquiring a trial subscription, followed by downloading and installing Microsoft Azure PowerShell. Then, one must first configure a secure connection between an intended subscription and the Windows PowerShell environment in a local device. Instructions to Install and configure Windows Azure PowerShell are well documented.
This is an extension of Windows PowerShell in Windows Server 2012 R2 and Windows 8.1. Notice as of May, 2014, both Windows 7 and windows 8.1 are also available for MSDN subscribers to deploy in Microsoft Azure. DSC provides a set of PowerShell cmdlets and resources enables to declaratively specify how to configure, manage and maintain configuration data for services and managing the environment in which these services run including:
- managing server roles and features, registry settings, processes, files and directories, local groups and user accounts, environment variables, etc.
- installing .msi and .exe packages
- discover current state on a given node and validate its configuration
DSC is a vehicle to realize automation for predictability. Additional information of DSC is available elsewhere.
Azure Cross-Platform Command Line Interface (Xplat-CLI)
Both Puppet and Chet offers technologies to automate deployments, configurations, and management of VMs across platforms. Microsoft Azure VM has both as configuration extensions as shown below. Microsoft Azure VM Image Gallery also includes a pre-configured Puppet Master based on Ubuntu Linux distribution. These additions offers vehicles to integrate with developed DevOps communities and practices, facilitate hybrid cloud adoption with automated deployment across platforms, and realize operating on Microsoft Azure is essentially a continual DevOps practice.
This is an IT automation solution for Microsoft Azure by employing the concept of a runbook as employed in System Center Orchestrator. A runbook comprises activities which are the steps, i.e. instructions for an automated process, operations, and tasks. A runbook in Microsoft Azure is a Windows PowerShell workflow to automating the management and deployment of resources. Above all, an Azure runbook can automate essentially what a Microsoft Azure PowerShell and Windows PowerShell script can perform.
To configure Azure Automation, one must first create an automation account which is a container for managing automation resources including runbooks, jobs, and assets. Each automation account is associated with an Azure subscription, and a subscription can have multiple automation accounts.
This feature is being previewed in Microsoft Azure at this time.
Managing development, test, staging, user acceptance tests, demo environment, etc. are key part of application life cycle management. Visual Studio Lab Manager, a feature of Team Foundation Server (TFS), facilitates the management of existing and simplifies the process of provisioning of new environments for all team members. It can automate the routines of building, deploying, running tests on, and removing a lab environment. Here a lab environment is a collection of virtual and physical machines for developing and testing applications. A target lab environment, for instance, can now be automatically provisioned using templates with consistency and predictability, and as needed reverted to a specific point of time with snapshots. Visual Studio Lab Manager is raising application lifecycle management to a new standard.
For developers, cloud computing has rejuvenated DevOps with a higher intensity and a bigger ambition. The integration and collaboration of Dev and Ops, from users’ point of view are now pertinent most at a logical level and above fabric, i.e. the virtualization layer. DevOps is no longer just a right idea, but now an approachable proposition with cloud computing both administratively and financially. Application lifecycle management environment like Visual Studio takes full advantages of System Center and Hyper-V and integrates Dev with Ops (System Center and Hyper-V) at an enterprise architecture level and with methodologies. The result of practicing DevOps will be timely, impactful, and rewarding.
For IT professionals, DevOps signifies a call to action for data center automation with a comprehensive system management solution. DevOps is much more than just automation, nevertheless towards DevOps automation is an essential step. Above all, I view DevOps as an exciting prospect with a strategic roadmap for IT professionals like you and me to continue growing professionally, and explore career opportunities with DevOps or data center automation discipline in this cloud computing era.