The ideal DevOps team structure
about.gitlab.com
about.gitlab.com
Devops is the act of codifying your operations. Automating deployments, ci/CD things like that. Putting alert and monitoring systems in place.
That's my understanding.
- Codifying infrastructure with tools such as Packer, Terraform, Ansible. The infrastructure should be just as auditable, repeatable, and transparent as the code.
- Empowering and allowing the engineers who write code to deploy it.
- Immutable servers/containers.
- A solid suite of monitoring and alerting tools that auto-heal (preferred) or at least notify when things go wrong.
#1 is the technological combination of Dev and Ops
#3 is a corollary to #2
#4 is just good Ops
Devops is when those things cross over into normal developer work. The developers take on these "ops" duties themselves. It may or may not involve actual development. It always involves devs having to understand the infrastructure their code runs on.
Done right, it's a good thing. It makes devs sensitive to how their code is deployed and run in production, without being able to blame some other team for the application not performing well, not having adequate availability, etc.
Usually, it's not done right.
Agreed.
> I would try to look past giving the word a formal definition.
I would hesitate to even classify it as a word, given that it is not found in most well regarded dictionaries. A portmanteau, perhaps.
https://www.lexico.com/search?utf8=%E2%9C%93&filter=dictiona...
This is the original definition of DevOps, which was an outgrowth of the Agile movement. (Agile, of course, has a strong emphasis on cross-functional collaboration.)
(sorry you'll have to hold your nose at the stench of the site)
Devops as most people use it also refers to a suite of technologies used by teams organized that way as well as engineers who specialized in that set of tools. Jenkins, aws, containers, chef, etc.
People might also use it to describe common deployment patterns that devops teams use like ci/cd and infrastructure as code.
It’s a buzzword, but it does mean something real.
This seems a lot cleaner than the alternative. Sure the devs have greater responsibility, but there's no dev/ops disconnect here.
I feel this greater responsibility also leads to better code. Do devs in this model also have on-call responsibilities?