So, I’m looking for information related to the separation of roles for network administrators and software developers, specifically in regards to who controls what on servers (development/production servers, not internal servers).
In my opinion the separation is pretty simple network administrations handle everything outside of the box and the basic setup of the system (install the OS, etc). Beyond that, everything is the developers domain (installing web server/PHP/MySQL/etc), managing those configuration files, running queries directly in the database, uploading code, etc.
My reasoning is pretty simple as well: network administrators generally understand the network and operating systems. They generally don’t understand SQL and they have no way of knowing what kind of PHP settings a project may need. Developers generally do understand those.
Do you guys know any articles that discuss this? What are your experiences?
I agree with you, generally.
In my experience, [the better] Network Administrators are possessive about all the content on their equipment. And, they go out of their way to be well informed on CONFIGURATION details.
I agree the details of SQL queries and management of code falls in the domain of the software developer. But, as with almost any job, those who are recognized as “STAR” employees always blur the lines. I think it is ‘career limiting’ to peg yourself as “A hardware guy/gal” or “A software guy/gal”. Everyone needs to be perceived as a valuable contributor in any team.
To add onto what @ParkinT said, you might want to read up on DevOps. To add a bit more of a personal side, DevOps is really what I’ve been doing for the past decade or so. It just didn’t have a name. But we have been able to pull off things that would be nigh impossible if we had any notion of development throwing code over the wall to operations. We’ve also made our internal IT operations much stronger by adopting many development methodologies and tools into day to day administration practice. Scripted, automated, repeatable and source controlled are wins for everyone.
So, the question I pose to you guys then: who controls configuration.
Knowing the configuration is always good. Controlling it isn’t. The problem I’m running into is that I’d like to see our environments always identical. This would also mean making changes to those configuration in the repository with the rest of the code. Do you think this is appropriate, or should it be a manual adjustment by the network people.
Security to often means your environments won’t be identical. Lots of time security falls to Network Administrators. I have seen very good results when Developers come on board the security issue. Are you writing about settings that will effect security? Do all the servers match? Or like most places servers are purchased over 4 years and replaced? Seen lots of good results when people work together, to often you don’t have people who can articulate well to each other. And it causes problems. Some times a mediator who helps both side actually understand the goals of the other side works wonders.
In the repository we typically keep separate copies of the configuration for each environment – they often do end up looking different for a variety of reasons. And production, especially, might require tweaks that won’t work for dev or QA for any number of reasons.