I spent the first half of my career as a sysadmin or a director with sysadmin’s reporting to me.
My last 2 jobs I started out as devops and not sysadmin.
What’s the difference?
I really didn’t know myself.
I heard some annoying opinions that devops uses software to automate things such as configuration management.
This is nonsense, way before the term devops existed I managed > 800 servers and we used software ie. cfengine to manage configurations. We also wrote thousands of lines of perl and bash to automate other tasks such as backups, file transfers, kick starting etc…..
So using software isn’t the difference.
The difference is basically that you don’t have to be an expert in data center operations such as:
— dealing with hardware
— raid settings
— layer 2 & 3 networking
— console devices
— hardware load balancing
— calcuating BTU’s
— contract negotiations
This is a shame because even though I have mostly been working in the cloud lately it really helps me to know all the underlying guts of the data center especially when trouble shooting and dealing with less than knowledgeable support staff( rackspace especially ).
What DevOps is required to know is:
— the services their companies write and deploy
— deploy proceedures
— config files for the services
— cloud environments ie rackspace , aws , softlayer etc..
— continuous integration
— you also need to have a deep knowledge of all the 3rd party daemons running such as MySQL, mongodb, redis, memcached, apache, nginx, hadoop, cassandra, riak, etc…
Lucky for me I’ve always been in position to “know the code”. In fact one of the main frustrations in working in the sysadmin role is peers who have limited knowledge or interest in what the infrastructure they support is actually being used for.
I once had a cluster of 200 servers used to edit images and several of my peers had no idea what the purpose of the cluster was.
Another advantage to “knowing the code” is that you are required to work closely with developers. I love white boarding a problem with developers.
I think when you approach a problem with the combined tools of a developer and devops you have all the bases covered and usually end up with a solution that addresses performance, scalability, resiliency, cost , ease of support and simplicity. If a problem is only solved by devops or a developers alone you rarely cover all bases.