What is Devops?

What do companies like Amazon, Target, Esty, Netflix, Google and Walmart all have in common? Apart from the fact that they are wildly successful companies, they all use a method known as DevOps in their day to day processes to increase efficiency and improve delivery time.

What do companies like Amazon, Target, Esty, Netflix, Google and Walmart all have in common? Apart from the fact that they are wildly successful companies, they all use a method known as DevOps in their day to day processes to increase efficiency and improve delivery time. In this DevOps guide we will try to explain what is DevOps and how it can be a boon for your business.

 

What is DevOps and Why is It So Widely Used?
 

So what exactly is DevOps? Let’s take a small hypothetical example to illustrate. Let’s say there is a small startup that builds AI-enabled cleaning robots. There are 3 developers (let's be lazy and just call them Team D) who write and execute the code to create the robots and two operations people (Team O of course) who maintain the robot infrastructure in the real world environment and provide support for the robot users.

 

Team D has just spent 8 months creating the latest robot. It can recognize people, take commands from Alexa devices and of course clean like a boss. Team D has spent time creating this robot in their controlled dev environment and everything seems to be working smoothly. They couldn’t be prouder.

They hand over their creation to Team O which promptly takes it out into the real world. That’s when the problems start. It turns out that the perfect cleaning robot is not so perfect after all. It doesn’t recognize everyone, it’s capacity to follow Alexa commands breaks down when they are given by different people and it can’t reach and vacuum tricky shelves.

Team O is angry and frustrated. They have been waiting for this robot for so long and they can’t believe it’s an unmitigated disaster. Team D, on the other hand, is now on the defensive. They believe that everything was working perfectly during controlled testing conditions and the royal mess now must be because of Team O’s poor execution.

In conclusion, there is a sub-optimal product in the market, it seems like corrections and improvements will now take almost as long as product roll-out did, and two very competent teams now hate each other and their jobs.

That, in a nutshell, is why DevOps was created and why more than 70% of SMBs (Small and Medium Businesses) were adopting DevOps Services in their companies in 2016. A lot of heartache, frustration and inefficiency could have been avoided had Team D and Team O worked with each other right from conception and execution to delivery and support. Instead, they worked in silos with an imaginary wall between them.

Team O had no involvement when the code was being written and the robot was actually being built while Team D was completely out of the picture when the robot went out into the real world and cleaned many different houses. The result was a robot that was not ready for the market and a dev team that still doesn’t quite know how to resolve things.

As you can imagine, a lot of time will go by before the robot is finally market-ready. There will be a number of iterations as Team D makes some changes and Team O sends the robot out into the real world. And not just during product development, this same issue will continue when the robot needs maintenance and upgrades. As a result, even a small startup ends up becoming inefficient and slow and there’s a good chance that it loses out to other companies that get superior products to market faster.

This was the problem that companies started seeing especially as technology became more advanced. Keeping their operations and development teams isolated from each other was resulting in slower delivery and less efficient products and services. Moreover, many processes in the company operations that could have been easily automated to increase efficiency were not being automated because the developers were simply unaware of them.

That’s when the concept of DevOps came to the fore and began being adopted widely. DevOps is nothing but a set of philosophies, practices, and tools that help an organisation to deliver better products faster by facilitating an integration of the development and operations functions. This enables companies like the one in our example to serve their customers and markets in a better way and have a competitive edge.

This starts from the design to the entire development process right up to production support.

 

 

What are Some of the Best Practices for Effective DevOps

 

While DevOps still means different things to different people, there has emerged a core of best practices that should be incorporated by companies looking at adopting DevOps.

  • Active Stakeholder Participation

    This is the fundamental guiding principle of DevOps. DevOps can succeed only if both the developers and the operations and support staff are truly committed to collaborating and using an integrated approach to achieve goals.

  • Automated Testing

    Automated regression testing is something agile teams adopt very often as it helps to fix problems right away and ship higher quality code. This works well in DevOps too as a dire need of operations staff is that the code shipped should meet a certain quality standard.

  • Integrated Configuration Management

    In a DevOps environment, configuration management applies not only to the current solution being worked on but also on the configuration issues between the solution and the rest of the organisation infrastructure. Integrated Configuration management helps operations teams see the potential impact of a new release more clearly which helps in making better decisions regarding when the release should be made.

  • Integrated Change Management
    With integrated change management, operations and development teams work together to understand how using different technologies will impact the organisation as a whole and then work toward managing that.
  • Continuous Integration

    With continuous integration, the code is tested and analysed whenever updated code is checked into the version control system. This provides immediate feedback on code defects which allows developers to build a high-quality solution with little risk.

  • Integrated Deployment Planning

    A DevOps approach means operations engineers will be closely involved with the developers when it comes to planning the deployment of products as per an organisational deployment schedule.

  • Continuous Deployment

    With continuous deployment, when integration is successful in one sandbox it is automatically promoted to the next sandbox and integration begins there. This continues until it reaches the point where it requires human verification. This usually occurs at the point of transition from dev to operations.

  • Production Support
    With DevOps, not only do developers work on new releases, but they also work on addressing critical problems with a solution that is already in production. Although they are the third and last team to get involved in solving production issues, it is a fairly common occurrence and gives them insights on production problems that help them design better solutions in the first place.
  • Application Monitoring

    This refers to the practice of monitoring and logging solutions real-time once they are in production. This gives us performance metrics that improve the reliability of the solution and prevent failures.

  • Automated Dashboards
    DevOps allows us to create automated dashboards for several key metrics. All metrics cannot be automated of course, but several key metrics can be seen real-time using automated dashboards and they provide critical business intelligence.

 

What are the DevOps Tools?

Although DevOps was not supposed to be about tools, with its evolution in the last few years, a number of technologies that were not part of the original concept have now become an integral part of DevOps. According to research firm Gartner, a linked toolchain of technologies has now become critical if DevOps is to bring about the change it’s meant to. In recent years there has been an explosion of DevOps tools for different DevOps practices. Here are just a few examples.
 

Release Tools

  • Jenkins
  • Travis
  • TeamCity
  • Bamboo

Configuration Management Tools

  • Puppet
  • Chef
  • Ansible
  • Cfengine
  • Saltstack

Orchestration Tools

  • Zookeeper
  • Noah
  • Mesos

Monitoring, Virtualization and Containerization Tools

  • AWS
  • OpenStack
  • Vagrant
  • Docker
  • New Relic
  • Sensu
  • Spunk
  • Nagios

Coding Tools

  • Jira
  • Git
  • Eclipse

Testing Tools

  • JUnit
  • Zephyr
  • Selenium
  • Vagrant
  • SoapUI

 

The Key to Effective Adoption of DevOps

Adoption of organisation wide DevOps is a slippery slope because it requires a philosophical and cultural change combined with a more practical implementation of tools and best practices. If an organisation simply aspires to the philosophy of collaboration and efficiency behind DevOps without doing the hard work of actually executing it on the ground, DevOps will remain a philosophy and nothing more.