Adopting DevOps isn't just a good idea, it's a business necessity.
To get the most from today's technologies -- from servers to virtual machines (VM)s and containers on to the clouds they empower -- you must get your system administrators working together with your developers. Hence, DevOps, the portmanteau of development and operations.
Patrick Debois, an IT consultant, created DevOps to bridge the gap between projects and operations by using Agile programming techniques. Agile replaces traditional, slow programming methods such as Waterfall.
With Waterfall, development teams go through several distinct steps: Analysis, design, specification, coding, and testing. While popular, Waterfall has multiple problems. First, 80 percent of the work happens during the last 20 percent of the project.
In practice that means programmers work 18-hour days as a project reaches its shipping date, testing is done at a breakneck pace, and quality assurance becomes a last-minute afterthought. Second, it's hard to modify a program when management wants to make changes. Climbing back up a Waterfall project to add a new feature or change the specification is incredibly painful.
With Agile, this approach is replaced by four basic principles.
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
In Agile, programming teams include users, management, and system admins from a project's start. This is often done by putting everyone involved in a project into small groups that meet daily. One of the most popular mechanisms for doing this is Scrum, but there are other methodologies such as Extreme Programming (XP). With DevOps, these approaches are sped up by using one of multiple DevOps programs, such as Ansible, Chef, Puppet, or SaltStack.
DevOps: Reach over the IT wall between development and operations
As DevOps expert Damon Edwards explained, "DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity."
Development-centric folks tend to come from a mindset where change is the thing that they are paid to accomplish. The business depends on them to respond to changing needs. Because of this relationship, they are often incentivized to create as much change as possible. Operations folks tend to come from a mindset where change is the enemy. The business depends on them to keep the lights on and deliver the services that make the business money today. Operations is motivated to resist change as it undermines stability and reliability.
When that disconnect is repaired, not only will both sides be less frustrated, they're able to work much faster. For the enterprise as a whole, DevOps improves both business agility and IT alignment. In other words, businesses can deliver improved services to users while using IT to more efficiently achieve business objectives.
First, server virtualization -- followed by storage and network virtualization -- introduced us to the idea that physical systems operations can be decoupled from the digital elements that they host. Operating systems no longer have to be shackled to physical servers. File systems no longer have to be locked down on specific spindles. Connections between servers are no longer statically assigned to specific physical switch ports.
It was one thing when individual servers needed constant hands-on attention to keep them running. Today, almost everything in IT is virtualized, which means DevOps programs make it simple for both developers and administrators to work together. In short, in this new software-defined IT world, businesses can move at the speed of software development.
According to a 2016 Puppet survey of 4,600 IT professionals, IT departments with a strong DevOps workflow deployed software 200 times more frequently than low-performing IT departments. Moreover, they recovered 24 times faster, and they had three times lower rates of change failure. At the same time, these businesses are spending 50 percent less time overall addressing security issues, and 22 percent less time on unplanned work.
As Kamal Anand, A10 Networks's vice-president of cloud business recently observed:
The movement towards cloud, towards DevOps, is very driven by agility -- that's the foundation. Companies and organizations want to deliver functionality faster: for example, all of us, on our mobile phones, are used to apps that are updated on a daily basis, with new functionality showing up, and there's a lot of competitive pressure to continue that innovation.
This is important for more than just smartphone apps. For example, if you can improve your website performance by even a second, it can increase your sales by 9 percent.
That means I need infrastructure that's easily available and can be provisioned on demand; it means applications and code that can be updated on a weekly or daily basis rather than once a year. Digital transformation strategies are evolving because there are so many technology changes, so you have to react fast. DevOps is critical for digital transformation, but I would say as an enabler rather than a definite requirement -- it allows you to be more agile, deliver things faster and react to market conditions quicker.
Security, as the Puppet survey found, is also an important DevOps advantage. In speeding up development and combining the expertise of developers and system administrators, spotting and fixing vulnerabilities quickly becomes possible. This also makes creating and deploying security updates and patches faster, which in turn reduces the risk of such commonplace security threats as intrusions, data leakage, and ransomware.
Finally, DevOps can bridge the gap not just between programmers and operations, but between all professionals in a company. By creating a cross-functional team where employees feel they have a real stake in improving the company's speed and functionality, DevOps can transform a company.
Big business has recognized the value of all these factors. RightScale's annual State of the Cloudsurvey showed DevOps adoption move up from from 54 percent in 2013 to 78 percent in 2017. Enterprises consistently adopt DevOps more than SMBs.
At the same time, F5 Networks's recent State of Application Delivery survey found that only 20 percent of respondents viewed DevOps as having strategic impact. That's up only slightly from earlier surveys.
There are multiple reasons why DevOps has faced an uphill battle in business adoption. A recent survey by cloud sandbox software provider Quali identified the top 10 barriers to DevOps in the enterprise. Topping the list were cultural factors, the lack of test automation facilities, and trouble integrating legacy applications into a DevOps friendly hybrid-cloud environment.
The number-one barrier to DevOps is culture, which should not be surprising because, when all's said and done, DevOps is not a set of tools -- tools are just a means to an end. DevOps is a culture, and in calling this out as the top barrier it really brings the people part of the equation into the mix and says 'look, we can only reduce this barrier if we can bring in the ability to collaborate more seamlessly, and have a healthy mix of being able to move fast, but with the right control mechanisms in place.'
Culture is usually the hardest thing to change, and it's extremely difficult to keep everybody happy. It's also gradual change, coming about in increments, and in some ways it has to come from the top. So executive buy-in, the ability to enforce some of these things as a mandate across the organization -- that can go a long way toward greasing the skids.
While DevOps is a business IT philosophy, making it work requires three sets of tools. These are continuous integration/continuous development (CI/CD) programs, DevOps software, and container orchestration programs. These, in turn, are built on VMs, containers, and clouds.
CI/CD programs, such as Jenkins, Atlassian's Bamboo, and Microsoft's Visual Studio Team Services (VSTS), enable developers to regularly merge their code changes into a central repository. Each code check-in is then verified by an automated build. This lets teams find bugs much earlier in the development process.
Each CI/CD program has its own particular audience. Jenkins, the oldest and most popular of CI software, is an open-source program that works with a multitude of operating systems and platforms. Its popularity has made Jenkins the open-source standard for managing the dev side of DevOps, from source code management to delivering code to production.
Bamboo's claim to fame is its built-in integration with Git, via Bitbucket Server and JIRA Software. VSTS, of course, works well for businesses relying on Windows Server and Azure for DevOps.
DevOps software programs such as Ansible, Chef, Puppet, or SaltStack all have one goal: Managing enterprise-scale server infrastructure with minimal sysadmins and developer input. These automate configuration management. This saves your company days of time, but enables you to run hundreds, even thousands of servers, per sysadmin.
With many areas of software, there are one or two clear leaders. That's not the case with DevOps. No single program dominates the market. You'll need to look at each one carefully to see which will fit your business needs best.
Each works in a somewhat different manner.
Ansible, the newest of the programs, simplifies complex orchestration and configuration management tasks. Ansible, which now belongs to Red Hat, works well with its Linux and cloud programs. It enables administrators to script commands in YAML.
Chefturns infrastructure into code. This method enables management of both cloud and on-premises resources. Ultimately, Chef is a framework to automate and manage infrastructure and applications. Specifically, Chef translates system administration tasks into reusable definitions, known as cookbooks and recipes. These are written in a domain-specific language (DSL) dialect of Ruby. Because the recipe DSL is a Ruby DSL, anything that can be done using Ruby can also be done in a recipe.
Puppet does similar work by providing configuration management services. Once in place, it uses a client/server approach. Puppet's instructions are written in the DSL: Puppet. Like Chef, these are based on Ruby. Puppet is regarded as being more system-administrator friendly than other DevOps programs.
SaltStack also enables you to install, manage, and maintain your servers' configuration using an infrastructure-as-code model. This means writing code to do deployments, manage configurations and set up automated infrastructure provisioning. It's not just writing YAML scripts, although that's part of it. Instead you use software development practices, such as version control, testing, test deployments, and design patterns to create reproducible, easy-to-manage models.
Universally, these programs enable you to create master copies of the software stacks and servers you need for your work. Once perfected, you can implement thousands of identical instances. If you need to change one -- say, use MariaDB instead of MySQL for your database server, each allows you to easily switch out DBMSs in multiple servers. The end result is an enormous savings in time of server and software deployment.
Containers are quickly becoming the dominant cloud-enabling technology, according to 451 Research, primarily because containers use far fewer system resources than do VMs. For CFOs, the bottom line is you can run from four to 10 times as many server instances on the same server hardware as you can with VMs.
Managing containers isn't easy. As DataDog, a cloud-monitoring company, points out in its report on real-world Docker adoption, "Containers' short lifetimes and increased density have significant implications for infrastructure monitoring. They represent an order-of-magnitude increase in the number of things that need to be individually monitored."
Specifically, container management programs provide four services:
Provisioning: These tools can provision or schedule containers within a container cluster and launch them.
Monitoring: These tools track and monitor containers' health and hosts in the cluster. When a container fails, the monitoring tool spins up a new instance. If a server fails, the tool restarts the containers on another host. The tools also run system health checks and report irregularities with the containers, their VMs and servers.
Rolling upgrades and rollback: When you deploy a new version of the container, or the applications running within the containers, the container management tools automatically update them across your container cluster. If something fails, they'll let you roll back to the last known good configurations.
Each do these in different manners. With Docker Swarm mode, introduced in Docker 1.12, the container load is spread across multiple hosts. It also enables you to set up a swarm (that is, a cluster), on multiple host platforms. Docker is the leading container company.
Kubernetes, the most popular container orchestration program according to 451 Research and CoreOS, offers a high degree of interoperability, as well as self-healing, automated rollouts and rollbacks, and storage orchestration. The self-healing, if anything, is a little too efficient. Kubernetes excels at automatically fixing problems. Containers can crash and be restarted so fast you may not know your containers are crashing unless you're paying very close attention to your logs.
Finally, Mesosphere Marathon is a container orchestration platform for Mesosphere's DC/OS and Apache Mesos. DC/OS is a distributed operating system based on the Mesos distributed systems kernel. Mesos is an open-source cluster management system. Marathon uses its partner program, Chronos, to provide management integration between legacy stateful applications and container-based stateless applications.
DevOps: Using it for success
This may all seem complex, but it's all to one purpose: Turning old-style IT work into new simplified, easy to manage software-defined systems.
Market victory now goes not to the most mature and experienced companies, but to the ones that can change and evolve the fastest. For many businesses that means adopting DevOps.