What does a DevOps Engineer do?
As we all know the days of sysadmins who applies specialised skills to tune individual servers is over. Work is all about Automation and it requires to re-skill yourself and adapt to these new and disruptive tech changes.
So before we start explaining the daily routine of a DevOps engineer we must thank you all the System Administrators who acquired a lot of new skills to become a DevOps Engineer.
A DevOps Engineer should be proficient in following skills -
- Should be an Excellent System Admin
A System Administrator is supposed to build, manage, and troubleshoot servers on a regular basis.
- Become a master in deploying virtualization
A DevOps professional should be well-versed with the entire process of virtualizing servers and other components.
Some of the important virtualization tools and technologies are VMWare, Clouds (AWS, GCP, Azure etc.), KVM, Vagrant, VirtualBox etc.
- Networking and Storage knowledge
A DevOps Engineer must know the IT network and storage concepts. This comes in handy when there is a need to design solutions that can stand up to the test of scalability, performance, and high availability at all times.
- Knowledge of Automation tools
There are a lot of automation tools and technologies that are being deployed in the DevOps process, and as a DevOps professional we need to be familiar with these sets of tools and be able to deploy them in the DevOps set-up.
Some of the important tools that are being widely deployed include Puppet, Chef, Jenkins, Salt, Ansible, Kubernetes, Docker, Prometheus, Cloud Computing and storage platform, and Infrastructure as a Code (Terraform).
Now this is one part where most of the DevOps engineers with System Administrator background lacks. But there is nothing to worry about here. Having a basic knowledge of coding in any of the popular coding language (e.g. Python) can go a long way. This way, the DevOps professional can be a better bridge between the development and operations teams. As we know in today’s time everything is automated including the server triggering, application installation, configuration, and validation processes.
Remember one thing as a DevOps Engineer you will not be writing some thousands of lines of code. What is required is to have basic enough knowledge to write some small scripts and should be able to understand the code flow.
These days we hear a new term “DevSecOps” right!
We hear it because Security is one of the prime focus of a DevOps professional. A DevOps personnel needs to know about various security measures that are to be taken care of to ensure that the system is safe and sound and running at all times.
Now, you might say why should a DevOps person need to know about testing? I agree with that question. But as you know there are a lot of automation tools that are deployed for the process of testing, so the DevOps personnel needs to have hands-on experience of working with these tools.
Nothing to worry here again. You can always go to your Development and Testing teams to address the errors if any in their application.
What does a DevOps Engineer do ?
- Infra setups (either over Cloud or Bare Metal or VM)
- Software Installations
- Server Maintenance
- Application Support
- Version Control support (GIT, SVN …)
- Build and Release process support (Jenkins, Team city …)
- Automate Configuration Management (Ansible, Chef, Puppet ...)
- Support cross functional teams
- Research and Deploy new tools
- Vulnerability Assessment and Patching
- Server and Application level Monitoring (ELK, Prometheus, Grafana ...)
- Knowledge of Ticketing system (Jira, Bugzilla ...)
- Automated Backups
- Access management
- Continuous Improvement and Self Training
Basically a DevOps Engineer should be a LIFE LONG LEARNER!
A Daily “TO DO LIST” of A DevOps Engineer
- Checking relevant Emails (you might have got many)
- Checking monitoring alerts
- Checking Jira or any other ticketing tool for pending/scheduled tasks.
- Clear notifications of alerting system.
- Ensure if any new server is created and monitoring has been set up on that.
- Verify if all important services running on that server are covered under the monitoring system.
- Check and automate if any server is running out of disk. Taking a backup of instance and restoring if required.
- Taking a backup of Prod DB and providing that DB to developers on Staging / Testing Environment for testing of any issue.
- Automation setup for daily tasks such as (DB/Instance/Logs/Config-Files) backup.
- In case of new project setting up new Jenkins Job. ( Freestyle/Pipeline).
- Making config changes on servers using Ansible/Chef/Puppet.
- Writing playbooks for automating daily tasks.
- Deploying code on Development and Production servers.
- Ensuring that post-deployment sanity of code is done and proper sign-offs are given.
- Seeking for approvals from (Business/QA/UAT and Security Sign-offs).
- Providing assistance during Audits.
- Ensuring that access on servers are given to required users only that’s too after proper approvals.
Don’t be scared guys as once you get hold of all these things your life will become easier and you will start loving it. Another fact is this is one of THE MOST HIGHLY PAID SKILLSETS out there in the market.
The Key to SUCCESS is …
Hope you like the article. Please let me know your feedback in the response section.
Thanks. Happy learning!