Pavan Belagatti and Eric Vanderburg
Early DevOps adopters have proven DevOps to be more than just a cultural shift or a set of tools – they have proven it to be a critical success factor and a competency well worth developing in today’s environment of rapid change, technological development, and high customer or employee expectations. The demand for DevOps in organizations is high, but it is not something that can be bolted on to the average team. When this happens, the existing organizational undercurrents will undermine the effectiveness of such a program. Rather, the development, operations, and overarching management processes must be redesigned anew. DevOps can be highly disruptive to an organization, but it has a lasting and powerful impact on organizational success. After all, IT is the core of almost any business and the efficiencies and agility gained there will have a significant impact on the readiness and coordination of the organization as a whole.
The term DevOps has entered into our general parlance and has gathered much attention and focus. Below is the trend for Google searches of the keyword ‘DevOps’ from May 2015 to October 2016.
Believe me, DevOps is a wholesale change in companies organization. Any halfway efforts will not be fruitful, and organizations that want to implement DevOps will need to be committed to the process. Furthermore, those interested in learning how to move to DevOps can find it quite confusing because it is foreign to those from a single IT operations or development perspective. For this reason, let’s take a step back and look at the roots of DevOps to see how it all got started.
The Evolution of DevOps:
DevOps was born out of a long history of software development methodologies. For decades, programmers have sought to improve the software development process, and those efforts have produced the waterfall, agile, lean, continuous integration, continuous delivery, continuous deployment and continuous operations models.
We begin with the waterfall model. Here, developers believed that if they could just plan it out correctly and follow a clear set of iterative steps, the software development process would flow nicely. However, customer changes, team dynamics, and a host of other issues proved that the waterfall model involved high risk and uncertainty. Changes resulted in a significant amount of rework, and this was not often identified until late in the process when it proved tough to go back and change something that was not in the initial work plan.
Agile is incremental while Lean integrates processes to deliver product and features more quickly. In an effort to develop rapidly, Continuous Integration (CI) extends this process by requiring code check in and builds at multiple points throughout the day. Each build goes through a level of quality checking to identify errors soon after they are introduced into the code. Continuous Delivery (CD) uses pre-production environments in an automated fashion to perform software releases at regular intervals. CI ensures that individual components are integrated properly and that modifications at different areas work well together. Lastly, continuous operations combine the builds into the operational environment in such a fashion that there is no lapse in the availability of the operational systems due to new releases.
The Onset of DevOps:
Now that we have the historical context of DevOps, companies will be able to see how DevOps takes pieces of the above frameworks and weaves them into a more comprehensive way of doing business. This is also core to the DevOps philosophy. Software development and IT operations are not elements on their own. They are core pieces of the business, and they should function in support of the business goals. DevOps combines these features to more efficiently accomplish these aims and provide the agility needed for flexible, fast-moving companies.
DevOps is a complete transformation of the way companies do business. Adopting DevOps is no small change and should not be taken lightly. Companies tend to evaluate and implement changes quickly, and then test, revise, and refine just as quickly. DevOps is a confirmation that every individual in the organization is following the same principles and processes. It involves everything from putting in automated tests, builds, code reviews, to setting up multiple environments.
DevOps ensures that software development and IT operations teams agree on a common set of goals to achieve. It relies on automation and or even zero-touch automation. In the end, DevOps reduces speed to market by decreasing the friction in the software development process, from build to deployment and maintenance.
DevOps aims at breaking down the barriers, and differing preferences that usually exist between development and operations. DevOps allows Software development and IT operations to work together with common goals and to deliver reliable, safe, rapid, and efficient products to the market. DevOps gives a competitive advantage to the companies by boosting the IT performance and ultimately improves company’s bottom line.
DevOps is seeing a steady increase in organizations. For example, in a survey by RightScale, DevOps adoption rose from 66% to 74%. Given the disruptive nature of DevOps, this modest increase is indicative of a planned and reasoned approach in the industry and a positive sign for the future growth of DevOps. Here are six advantages DevOps can bring to your company.
- DevOps boosts collaboration
Software development and IT operations teams become one in DevOps and so each person in those teams works in harmony towards one singular objective. Team members share the same tools, terminology, workspaces, and methodologies, which all improve collaboration.
- DevOps standardizes processes and procedures
DevOps unifies formerly disparate groups through a standard set of processes and procedures. This allows for more consistency in results and makes it easier to plan, measure, and evaluate the performance of teams. Along with these standards comes a shared culture, which makes it easier for the team to work together.
- DevOps reduces coding errors and improves error resolution speed
DevOps, when combined with CI and CD, couples individual changes to testing, validation, and evaluation of the code so that errors are identified and resolved soon thereafter. Developers do not need to search through thousands of lines of code to find the error because they know it was introduced in the latest build. They can go right to the most recent changes to locate the error. This allows developers to spend more time creating innovative solutions and less time chasing bugs. It also results in a much happier DevOps team. After all, no one studied computer programming to fix bugs; rather, developers want to create new and exciting things with their software.
Less time spent on errors also results in faster time to market or deployment to internal or customer systems. Organizations can realize a return on their investment sooner with such a methodology.
- DevOps sees more involvement and engagement from customers and stakeholders
Traditional development environments were screened off from customers and stakeholders by project managers and other intermediaries who interpreted requirements, mapped program elements and then handed tasks off to developers. Customers and stakeholders didn’t see the fruits of this labor until there was a prototype or even the final product near the end of the development cycle. Much time passed between receiving initial requirements and seeing the final product. In some cases, the business needs changed while developers continued writing code for outdated requirements. In other cases, the drive and impetus for the project waned, resulting in decreased utilization of the product upon completion.
DevOps is more intimately engaged with the customer. Releases are more timely and produced more frequently so that customers can see the product taking shape and provide their feedback. The end result is a product that more effectively meets the needs of the customer or the business and one that more easily gains acceptance.
- DevOps navigates a sea of change with consistent iterations
Change often disruptive, but when managed correctly, change can be expected, appreciated, and welcomed. One of the biggest elements of minimizing change disruption is in setting expectations. DevOps makes changes in iterations that are planned, consistent, and regular so that the DevOps team, business stakeholders, and customers know what to expect.
The reality is that change is going on all the time. Organizations and their products or services need to be able to adapt to that change. However, they must do so with minimal disruption to their workforce and customers. Consistency in developing these changes allow the company and its products to adapt well, always learning and applying previous knowledge and experience into the next product or feature while giving customers and stakeholders a regular diet of small bite-sized changes.
- DevOps embraces automation, removing repetitive tasks and wasted effort
Once companies identify the mundane tasks that are stealing DevOps team member’s time, those tasks can be automated. The consistency of the DevOps process can lead to regular tasks and many opportunities for automation. One difficulty organizations adopting DevOps face is the effort required to perform routine and periodic processes. Those that effectively implement DevOps automate those processes so that DevOps time is spent on the most important tasks.
There are a wide variety of process automation and collaboration tools that can be used by DevOps teams to reduce human time devoted to repetitive tasks and improve the consistency of those tasks. With the introduction of tools like Docker, AWS, Puppet, Ansible, Chef, Slack, Shippable, and many other products, it is much easier for organizations practicing DevOps to use these tools and automate everyday tasks. The developers of these tools have already solved those challenges so that you don’t have to.
The software world is growing rapidly, with many new apps, software, and services. DevOps offers an effective methodology for improving quality, time to market, software adoption, and the happiness of development and IT operations teams. DevOps is not just another buzz word or fad. It is here to stay and evolve because it has proven to be effective. Begin the DevOps journey today in your company.