DevOps FastTrack – From How to Wow

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.

 

Why DevOps?

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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

 

Adopting DevOps

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.

The Future of DevOps

I recently did an interview with JAX Magazine on DevOps and here is the transcript of the interview.

Some people call DevOps a cultural movement, others consider it a magic bullet. In your view, what is the essence of DevOps?

DevOps is used to increase the efficiency of a business. It is a catalyst for collaboration between the roles of technology developers and IT operations to improve the agility of both IT and development. It is no magic bullet. The same problems such as poor communication, mismatched expectations, lack of cohesiveness and teamwork, and lack of vision that exist in a traditional development and operations setting will be carried over to a DevOps situation.

What are the latest trends in DevOps? Could you describe one important trend that you are particularly interested in?

As with most technology trends, DevOps is relying more heavily on cloud-based solutions. These solutions will shy away from the more simplistic Platform-as-a-Service (PaaS) approach and compartmentalize workflows into distinct containers. The container approach uses the same concept that DevOps employs. Using separate specialized containers that collaborate with each other that can change rapidly for a faster, efficient, and cost-effective solution. At the same time, there is a need to more flexible management on an enterprise scale so these solutions are being integrated with cloud management suites for ease of provisioning, monitoring, auditing, and management.

DevOps is more than a technology trend — some people claim that it is transforming the modern IT landscape. As more and more organizations decide to adopt DevOps, they need guidance and the right tools. In your view, what are the most suitable tools that should be part of a ready-to-use “DevOps kit”?

DevOps needs an infrastructure that can support rapid development and deployment.  I would say the essential toolkit includes a code repository, a project management tool, a change management application, and a ticketing system. Every person in the DevOps team needs to be on the same page. The project management tool helps with this. The code repository helps with code versioning and release management. This way everyone can work on the most recent branch of code submitted. An automated testing environment is also helpful with speeding up development and getting products to market faster. Next, the change management application allows for a controlled implementation of changes and ensures that adequate review of changes has been accomplished. Lastly, a ticketing system tracks end user issues and their resolution. When these items relate back to application issues, new releases can solve the underlying issues.

What is the role of cloud in a DevOps context? What benefits does it bring?

The cloud can be used for both collaboration for the development/operations team and the deployment to the customer. This can be used for rapid deployment of each new iteration. With a cloud, the support can be done anywhere, anytime, which makes it much more efficient than provisioning individual systems. The cloud can also be used to quickly set up test or QA environments and allows for rapid deployment of products or rapid growth.

If containers are revolutionizing IT infrastructure and DevOps is transforming the modern IT landscape, would you say that they go well together?

DevOps can use containers in many of its solutions. Containers can be thought of as single units that collaborate to make a final product. This way the DevOps job of supporting the containers can be singled out to an exact container with each container fulfilling a certain function. In this way, it is much easier to discern which container needs maintenance. This improves efficiency, which is one of the primary goals of DevOps

What are the anti-patterns of DevOps?

Anti-patters remove undesirable assumptions and artifacts from the DevOps culture and belief system. DevOps does not combine the roles of a Developer and Operations into a single job. It instead aims to strive for better collaboration between two roles within the same collaborative team. When developers start doing the job of system administrators or vice versa, anti-patterns bring corrective structure to the team. This ensures that both developers and administrators have the same goal instead of being in opposition to each other while still performing distinct tasks within the team.

Do you have a tip on how we can eliminate obstacles to DevOps adoption?

The first step to DevOps adoption is to get developers to start using an agile development approach rather than a traditional approach. This is essentially a prerequisite for DevOps and many companies have already taken this step. Next, comes coordination and integration of the teams. There needs to be the establishment of new norms, goals, and expectations. Some groups may need to undertake team-building exercises to better work together and there may be some cultural changes as well as development and operations teams may have developed their own unique cultures.