What is DevOps? Tackling some frequently asked questions
What is DevOps, exactly? Why might DevOps be beneficial to developers? What are common DevOps tools and software packages? And, how does all of this tie into the cloud?
What is DevOps?
There isn’t really one single definition for DevOps. The term is more of a philosophy that marries the concept of agile development with the idea that there should be a highly emphasized partnership between the developers and the operations staff. If there’s a constant conversation, a shared toolset and mindset and a sense of shared accountability across both groups for keeping services, software and systems alive and well, the organization benefits, the theory posits. DevOps adoption increased from 66 percent in 2015 to 74 percent in 2016, and it is strongest in the enterprise.
How does DevOps benefit the development process?
DevOps benefits developers in a few ways. First and foremost, they are closer to the action — when their code goes live in production, they see exactly how errors and bugs creep up and are able to fix them faster with a better root-cause analysis. Developers can understand how runtime environments affect their coding and adjust it for better performance and fault tolerance. Also, the feedback cycle is shortened, potentially down to minutes. Puppet reports high-performing DevOps organizations spend 22 percent less time on unplanned work and rework and are able to spend 29 percent more time on new work, such as new features that customers or the business demand.
What are some different DevOps tools?
As you might expect, there are loads of tools available to help implement DevOps in software shops both large and small, and many of these tools are enterprise-grade. These tools mostly surround four areas: release management, configuration management, orchestration and virtualization.
- Release management: These tools help manage the compilation and release of code to operational systems. Think of this type of software like automated build engineers. Software such as Jenkins, Travis, IBM UrbanCode Release, and TeamCity can help with this.
- Configuration management: This is used by the Ops side to make sure the operating environment for the developers’ code is up to snuff and matches what the developers’ code expects. Tools such as Puppet, Chef, IBM UrbanCode Deploy, Ansible and CFEngine all can be used by both developers and operations alike to harmonize environments from the developer sandbox to the server farm in the cloud. They automate the configuration of environments across one, two, a dozen or thousands of servers.
- Orchestration: Tools such as IBM Cloud Automation Manager, Zookeeper, Noah and Mesos manage the transition between development and production, and also handle resource management and scheduling across both private data centers and public cloud infrastructure.
- Virtualization: Along with containerization technologies, virtualization is key to the DevOps movement because it allows entire systems and services to be abstracted away from the physical hardware they run on, making them portable, fault-tolerant and easily migrated from development to production roles. Virtualization techniques can also be used to emulate unavailable, or not developed, services. This allows applications to be tested earlier and more often using these virtual services to help speed up software delivery and increase quality. Tools such as Xen, IBM Test Virtualization, ServerOpenStack, Docker and Vagrant — among others — are popular in this space.
How are DevOps and the cloud related?
DevOps and the movement to the cloud come from the same basic premise: IT needs to work faster and be more agile. With the cloud, you don’t have to order hardware and wait months for it to be racked and set up in a server closet. Developers can get started very quickly, leverage existing services and APIs and deliver rapid results using a cloud environment.
DevOps is the idea that software should be built continuously, refined continuously and work across platforms and architectures that are in use by the development and operations teams because those two have a deep relationship, use the same tools and share accountability for keeping everything running. It just so happens that many of the software tools DevOps teams use have cloud capabilities built in with them. However, more than anything, DevOps and the cloud are two solutions borne of the same basic need for more, faster.