DevOps has become one of the fundamental principles based on which most (if not all) software is being built today. In this article, we shall take a deeper look at DevOps, how it’s being used in the software industry, its intrinsic dependence on open source software, and what the future holds for it.
DevOps is everywhere. Literally. If you are working in a tech company as a developer or are anything closely related to being a developer, you have to deal with DevOps. Even if you are not in any way a coder, but have to collaborate with developers, as is the case with most of the operations related roles, then DevOps is an essential part of your job.
Now, before continuing any further, I urge you to take a pause and in your own words, try to define DevOps in a sentence or two. After this little exercise, continue reading the next section to understand the reason why I asked you this question.
Defining DevOps
If you faced difficulty with the aforementioned exercise, then you are a part of the majority. Why is it so hard (though not for the lack of trying) to comprehensively define DevOps? The reason is that there is no standard way of defining it. DevOps is like a social norm, a shared value amongst people from different departments in an IT company. We realise its importance and regularly put it into practice, but none of us are able to put it in words in a manner that fits all criteria.
Another reason why it’s hard to define is simply because DevOps means different things to different people depending upon their role in the company and the department they belong to. If you are on the operations side of the fence, then DevOps could mean applying SDLC (software development life cycle) techniques to your project management in order to be able to collaborate better.
On the other hand, if you are a developer, it could mean utilising tools and mechanisms that leverage the principles of lean and/or agile in order to collaborate with operations and ensure a smooth rollout and maintenance of the product.
The circumference of influence of DevOps is far reaching. Even a client, who is the recipient of the product, is a player in the DevOps framework.
Therefore, though there are many textbooks out there that have done a decent enough job of defining DevOps, the answer to the question ultimately is that there is no standard definition of DevOps. It can only be defined in rudimentary terms that act more as an overview to its underlying intricacies.
So with that in mind, I shall attempt, for the sake of this article, to provide you with a non-granular, elementary definition of DevOps.
“DevOps is a term used to describe the most optimal practices, tools and frameworks used to collaborate between all parties involved in the software development process, all the way from inception to delivery and beyond.”
That’s my take on DevOps. Feel free to come up with your own. Whatever sails your boat.
Open Source and DevOps
As a developer, the most common terms that come to mind when I think of DevOps are terms such as Git, Docker, Jenkins, etc.
What do they all have in common? Two things. First, they are all what you could define as DevOps tools. Second, most (if not all) are open source. There is a deep and inherent connection between DevOps and open source. And there is a deep and inherent reason for that as well. If you think about it, DevOps is nothing but a means of collaboration between different players working on different aspects of the product development and deployment.
But collaboration in software development looks vastly different today from what it looked like in the early 2000s. Today, software is built, not by people working together in the same location, but by people collaborating across the globe. An overwhelming amount of software projects today are open source. Even big tech has come to kneel before FOSS. Why? It’s more efficient, fast, secure and, simply put, cheap. Tech companies have everything to gain and little to lose when it comes to open source DevOps tools.
With this comes the challenge of making the software work on multiple devices and operating systems with varying requirements and dependencies. There is also the fact that not everyone contributes code. Contributions to the software come in many forms, including documentation, tutorials, maintenance, bug reports, testing, security updates, and much more. It is a complex process that requires tools that can handle complex frameworks. This has created an inherent need within the software industry to create open source DevOps tools.
Current trends
Current trends are clear. DevOps tools are king. If you want to be a DevOps engineer or want to do anything remotely connected to DevOps, you are, by default, expected to be experienced in DevOps tools. As discussed in the previous sections, the definition of DevOps far exceeds that of a few tools used for automation and collaboration. However, there has been a noticeable surge in the demand for open source tools such as Docker, Jenkins, Kubernetes and Git.
According to the 2020 report released by Burning Glass, which collects and analyses millions of job postings every year, the primary skills required to be a DevOps engineer are (in order of importance):
- DevOps tools (Kubernetes, Docker, Git, Jenkins, etc)
- Python
- Linux
- Ansible
- Java
Infrastructure automation
It comes as no surprise that DevOps tools make it to the top of the list. Additionally, let us have a look at the Google search trends for the past five years for popular DevOps tools.
Figure 1 and Figure 2 show a clear rise in Google searches for Kubernetes and Docker. Figure 3 and Figure 4 show that more aged technologies such as Git and Jenkins have remained popular throughout with no visible decline in public interest.
It becomes abundantly clear from these trends that though DevOps is a combination of soft and hard skills, the latter clearly take an upper hand in the equation to the extent that the term DevOps has now essentially become synonymous with FOSS based DevOps tools.
Future of DevOps
Before I start making predictions about DevOps, I feel compelled to make it clear that I am not a DevOps engineer. And while DevOps plays a huge role in my job, I am in no way an expert in it.
The reason I chose to write this article is that as an engineer who specialises in artificial intelligence, automation is ingrained into my very spirit. Automation of labour intensive tasks that reduce unnecessary bureaucracy and unrequited paperwork is the very principle on which AI functions. As such, it only makes sense that my field of expertise collides with DevOps.
In the previous sections, I have informed you of many commonalities shared within the DevOps tools ecosystem. But there is one more commonality that I was saving for last: Automation. Automation is the key driving force behind all the DevOps tools. We want to reduce our work by automating most tasks that require intensive and careful collaboration between various stakeholders.
This definition of automation in terms of DevOps is in complete synergy with the motive behind automation being done using AI/ML. Therefore, it is my opinion that AI will play a key role in the future of DevOps. It is inevitable. Most, if not all, DevOps tools will provide automation on a whole different scale with the power of AI.
But one thing that needs to be made clear before we end the article is that the rise of AI in the DevOps domain doesn’t necessarily mean a massive reduction in jobs. In fact, it could be the other way around. Why? Because AI will simply convert into another ‘in demand’ skill for DevOps engineers (probably the most in demand). In order to handle DevOps, you will still require ‘Devs’ and ‘Ops’. The medium of communication and collaboration between different entities can be automated, but the entities themselves cannot unless their jobs are completely redundant. Such jobs are a minority within the DevOps domain.
Key takeaway
If you are a DevOps engineer (or aspiring to be one), then this article is good news for you. The future isn’t too far off. The second most ‘in demand’ skill after DevOps tools is Python for most DevOps jobs. Python is an absolute must for every data scientist, machine learning engineer and AI scientist. So if I were you, I would start using my spare time developing AI/ML skills. When the hammer comes down, as it always does, you will not only survive, but thrive.