DevOps is about getting Development and Operations to work together and avoid conflicts in how they operate is to achieve their goals. The most commonly noted objective is shifting to Agile processes where applications are released more often and with better quality. While development and operations are of equal importance to a DevOps methodology, this article focuses on the role of Operations in facilitating an efficient and successful DevOps implementation.
In a DevOps environment, the operations team participates in the following activities:
Automation is a cornerstone to DevOps, as it facilitates continuous integration and delivery of applications into various environments (dev, test, prod, etc.). An example of such automation tools is VMware’s vRealize CodeStream, which allows the creation of release pipelines (e.g., from dev, to test, to production), with various tasks to retrieve application builds, deploy environments, automation testing, and etc. These tools are typically implemented and maintained by the operations teams.
Infrastructure and application blueprints may consist of a number items, such as VM templates, configuration management code, or workflows. Configuration code, e.g., Puppet manifest or Chef cookbooks, are used to configure deployed VM’s and the applications running thereon. Configuration Workflows may also be developed using tools such as vRealize Orchestrator. Dev and operations teams share responsibility for developing the blueprints to ensure deployed environments are correct and ready for use in the various release stages.
Patching and Upgrading
Historically, operations teams held responsibility for maintaining the various tools used by the development and release teams, such as build tools, source-code management tools, automated testing systems, and etc. However, the lines are blurring here as developers take on more coding responsibility for such management. This means Operations teams are housing development teams capable of developing the management automation.
This is one of the areas that are frequently overlooked, or at least rarely mentioned, in a DevOps environment. Monitoring applications through the various promotion environments is very important to ensure a fail-fast approach: potential issues are reported and investigated in early stages (dev and test), before they become real problems.
The operation team also builds dashboards for developers and operations so the application and its environment can be monitored throughout the Continuous-Integration/Continuous-Delivery process. This provides developers with feedback on the applications impact on the environment in which it runs, allows operations to become familiar with the same from an environment (VM/vApp) perspective, and provides confidence to the operations team that the Continuous-Integration/Continuous-Delivery process is working and there will be no issues when the application is released into production
It is worth mentioning that collaboration between development and operations should start very early, as developers need to embed operations considerations in their application code (such as adequate logging information), while the operations team need to ensure infrastructure availability for developers to start their work.
Ahmed Al-Buheissi is an operations technical architect with the VMware Operations Transformation global practice and is based in Melbourne, Australia.
DevOps. It’s the latest buzzword in IT and, as usual, the industry is either skeptical or confused as to its meaning. In simple terms, DevOps is a concept that allows IT organizations to develop and release software rapidly. By acknowledging the pressure the Development and Operations teams within IT place on each other, the DevOps approach enables the Development and Operations teams to work closely together. IT organizations put policies for shared and delegated responsibilities in place, with an emphasis on communication, collaboration, and integration.
Developers have no problem writing code and pushing it out, however their demand for infrastructure causes conflict with the Operations team. Traditionally it is the Operations team that release code to the various environments including Development, Test, UAT, and Production. As developers want to continuously push functionality through the various environments, it is only natural that Operations gets inundated with requests for more infrastructure. When you add Quality Assurance teams in the mix, efficiency is negatively impacted.
Why the rush to release code? Rapid application development is requisite. The face of IT is changing very quickly and will continue to change even faster. Businesses need to innovate fast, and introduce products and services into the market to beat the competition and meet the demands of their customers.
Here are four reasons rapid application development and release is fundamental:
This is the social media age. Bad code and bugs can no longer be ignored and scheduled for future major releases; when defects are found, word will spread fast through Twitter and blogs.
Mobile applications are changing the way we work and require a different kind of design—one that fits on a smaller screen and is intuitive. If a user doesn’t like one application, they’ll download the next.
Much of the software developed today is modular and highly dependent on readily-available modules and packages. When an issue is discovered with a particular module, word spreads fast among user communities, and solutions need to be developed immediately.
Last and most important, this is the cloud era. The very existence of the Operations team is at stake, because if it cannot provide infrastructure when Development needs it, developers will opt to use a publicly available cloud service. It is that easy.
So what is DevOps again? DevOps is not a “something” that can be purchased — it’s an approach that requires new ways of working as an IT organization. As an IT leader, you will need to “operationalize” your Development team and bring them closer to your Operations team. As an example, your developers will need the capability to provision infrastructure based on new operations policies. DevOps also means you will need to move some of your development functionalities to the Operations team. For example, the Operations team will need to start writing workflows and associated scripts/code that will be used to automate the deployment process for the development team.
While there are adequate tools that will facilitate the journey to DevOps, DevOps is more about processes and people.
How to implement DevOps The IT organization needs to undergo both people and process changes to implement DevOps — and it cannot happen all at once — the change needs to be gradual. It is also very difficult to measure “DevOps maturity.” As an IT leader, you will know it when your organization becomes DevOps capable — it happens when your developers have the necessary tools to release software at the speed of business, and your Operations team is focused on innovation rather than being reactive to infrastructure deployment requirements.
Also, your test environment will evolve to a “continuous integration” environment, where developers can deploy their code and have it tested in an automated and continuous process.
I make the following recommendations to my clients for process, people, and tools required for a DevOps approach:
Process The diagram below illustrates a process for DevOps, in which the Operations team develops automated deployment workflows, and the Development team uses the workflows to deploy to the Test and UAT environments. The final deployment to production is carried out by the Operations team; in fact Operations should continue to be the only team with direct access to production infrastructure.
Service Release Process – Service Access Validation
However, it is critical that Development have access to monitoring tools in production to allow them to monitor applications. These monitoring tools may allow tracking of application performance and its impact on underlying infrastructure resources, network response, and server/application log files. This will allow your developers to monitor the performance of their applications, as well as diagnose issues, without having to consume Operations resources.
Finally, it is assumed that the DevOps tools and workflows will be used for all deployments, including production. This means that the Development and Operations teams must use the same tools to deploy to all environments to ensure consistency and continuity as well as “rehearse” the production release.
The following roles are the main players in facilitating a DevOps approach:
Operations: The DevOps process starts with the Operations team. Their first responsibility is to develop workflows that will automate the deployment of a complete application environment. In order to develop these workflows, Operations is obliged to be part of the development cycle earlier and will therefore have to become closer to Development in order to understand their infrastructure requirements.
Development: The Development team will use their development environment to determine the infrastructure required for the application; for example database version, web server type, and application monitoring requirements. This information will assist the Operations team in determining the capacity required and in developing the deployment workflows. It will help with implementing the custom dashboards and metrics reporting capabilities Development needs to monitor their applications. The Development team will be able to develop and deploy to the “continuous integration” and UAT environments without having to utilize Operations resources. They can “rip and replace” applications to these environments as many times as needed by QA and end-users in order to be production-ready.
Quality Assurance (QA): Due to the high quality of automated test scripts used for testing in such an environment, the QA team can play a lesser role in a DevOps environment by randomly testing applications. QA will also need to test and verify the deployment workflows to ensure the infrastructure configuration used is as per the design.
End Users: End-user testing can be reduced in a DevOps environment, by only randomly testing applications. However once DevOps is in place, end users should notice a vast improvement in the quality and speed of the applications produced.
Tools VMware vRealizeTM Code StreamTM targets IT organizations that are transforming to DevOps to accelerate application released for business agility. Some of the features it offers include:
Automation and governance of the entire application release process
A dashboard for end-to-end visibility of the release process across Development and Operations organizations
Artifact management and tracking
For IT leaders, vRealize Code Stream can help transform the IT organization through a DevOps approach. The “continuous integration” cycle is a completely automated package that will deploy, validate, and test applications being developed.
DevOps can also benefit greatly from using platform-as-a-service (PaaS) providers. By developing and releasing software on PaaS, the consistency is guaranteed as the platform layer (as well as lower layers) are always consistent. Pivotal CF, for example, allows users and DevOps to publish and manage applications running on the Cloud Foundry platform across distributed infrastructure.
Conclusion Although DevOps is a relatively new concept, it’s really just the next step after agile software development methods. As the workforce becomes more mobile, and social media brings customers and users closer, it’s necessary for IT organizations to be able to quickly release applications and adapt to changing market dynamics. (Learn how the VMware IT DevOps teams are using the cloud to automate dev test provisioning and streamline application development in the short video below.)
Many organizations have tackled the issues associated with running internal development teams by outsourcing software development. I now see the reverse happening, as organizations want to reach the market more quickly and have started to build internal development teams again.
For the majority of my clients, it’s not a matter of “if” but “how quickly” will they introduce DevOps. By adopting DevOps principles, their development teams will be able to efficiently release features as demanded by the business, at the speed of business.
==== Ahmed Al-Buheissi is an operations technical architect with the VMware Operations Transformation global practice and is based in Melbourne, Australia.