What does a Devops Engineer do? What are their daily duties ?
Devops Engineers and Site Reliability Engineers are the one who are typically responsible for building, managing, monitoring, administering, automating and optimising infrastructures, application configurations, databases, CI/CD Pipelines. They are the ones who keep the lights on. I would put their responsibilities into following 6 buckets.
- BUILD : Be it cloud based or on premise infrastructure, its the Devops Engineers who are responsible for building it. And they have to consider non functional requirements such as scalability, availability, security, disaster recovery when they do. In addition to building infrastructures, they are the ones who typically build VM and Container Images. Most of these tasks are automatable with tools such as terraform, packer etc.
- INSTALL AND CONFIGURE : This involves installation and configurations of Operating Systems (which has now become easy with cloud and containers as base images are readily available), application stack including app servers, databases, middleware and anything in between. Devops engineers typically use declarative code to manage configurations with tools such as Ansible, Chef, Puppet.
- CI/CD: Instant feedback is what continuous integration provides. Devops Engineers are the ones who are typically responsible for setting up and automating CI pipelines as well as defining and implementing Release/Deployment strategies. Be it container based or on cloud. Tools such as Jenkins, Spinnaker are useful to automate CI/CD pipelines.
- ADMINISTER : Infrastructure is built, application stacks deployed, now what ? This is where the Devops Engineers spend most of their times. This includes application operations and debugging, a bit of database and storage administration, monitoring, optimising, security etc.
- TROUBLESHOOT : This is a indispensable skill for a Devops Engineer and is useful for all tasks above. You are going to have issues, be it building infrastructures, configuration management, pipelines or just as part of running this infra. A Devops Engineer must have advanced level troubleshooting skills and must master the tools of the game.
- AUTOMATE : Majority of the Devops Work can be automated. When not busy with issues or setting up things, a Devops Engineer typically spends time automating the recurring tasks.
If you ask any Devops Engineers what they do day in and day out basis, the answer would fall in one of the categories above. Would you agree ?