Dev-Ops

The DevOps Lifecycle
The DevOps Lifecycle

We are not software engineers. We are not operation folks. We are DevOps #trending

Dev-Ops ! A term which changed lives for many and made it miserable for others. I heard this term in late 2015 and by that time it had taken the world by storm. I was in dilemma as to what this term actually meant. Going by the word, it appeared to me as developer + operations, probably someone developing and doing operations at the same time. I was happy as I had been doing both from quite sometime now.

At first let’s see what does Wikipedia says about DevOps:

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the system’s development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from Agile methodology.

https://en.wikipedia.org/wiki/DevOps

Bingo I was right to some extent. DevOps is not a title, software, team name or position. It is just a set of practices like Agile, TDD, BDD, ITIL etc. Though I have seen a lot of employees across the globe consider it a position / team name and organizations hire for DevOps positions but it is just a set of practices to be followed just like Agile. As we do not have any Agile engineers / Agile team but rather an individual / a team follows agile practices, similarly DevOps practices are to be followed. Although there is no unique definition developed for DevOps, CSI RO and Software Engineering Institute suggests that DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.

So is there really a set of practices documented for DevOps Model ? I did not find anything concrete enough to list it down here.

But then the question that if there is no concrete set of rules how are we supposed to measure and implement DevOps ?

Well the answer lies in the term itself. As per Wikipedia and the term Dev + Ops, it combines both the worlds and aims to shorten the system development life cycle & further promote continuous delivery. So any set of practices, tools, methodologies which aim to achieve continuous delivery will fall into DevOps practices. Though not all the practices but most of it definitely does. The End goal of all those practices and DevOps in particular is to reduce the time to release the software in the real world.

Why do they say to combine Development and Operations ?

Well it is not to be taken literally. The essence of the matter is that the silos around the divided responsibility approach should be avoided. “We are developers, and we would blame on operations for anything that goes wrong, or we look after the infrastructure and blame it all on the developer“ is called the divided responsibility model. If you work in a startup or are a very small team where the onus of developing the software, releasing it and then deploying it on the infrastructure is all on one person or team, you might realize that time-to-deploy for a change is considerably less compared to bigger teams where the responsibilities are separated. Though initially that one person or the small team might take time to build the entire pipeline and/or the process at first but later the releases would be faster.

This is due to that fact that when we work in silos, we are aloof of the product first approach. All we want is just be responsible for our part. Hence, a mediator, Project Manager / Lead / Program Manager might be required to coordinate between the teams and make the process work. DevOps practices try to eliminate the need for mediators and make everyone responsible for the end product. It is really not necessary to abandon the divided responsibility approach if everyone is working for the same deliverable.

Is there any tool-chain for DevOps ?

Well any tool chain trying to fasten the time-to-delivery of the application becomes part of DevOps tool chain. To name a few tools, not an exhaustive list though, are:

  • Configuration Management tools like Ansible, Chef, Puppet as they try to automate configuration and repeated tasks on the servers.
  • Integration tools like Maven, GitLab, Spinnaker, Jenkins which try to automate the integration of code.
  • Deployment tools like Terraform, Rancher, Microsoft TFS which help automate the deployment of your application.
  • Testing tools like Selenium, Ranorex which try to automate the testing of your application.
  • Monitoring tools like Grafana, InfluxDB, Prometheus, Datadog which helps to automate the monitoring & alerting capabilities in your system.
  • Collaboration tools like JIRA, Slack, Trello which provides a mechanism to automate the documentation & process workflow.
  • Cloud providers like AWS, Azure, GCP, Digital Ocean which are already providing API for infrastructure life-cycle.

So now that we are aware of the culture and the tool-chain (to some extent) that DevOps brings, what is next ?

Next is the adoption of DevOps in our daily work. I am sure it will help many teams as well as organizations to deliver faster and better. On that note signing off !!

DevOps is conquering the world. Let us become part of this madness for how long it shall last !!

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *