Devops is Dead
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. Devops can refer to a role or a process of releasing software. Here we are talking about the 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.). Observations which lead me to this conclusion:
- 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.). I wonder how long before we start talking about infrastructure solely in terms of software objects, and the languages and tools which can help manage them. IMO we are pretty close already.
Devops as a traditional centralised role is dead. It’s transforming into a discipline where cloud-infra focused engineers work with application focused engineers to deliver software quickly and efficiently. These “cloud-infra” focused engineers practice classical software principles and full fledged languages. With respect to their traits, such engineers are closer to application platform engineers than to a traditional devops engineer.
Following are the activities I have seen while practicing a similar role for last few years:
- Use terraform, terraform cdk, pulumi like tools to setup compute, network and datastore infra.
- Generate kubernetes manifests using pulumi, jsonnet, jkcfg, AWS CDK or similar tools.
- Generate monitoring configuration for a Cloud Provider or third-parties like grafana, prometheus etc using SDKs.
- Write or generate CI/CD manifests. Include build steps for code quality, security etc.
- Develop gitops tool to distribute permissions and secrets.
- Develop gitops tools to add/remove frequently provisioned resources, e.g. Buckets, Pubsub Queues.
- Develop gitops tool to automate oncall scheduling and paging.
- Develop platform tools to standardise platform task, e.g: webhook tunnel, notification schedule, API gateways etc.
- Integrate or develop tools to ensure continous delivery using feature flags.
- Write maintainable, testable code while using established good practices.
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
- PlumbOps
- Application Platform Engineer(Infrastructure)
On the other hand, devops as a process is alive and kicking.