June 29th, 2024

DevOps: The Funeral

The article explores Devops' evolution, emphasizing reproducibility in system administration. It critiques mislabeling cloud sysadmins as Devops practitioners and questions the industry's shift towards new approaches like Platform Engineering. It warns against neglecting automation and reproducibility principles.

Read original articleLink Icon
DevOps: The Funeral

The article discusses the evolution and perceived demise of Devops, emphasizing its core principle of reproducibility in system administration. It highlights the shift from manual configurations to code-based tools like Puppet and Chef, enabling automation and scalability in managing systems. The author criticizes the current trend of mislabeling cloud sysadmins as Devops practitioners and the chaotic practices leading to unique, unmanageable cloud configurations. The piece questions the industry's shift towards Platform Engineering and Site Reliability Engineering, pondering if these new approaches will succeed where Devops seemingly failed. Ultimately, it warns against overlooking the fundamental principles of reproducibility and automation in system management. The author concludes by reflecting on the enduring relevance of foundational texts like the Snowflake Server in the rapidly changing tech landscape.

Related

The 10x developer makes their whole team better

The 10x developer makes their whole team better

The article challenges the idea of the "10x developer" and promotes community learning and collaboration in teams. It emphasizes creating a culture of continuous learning and sharing knowledge for project success.

The software world is destroying itself (2018)

The software world is destroying itself (2018)

The software development industry faces sustainability challenges like application size growth and performance issues. Emphasizing efficient coding, it urges reevaluation of practices for quality improvement and environmental impact reduction.

Software Engineering Practices (2022)

Software Engineering Practices (2022)

Gergely Orosz sparked a Twitter discussion on software engineering practices. Simon Willison elaborated on key practices in a blog post, emphasizing documentation, test data creation, database migrations, templates, code formatting, environment setup automation, and preview environments. Willison highlights the productivity and quality benefits of investing in these practices and recommends tools like Docker, Gitpod, and Codespaces for implementation.

Remembering the LAN (2020)

Remembering the LAN (2020)

The article discusses the shift from simple LAN setups in the 1990s to complex modern internet programming. It highlights DIY solutions for small businesses and envisions a future merging traditional LAN environments with modern technologies.

A Eulogy for DevOps

A Eulogy for DevOps

DevOps, introduced in 2007 to improve development and operations collaboration, faced challenges like centralized risks and communication issues. Despite advancements like container adoption, obstacles remain in managing complex infrastructures.

Link Icon 7 comments
By @agentultra - 5 months
It got weird when “Devops” became a job role and the tools were CI/CD pipelines built on config automation and cluster orchestration. That becomes the baseline for everything. No matter how overkill it is.

The vast majority of web software is comically over-engineered. The deployment process has so many features and components that you need a full-time staff of specialists to configure and monitor the build system.

And it could be something as straightforward as a marketplace website or medium complex like some kinds of SaaS. The web application could probably be compiled into a single binary or container and it’s database could run in RAM. And yet to ship a single change doesn’t take one developer but a whole team, eye watering enterprise contracts with several vendors, and it’s still slow as molasses.

There’s a time and a place for config as code and container orchestration. The problem is that it’s used for every single project regardless of requirements.

By @crooked-v - 5 months
I remain unconvinced that most companies actually need systems 'at scale'. Just get a big relational database and know what parts of your workflow have concurrency issues. If you ever actually approach BIGCORP_NAME scale, you'll have more than enough money at that point to rebuild it into something else.
By @starttoaster - 5 months
> what matters at this point is Platform Engineering or Site Reliabiliy Engineering.

Show me the difference between these 3 pictures (the third being DevOps Engineering.) Go ahead, I'll wait.

They're all the same role, where people are all doing a mixed bag of things for companies that their developers decided they didn't want to do (or sometimes didn't have the experience to do.) I'm a Senior DevOps Engineer, and you could give me any one of the 3 titles, and they would all be correct characterizations of what I do.

By @dang - 5 months
Related ongoing thread:

A Eulogy for DevOps - https://news.ycombinator.com/item?id=40826236 - June 2024 (94 comments)

Also discussed a bit at the time (of the OP):

DevOps: The Funeral - https://news.ycombinator.com/item?id=36482646 - June 2023 (4 comments)

By @jerdthenerd - 5 months
I'm genuinely not sure how other companies do this.... But how is your team handling SOX controls WITHOUT at least one DevOps person?

I work at a medium size publicly traded company and our SOX compliance controls would take literal months to generate and/or prove to auditors without our CI/CD pipelines. It's just an extract from GH Actions with a report of who modified, who approved, and who actually pushed to main. All of these actions must be siloed (if you can commit to repo, you cannot push to main)

Potentially this is a consequence of micro service infra, my team alone manages nearly 25 separate git repositories.

By @hbogert - 5 months
Yeah this stuff is hilarious and sad. I'm in the middle of setting up a kubernetes cluster for a relatively big company. K8s in their environment makes sense.

However, the first conversation (after finishing up the contract) with the sysadmins went like: "Yeah, ingresses are fine and such, but we'll have our loadbalancer in front of that which will inspect the url paths to know which ingress it has to go to, we don't want some 'developer' to open up some new endpoint without us approving it! Those guys never know what they're doing."

At this point I'm not sure if he's pulling my leg or something, b/c before the we wrote up the contract the whole idea was to give their dedicated platform team and developers more self service. In one fell swoop, bam, negated.

Devops imo is about clear responsibility, it just doesn't work if boundaries are not communicated explicitly. In the above scenario once everything is setup, developers will not gain any velocity, and the sysadmin are still manually adding url routing to their loadbalancers.

By @kkfx - 5 months
Well... For me (sysadmin) DevOps is a thing in theory, another in practice. The overall results of this dichotomy are tragic, they led to harmful things like doker, k*s and so on down to GNU/Linux desktops crap like snap/flatpack/appimage. Yes that's not sound much "DevOps" but that's the product "DevOps" in practice have created IRL. That's because the Ops part is essentially reduced as a kind of low level mechanical works "please guys just give up the most bare bone system, we will do all the rest" and the Dev part surge to "if it works on my craptop [but well docked on a large set of display] than it works in production, we need to be quick, just grab something from DockerHub, the Nexus, ... and in few hours we will made a new successful Silicon Valley Fever project". It's natural evolution, that could be labeled "cloud APIs", part of the Serverless "model", is even harmful.

The real issue though are not these model but the modern software stack and the story date back decades, when Unix was born their author think they can separate the "system" (bootloader, kernel, basic userland) and "the rest", allowing cheap end-user programming via scripts assembling system functions through IPCs. They quickly discover this approach is fast but fairly limited and they added GUIs violating their own principles since their GUIs can't be assembled with scripts and have only cut&paste/D&D as sole IPCs. A more broad and precise analysis can be found in the Unix Haters Handbook, but as Unix get ground quickly so "modern" GUIs do the same and we quickly evolve from "internet as a network of flexible, user programmable desktops" to "internet as a network of hosts serving some limited desktop to a "internet as a network of hosts who own anything and some modern dumb terminals named endpoints" and that's the present with desktops that are very complex browsers bootloaders, witch are themselves very complex virtual machines, and "the real intelligence" in code is now some third party services offering APIs modern Dev(s) use to assemble their very complex and unmaintainable script named webapps. DevOps was an intermediary step of this hyper succinct mess.

We need to came back to an-OS-is-a-single-application where anything is integrated so things like reading emails meaning a network mount of a remote share, provided by the system, and a stat/read of few files in there, the messages, sending it is just mounting the receiver mailserver share creating a new file there if allowed, similarly reading a website is just the same and so on, oh, it's the Plan 9 model. Oh, such systems are like Smalltalk workstations or LispM where anything is a function that can be called, modified, combined with any other with few lines of code. This model is hard to evolve system side because there are MANY interdependencies to be taken into account, BUT allow to makes modern hyper-big projects a simple and manageable codebases where there is no need of CI/CD because updating is just patching in a version control system, so is rollback and third party services offers just what they want without specific APIs to support.

I know described like that in my limited English is a bit confuse, but if you try reasoning "being outside" you'll see the big picture easier.