DevOps (development and operations) has become an increasingly popular set of principles used among professional software developers, coders and other IT professionals. It seeks to establish an efficient environment in which building, testing, debugging, launching and updating software can occur in less time.
DevOps: the Basics
Normally, software production companies segment their operations, rarely (if ever) integrating between these segments. For instance, the development team works on developing the software, while the quality assurance team works on debugging and optimizing the software. There's no cross-collaboration present in this traditional format of software development – not without DevOps or a similar set of principles, at least.
DevOps is based on the principle that cross-collaboration between multiple teams, such as the software developers and IT operations, is more effective than working in a segmented environment where teams work by themselves, without sharing information and assistance with one another. Conventional wisdom should lead you to believe that organizations can finish projects more efficiently if the different teams from which they are comprised are encouraged to work together. DevOps embraces this belief, with organizations who use DevOps encouraging cross-collaboration between their various teams and departments.
NewRelic gave a pretty good definition of DevOps, saying it “...emphasizes communication, collaboration and integration between software developers and IT operations. Rather than seeing these two groups as silos who pass things along but don’t really work together, DevOps recognizes the interdependence of software development and IT operations and helps an organization produce software and IT services more rapidly, with frequent iterations,” explained the folks at NewRelic.
History of DevOps
You might be surprised to learn that DevOps is a relatively new practice, with origins dating back to the mid-2000s. According to TheAgileAdmin, the “genesis” of DevOps spawned from an increasing need for innovative system-side technology. It follows many of the attributes of Agile System Administration, as well as the Enterprise Systems Management (ESM) movement.
But it wasn't until 2008 when DevOps really began to take off. During this time, O'Reilly had hosted its first-ever Velocity conference, during which organizers and keynote speakers shared information about software development, product management, web performance and other related IT topics. That same year, Andrew Clay Shafer and Patrick Debois hosted the 2008 Agile conference, discussing the Agile infrastructure. These conferences are largely attributed to the rise of DevOps. Just one year later, the term “DevOps” was used in a series of devopsdays in Belgium.
What are the Goals of DevOps?
There are several key goals associated with DevOps, one of which is improved deployment frequency. By encouraging teams to collaborate and work together, companies can produce and launch products more frequently. This, of course, translates into faster time to market, higher success rate of new releases, greater customer satisfaction, and faster time to recover during product crashes or errors.
Furthermore, DevOps seeks to improve the predictability of product. When companies and organizations use the traditional format of product development – in which teams do not cross-collaborate – there's greater “uncertainty” regarding the outcome of the product. The final product could be ridden with bugs, errors or other problems, forcing the company to go back and fix it. DevOps, however, ensures a higher accuracy of predictability, as companies will know what their final product will look like.
Other goals of DevOps includes the improvement of product efficiency, security, operational processes and maintainability. The integration of DevOps targets continuous testing, feature development, maintenance and updates, and quality testing.
The Popularity of DevOps
Whether you work in the IT field or not, you've probably heard of DevOps before. It's being used by companies big and small to improve their operations and deliver products. There are other reasons attributed to the rise of DevOps, however, such as the use of Agile methods; the increased demand for faster product releases; the variety of virtualized cloud infrastructures; the increased reliance on data center automation; the increased use of configuration management tools; the increased emphasis on testing automation; and the increased demand for continuous integration techniques.
Being that DevOps involves the collaboration between development and operations, it supports the use of multiple tools. Known collectively as a “toolchain,” it offers many key functions that are necessary for product development with DevOps. See below for a list of some of the most commonly used categories of tools in the DevOps toolchain.
Code – continuous integration tools to assist in the development and review of code.
Build – tools that comprise of version control, code merging and build status.
Test – self-explanatory; tools that test the function and performance of code.
Package – artifact library and application pre-deployment staging.
Release – tools for change of management, release approvals and automation.
Configure – used to configure the infrastructure of code.
Monitor – allows for the monitoring of the code's performance and efficiency.
While the above is a general list of categories of tools used in DevOps, some of the specific tools may include Docker, Jenkins, Puppet, and Vagrant.
DevOps: the Bottom Line
Some people assume that DevOps is nothing more than tool, but this couldn't be further from the truth. It's a cultural shift away from the traditional, archaic means of product development, encouraging teamwork and cross-collaboration between different groups throughout all stages of the product development cycle.
If you're interested in implementing the principles of DevOps in your company or organization, you should dive a little deeper into the subject by reading some industry-leading books on the subject. The Phoenix Project, Web Operations, and Lean Software Development are all excellent titles. Of course, you can also brush up on your DevOps by attending one of the many DevOps conferences. There are more than half a dozen major DevOps conferences held each year in the U.S., offering the perfect opportunity for newcomers to educate themselves on this ever-growing practice.
Thanks for reading and feel free to let us know your thoughts in the comments below regarding DevOps.