<p>I agree with MLu although my experience is generally in small teams where roles tend to get a bit blurred anyway.
Taking the 'infrastructure as code' approach that led to dev ops, the dev ops team should be collaborating with the dev team just like the dev team collaborate internally to ensure features work together.
Perhaps having separated teams is the problem and instead you should have project based teams that include all specialities working together.
Again my experience is in small startup environments so this may be a big shift in a larger organisation used to departmentalisation.</p>

CC BY-SA 4.0
2020-07-23T05:03:42.030Z
2020-07-23T05:03:42.030Z
sam
<p>Isn't <em>DevOps</em> .. you know .. <em>Devs</em> and <em>Ops</em> working together, ideally in the same team?</p>
<p>What you refer to as <em>Dev-ops</em> in your post sounds very much like the traditional <em>Operations</em> - developers build something and hand it over to Operations for deployment. Well that's not DevOps.</p>
<p>DevOps model is exactly the blend of these two roles. Not necessarily in one person but ideally in one team. Some people in the team write the actual code and tests, some maintain CI/CD pipelines, some write packaging / build / Docker files, some look after deployment. All the above ideally driven by CI/CD so that most people in the team can focus on writing code. Building, packaging, testing, and deployment happens automatically.</p>
<p>In our team the Dockerfiles are in the same repo as the software sources we work on and any developer can update it if needed (through a PR of course). The deployment files (AWS CloudFormation, Terraform, etc) are in another repo and again anyone can update these through a PR. Once any change (source, Dockerfile, CloudFormation, ...) is committed and pushed to git it automatically builds and deploys to Dev environment.</p>
<p>Single click in the CI/CD interface can then promote it to Test and another click to Qual and then to Prod.</p>
<p><strong>TL;DR</strong> What you describe is not <em>DevOps</em> but instead a traditional <em>Dev</em> and traditional <em>Ops</em> fighting each other ;)</p>

CC BY-SA 4.0
2020-07-24T13:00:29.023Z
Despite your admiral liberalism, in /most/ large corporations DevOps means automation tools, not process and not XFTs. There is usually a platform team, populated by devops guys, who publish a platform for developers to work with. Also, I've spoken at dozens of DevOps conferences and asked the question, "who's here comes from the DevSide", with invariably the same result -- nobody. DevOps isn't what you dream it is -- it is completely different in practice. Some, cash-constrained business can't afford platform-teams so Ops duties fall on developers, but this is the worst of both worlds.
Software Engineer
CC BY-SA 4.0
2020-07-22T01:52:14.230Z
2020-07-22T05:36:54.110Z
2020-07-22T05:36:54.110Z
MLu
<p>Once again company debate rages on who should write Docker files (including compose, interchangeable for this post).</p>
<p>The scenario is common in my work (developer and consultant) and I wanted to know if there is a hard and fast rule for the creation and management of Docker files.  I have operated in the following three scenario:</p>
<p>1.) Dev-ops writes and manages the Docker files</p>
<p>Pros: they don't have surprises for production and ultimately control the final instance
Cons: Devs are less informed on Docker/server, have to wait for certain changes or ask permission or need an ops team person to do something like add an environment variable</p>
<p>2.) Developers write and maintain Docker files</p>
<p>Pros: Devs keep on working, collisions and conflicts are resolved inside that team
Cons: Dev-ops often is handed a bad or troubling Docker file for production. Dev ops also spends time fixing developer problems on the Docker file. Developers generally do not focus on security with respect to instance.</p>
<p>3.) Hybrid approach:  Devs write the Docker file for their use in conjunction with dev-ops policy or needs.  Dev-ops bases a different production docker file on the developers working Docker file but add in secret handling, Terraform/IaC/CI+CD needs, and takes responsibility for Docker files running on instance.</p>
<p>In this scenario dev-ops teams watched our (developer) files and used the differentials to ask questions or provide insight into changes.</p>
<p>--</p>
<p>The problem I run into over and over (regarding Docker files):</p>
<ul>
<li>Devs can't make simple changes for various reasons (scenario #1)</li>
<li>Changes by devs upset dev-ops (all scenario)</li>
<li>Dev-ops needs &quot;2 weeks notice for any change&quot; or similar unacceptable delay (scenario 1)</li>
<li>Developers spend too much time learning how to be infrastructure compliant and lose productivity (scenario 1)</li>
<li>Dev-ops get junk files (scenario2)</li>
<li>liability for security and other ops related tasks are shared between departments (much infighting when things go wrong) (problematic in all scenario)</li>
</ul>
<p>The list of experienced problems is quite long, but I hope this is enough information to establish a dialog on this topic from the professionals who handle Docker the most and take responsibility for uptime.</p>
<p><strong>23July Responding to @MLu:</strong></p>
<p>Dev ops is &quot;Developer Operations&quot;, as in the deploy and infra side of things. &quot;Working together&quot; always happens, but these are two distinct career paths and domain of expertise (developer and operations).  As the Wikipedia entry underscores my view, there is note regarding context dependence on the paradigm. Dev writes the code, Ops puts to instance, in the middle there is collaboration.  So I don't agree at all that &quot;DevOps model is exactly the blend of these two roles.&quot;, not in my 17 years on many teams.</p>
<p>One of the teams was considered &quot;SRE&quot; while another liked &quot;Devops&quot;, and another &quot;Infra (not even answering people who use devops)&quot;.  Each team had their own ideas but the same problems in the end servicing the development aspect of projects.</p>
<p>Development and &quot;Ops&quot; as in CI/CD need to work together, but for some reason only these &quot;ops&quot; teams in all scenario were the acknowledged pain point.  Why is this so common?</p>
<p>If DevOps is born of developer practices (agile, reliance on SCM, DRY, etc) and usually staffed by a high percentage of ex-developers why is the staffing diaspora in build/ship/pipeline generally slow to react or respond, require long lead time, and are generally the most common blocker on projects.  I question the ivory castle declarations from these ops teams. When a team is overloaded, under performing, and diverges from established norms then the (the dogma of) &quot;X needs to do the Y&quot; could be a solution or grasping at straws?</p>
<p>I do agree with @MLu's commentary on management of Docker files via PR and other approaches outlined. I read the response as a hybrid approach that I prefer.</p>
<p>Frustration is rooted in a few projects where I was &quot;Devops&quot; and we had cloud based products with complicated CI/CD and other operations. Yet we never had devops problems. As soon as a dedicated team handles these elements things would slow down, uptime suffered, and the product release cycle was more stressful.  A cadre of us are discussing alternatives to the current paradigms because we are repeating the same problem over and over, both in an org and across different jobs.</p>

<docker><amazon-web-services><operations>
Who should write Docker files?
Marc
# Who should write Docker files?

(Asked by: username_0 on 2020-07-21)

Once again company debate rages on who should write Docker files (including compose, interchangeable for this post).

The scenario is common in my work (developer and consultant) and I wanted to know if there is a hard and fast rule for the creation and management of Docker files. I have operated in the following three scenario:

1.) Dev-ops writes and manages the Docker files

Pros: they don't have surprises for production and ultimately control the final instance
Cons: Devs are less informed on Docker/server, have to wait for certain changes or ask permission or need an ops team person to do something like add an environment variable

2.) Developers write and maintain Docker files

Pros: Devs keep on working, collisions and conflicts are resolved inside that team
Cons: Dev-ops often is handed a bad or troubling Docker file for production. Dev ops also spends time fixing developer problems on the Docker file. Developers generally do not focus on security with respect to instance.

3.) Hybrid approach: Devs write the Docker file for their use in conjunction with dev-ops policy or needs. Dev-ops bases a different production docker file on the developers working Docker file but add in secret handling, Terraform/IaC/CI+CD needs, and takes responsibility for Docker files running on instance.

In this scenario dev-ops teams watched our (developer) files and used the differentials to ask questions or provide insight into changes.

--

The problem I run into over and over (regarding Docker files):

* Devs can't make simple changes for various reasons (scenario #1)
* Changes by devs upset dev-ops (all scenario)
* Dev-ops needs "2 weeks notice for any change" or similar unacceptable delay (scenario 1)
* Developers spend too much time learning how to be infrastructure compliant and lose productivity (scenario 1)
* Dev-ops get junk files (scenario2)
* liability for security and other ops related tasks are shared between departments (much infighting when things go wrong) (problematic in all scenario)

The list of experienced problems is quite long, but I hope this is enough information to establish a dialog on this topic from the professionals who handle Docker the most and take responsibility for uptime.

**23July Responding to @username_2:**

Dev ops is "Developer Operations", as in the deploy and infra side of things. "Working together" always happens, but these are two distinct career paths and domain of expertise (developer and operations). As the Wikipedia entry underscores my view, there is note regarding context dependence on the paradigm. Dev writes the code, Ops puts to instance, in the middle there is collaboration. So I don't agree at all that "DevOps model is exactly the blend of these two roles.", not in my 17 years on many teams.

One of the teams was considered "SRE" while another liked "Devops", and another "Infra (not even answering people who use devops)". Each team had their own ideas but the username_1e problems in the end servicing the development aspect of projects.

Development and "Ops" as in CI/CD need to work together, but for some reason only these "ops" teams in all scenario were the acknowledged pain point. Why is this so common?

If DevOps is born of developer practices (agile, reliance on SCM, DRY, etc) and usually staffed by a high percentage of ex-developers why is the staffing diaspora in build/ship/pipeline generally slow to react or respond, require long lead time, and are generally the most common blocker on projects. I question the ivory castle declarations from these ops teams. When a team is overloaded, under performing, and diverges from established norms then the (the dogma of) "X needs to do the Y" could be a solution or grasping at straws?

I do agree with @username_2's commentary on management of Docker files via PR and other approaches outlined. I read the response as a hybrid approach that I prefer.

Frustration is rooted in a few projects where I was "Devops" and we had cloud based products with complicated CI/CD and other operations. Yet we never had devops problems. As soon as a dedicated team handles these elements things would slow down, uptime suffered, and the product release cycle was more stressful. A cadre of us are discussing alternatives to the current paradigms because we are repeating the username_1e problem over and over, both in an org and across different jobs.

**Tags:** docker, amazon-web-services, operations


---

## 2 answers

### Answer by username_2 on 2020-07-22. Score: 10

Isn't *DevOps* .. you know .. *Devs* and *Ops* working together, ideally in the username_1e team?

What you refer to as *Dev-ops* in your post sounds very much like the traditional *Operations* - developers build something and hand it over to Operations for deployment. Well that's not DevOps.

DevOps model is exactly the blend of these two roles. Not necessarily in one person but ideally in one team. Some people in the team write the actual code and tests, some maintain CI/CD pipelines, some write packaging / build / Docker files, some look after deployment. All the above ideally driven by CI/CD so that most people in the team can focus on writing code. Building, packaging, testing, and deployment happens automatically.

In our team the Dockerfiles are in the username_1e repo as the software sources we work on and any developer can update it if needed (through a PR of course). The deployment files (AWS CloudFormation, Terraform, etc) are in another repo and again anyone can update these through a PR. Once any change (source, Dockerfile, CloudFormation, ...) is committed and pushed to git it automatically builds and deploys to Dev environment.

Single click in the CI/CD interface can then promote it to Test and another click to Qual and then to Prod.

**TL;DR** What you describe is not *DevOps* but instead a traditional *Dev* and traditional *Ops* fighting each other ;)

> **Comments:**
> **username_3**: Despite your admiral liberalism, in /most/ large corporations DevOps means automation tools, not process and not XFTs. There is usually a platform team, populated by devops guys, who publish a platform for developers to work with. Also, I've spoken at dozens of DevOps conferences and asked the question, "who's here comes from the DevSide", with invariably the username_1e result -- nobody. DevOps isn't what you dream it is -- it is completely different in practice. Some, cash-constrained business can't afford platform-teams so Ops duties fall on developers, but this is the worst of both worlds.  

---

### Answer by username_1 on 2020-07-23. Score: 2

I agree with username_2 although my experience is generally in small teams where roles tend to get a bit blurred anyway.
Taking the 'infrastructure as code' approach that led to dev ops, the dev ops team should be collaborating with the dev team just like the dev team collaborate internally to ensure features work together.
Perhaps having separated teams is the problem and instead you should have project based teams that include all specialities working together.
Again my experience is in small startup environments so this may be a big shift in a larger organisation used to departmentalisation.


---

