After I finished my master’s in Computer Engineering, I started working as a Systems Engineer for an Aviation firm. The job involved working with systems integration and telemetry. While it was not very interesting, I was newbie and I was trying to understand how things worked.
I jumped at an opportunity to work on moving a company’s infrastructure from traditional on premise setup to AWS cloud. The experience migrating to cloud was liberating and that got me interested in pursuing Devops/ Cloud-ops as full time job or career track.
I am not going to go into detail about working with Cloud but focus more on what should a Devops Tools engineer focus on improving so he can be good at his/her job. I have worked with some excellent devops engineers and they are good at their job because they have mastered the basic devops skills. I also consolidated the list based on what I come across daily at work.
- Comfortable around command line, you don’t search for how to do awk, run top etc on google. You should be able to reference the command options using the man page.
- Configuration Management — As you would need to manage whole lot of servers and in short span of time, config management tools is your friend. Learn the in and out of the tool, it could be Chef, Puppet, Ansible or Salt
- Cloud Providers — As more companies transition to Cloud model, you need to be familiar with provisioning and managing instances/ services on cloud provider. Cloud providers come up with new services every day but I think you need to know your way around the most common services. Look at provisioning tools — Terraform, fog, API or SKDs
- In your daily job you might need to run a bunch of commands, operations on set of servers and you would need to use tools such as DSH, Rundeck, Ansible or Fabric to help you quickly run jobs, ad-hoc jobs on these servers. Rundeck + Chef, Ansible + Chef are good combinations to manage your servers.
- Monitoring — This is a heavy weight. We need to get all the servers monitored and be proactive about it. Data Dog, Icinga2 are few of the monitoring tools.
- Logger — Be comfortable setting up distributed ELK stack that scales based on log volume.
- Metrics — Apart from monitoring, you might also want to look at metric collection — grafana, sensu would be useful here
- Scalability, Performance, Resilience of the applications — Most engineer ignore this but when you build a new tool, you would need to analyze the requirement and setup a cluster that can either scale or balance that kind of load.
- Programming Language — Ruby, GO, Python — You will need to customise existing tools for in house and also write your own command line tools
- Power Tools that make your job faster — Sublime Text, Zsh