Most organizations would appreciate a faster response from those in charge of the IT platform. Although IT is critical to enterprise operations, it can be far more of a business constraint than an enabler.
Waterfall approaches to business-critical application development provide an answer that is too late to solve the problem. DevOps is a methodology that aims for greater speed of response. Developers push code into the operations infrastructure more quickly, enabling IT to respond to problems and opportunities as they happen.
The DevOps mind-set of incremental, continuous integration and delivery is familiar to consumers, but faces challenges when it comes to application testing and training in enterprise settings. The business has to move to a continuous delivery mind-set with an entire DevOps tools list for support: Small changes delivered rapidly and effectively on a regular basis are easier for the help desk and end users to adopt.
Developers must be more business-savvy in DevOps deployments -- structuring efforts around business impact rather than technically appealing projects. Operations technicians can't be scared of changes to production, even with the complex interdependencies of a modern IT platform. With the right checks and balances in place and tools that get the right information in the right places, small changes are easier to deal with than a massive, full version upgrade where rollback may be a long, drawn-out issue.
DevOps is no easy way to a better IT environment. It requires a complete rethink of how IT delivery is managed, and coherent and strong process management tools.
Developers rarely work on their own, and the teams that developers work with may be highly dispersed. Consider driving the use of a rationalized set of tools to avoid conflicts between different systems.
Make a DevOps tools list
What makes a good DevOps implementation versus a route to chaos? Rather than give either group free rein over IT, the enterprise requires a full set of processes to capture and prioritize business needs, plan what is required for new or changed technology, test this effectively, and provision and stage the resulting code while implementing it at the lowest possible cost and risk.
Big, long drawn-out projects have to die. IT organizations must break business requirements down into necessary processes, and then break processes down into tasks. Look at the tasks and identify if there are already services within the IT environment that fulfill those needs. Do not allow development to create yet another similar function -- reuse makes support and workload portability happen. Look to external services, callable via application program interfaces (APIs). Evaluate API management tools, such as those from Apigee and TIBCO Mashery, to monitor and manage what is happening with these APIs.
Then, choose the developers' tools for DevOps. Many developers have built up custom toolkits rather than using the old-guard vendor toolkits from Microsoft, IBM and others. They may use open systems such as Ruby on Rails or Python, along with version control and configuration management systems such as Jenkins, Chef and Puppet to provide individual control of the development-to-operations processes.
Due to the team nature of development, collaboration management is key. This can be at a simple level, such as through the use of an online tool like Redbooth (formerly Teambox) or Basecamp, or on-site or hybrid tools such as CA PPM or Clarizen. These latter tools allow the team to store code in a single place, along with documents and peripheral information, and with the capability to manage the progression of project tasks. There are also full-scale source code management (SCM) tools, such as those from Serena Software and IBM Rational, as well as open source tools like DCVS developed by elego Software Solutions or Git.
Don't rush getting the code through user acceptability testing and staging into the operations environment. Checks and balances are imperatives, with automation ensuring that every process step is monitored, and issues are raised for immediate action as necessary. For systems that provide automation and monitoring of DevOps processes, look to vendors such as HashiCorp, with its Atlas product -- a collection of its individual tools, such as Vagrant, Packer and so on -- Electric Cloud with its ElectricFlow or the likes of IBM, which offers Bluemix as a development, packaging and provisioning platform. Atlassian is another company that provides automated testing and provisioning tools.
Use virtual containers wherever possible for DevOps applications. Containers allow for greater control and management of code, pushing developers toward a more flexible microservices model. The leader in this space is currently Docker, but the CoreOS Rocket project also shows promise. Apache Tomcat is also a contender, but does not seem to be keeping pace with Docker.
Link up your DevOps toolchain
At the moment, DevOps is still an emerging approach. As such, there is a lack of overall maturity in the market, and it is unlikely that any organization will find a single tool to give them the perfect DevOps strategy. Flesh out your DevOps tools list with the best platform for each given task, with an eye to the future. Do not take tools that look as if they have been renamed from old-style SCM systems to include DevOps as a marketing ploy; ensure that anything that your developers and IT operations staff use has the flexibility to adapt to new technologies as they come through.
Stop looking for one comprehensive DevOps tool -- there isn't a silver bullet -- yet. Instead, make sure the bullets you choose do not end up shooting you through the foot.
Got the skills? Land a DevOps job
Integrating asset management with configuration control
Infrastructure as code and other DevOps essentials
A look at the DevOps periodic table of elements
An industry expert's take on the definition of DevOps