Devops is Dead. Kinda.
The claim: Devops is Dead, seems to be common knowledge. I have heard this in hushed tones over the last couple of years and it’s turning quickly into more than whispers. But what does it mean ?
The term “devops” itself has a lot of meanings. Here we are talking about a role which used to specialise in operating systems, monitoring and CI/CD tools with a 80:20 division of work. 80 percent of infra work was done by devops specialists while 20 percent of work(mostly tinkering with config) was handled by developers. Now a big chunk of that 80 percent work has moved to Cloud Services(AWS, GCP, Azure, Github, Gitlab etc.). A few observations:
- The tech stack is just a bunch of yamls.
- Deep operating system and networking knowledge is no longer at premium: Docker and k8s ate that lunch.
- Deep knowledge of the inner workings of a particular Cloud Provider(AWS Specialist, GCP Specialist) is still at premium since this can lead to better design and cheaper costs. But the cloud providers know they have a complex ecosystem and are constantly releasing better documentation, better UI controls etc. Think about this: why have a few niche customers(infra specialists), when every software developer is a potential customer.
- Configuring infrastructure is now like writing mini-apps for the Cloud API(aws, gcp, azure) using terraform, deployment manager, cloud formation etc.
- Configuring observability infrastructure is also done over an API. See above. Cloud providers have made available open source SDKs to connect to the monitoring stack. It has become a lot easier for developers to bring in observability than before.
- Permissions management is also an API concern. Although there is still some devops work required to make it work across multiple services( think GCP + Github + Gitlab).
- Designing and building CI/CD pipelines have moved in the hands of developers: Github Actions, Gitlab, CircleCI, https://tekton.dev/ etc. have made writing pipelines less complicated(as compared to Jenkins) and now its just yamls down to the turtles.
- Infrastructure performance is now a cost concern. One can always scale.
- Fully integrated solutions like heroku, netlify, vercel, digitalocean apps are removing the low to medium scale website market from the equation.
- Devops as a process of delivering software has always been an organisational concern mostly led by the devops specialists. But since their specialised skills are no longer required, the process drivers can come from any discipline.
- Devops as teachers of deep infrastructure skills for developers still remains. But if the specialised skills are not being practiced as much, how long can they keep that crown ? Not for long me thinks.
- Devops as budget keepers are being replaced with cost analysis tools which notify app owners to optimise their usage.
- Devops still practice designing infra architecture(a.k.a cloud native component lego maker) to some extent . This is also getting outsourced to cloud services Support teams and consultancies.
- The request-response cycle is now a pull request-merge cycle due to the adoption of gitops. The devops team creates the self-service tools and gets out of the way.
The devops role has certainly transformed into someone who creates and tends to configurations. Since the complexity has moved to managing increasingly complex configurations, we are seeing the rise of a different kind of discipline and the tech which goes with it. A few examples from last couple of years:
- pulumi
- jsonnet
- jkcfg
- AWS CDK
- Terraform CDK
The common theme in the above is usage of full-fledged programming languages(typescript, python, golang etc.) to define and manage infrastructure. Not just that, we are also seeing rise of new smaller languages specially created for configurations:
But you cannot configure, what you do not understand. The knowledge of low level concepts will still be required at some level, but the low level complexity will keep moving towards abstractions built by the behemoths(k8s, container runtimes, GCP, AWS, Azure.)
How about a new title for the devops role then ? Just flinging out some respectable-sounding titles here:
- Infrastructure Tools/Apps Developer/Engineer
- Cloud Native Tools/Apps Developer/Engineer
- Configuration Ops/ConfigOps
- Developer Tools/Apps Engineer
- Cloud Native Specialist
- Cloud Config Ops