Key Considerations for a Career in DevOps
- Written by Nick Lunt, DevOps Engineer at Version 1
A DevOps Engineer role encompasses quite a few skills needed to be able to design and build infrastructure in the Cloud, and the learning process never ends. If you are considering a career in this field you may find the below insights, gathered over my 20 years in the industry, useful.
Key Insights:
- A career in DevOps means continual learning and upskilling. Developing an understanding of Cloud basics before you begin is key.
- It’s beneficial to teach yourself infrastructure knowledge, like an understanding of both physical and virtual servers and modern operating systems.
- Having some networking knowledge is also important.
- While you don’t need to be an ex Microsoft developer to use code in the Cloud, having some coding knowledge would be extremely helpful.
My Background
My career in DevOps didn’t happen by chance; I’ve been consistently building and honing my skills over many years to stay up-to-date with industry trends. If you’re considering a role in this field be open to the idea of wearing many hats at once. For example, I have been a Linux Administrator for over 20 years but in 2008, as part of my role in Patech Solutions, I also got into Oracle Database Admin too. Along with the obvious maintenance of Linux systems, I experienced infrastructure design, mail servers, firewalls, web proxies and SAN administration plus much more.
When Patech was taken over by Version 1 I took the opportunity to complete an AWS Associate course and got certified; this is what made me want to get into DevOps / Cloud.
Having done the AWS training, it opened my eyes to the world of DevOps and I.T. Automation. I was amazed at what could be done with AWS, from simply spinning up an EC2 instance to running serverless code with Lambda, it was like I had found my passion for I.T. again. Having got AWS certified and taught myself Docker, Ansible and Terraform via online courses, I applied to join the Version 1 DevOps / Cloud team. With the proliferation of online courses now available, one can learn anything if you make the commitment and dedicate the time to it. My preferred online tutors are Udemy and acloud.guru. Learning online does take a lot of time, much longer than the course states because you re-watch some videos, take copious notes and do then redo the practical lessons. So be prepared before you start and set aside enough hours to complete everything.
With the proliferation of online courses now available, one can learn anything if you make the commitment and dedicate the time to it.
— Nick Lunt
Infrastructure Knowledge
For those entering the industry, I would recommend having a good understanding of both physical and virtual servers and modern operating systems.
Why you might ask? Well, whilst Cloud providers supply virtual infrastructure it is all built on physical hardware. So there are times when you might want to have your virtual infrastructure running on certain types of hardware or even on dedicated single-tenant hardware (this could be for performance or security reasons).
When setting up virtual machines (VMs) for example, it can be click and go, but you don’t want to do that in any environment, except a personal learning environment. You need to know how the underlying hardware of the VM is set up, for example, the speed, architecture and number of CPUs; the amount and type of disk storage; the required I/O and network bandwidth; the amount of RAM needed etc.
Having this underlying hardware knowledge will give you a better understanding of how you need to set up your virtual machines, giving you the confidence to know when you need to upgrade the underlying hardware of your VMs, or even downgrade them if they are overpowered, hence saving money.
Network Routing and Network Security
Planning the virtual infrastructure also requires planning the virtual network, so having some networking knowledge is important. An understanding of IP routing and subnets will help in planning your network. And from a security standpoint, you need to decide which VMs can break out of the cloud network; which VMs can talk to other VMs; which network protocols can they use; which VMs are accessible from outside and so on.
A simple example would be having a Drupal front end for users to access, so the VM running Drupal needs to be accessible over HTTPS, however, you would deny access to the Drupal database, and you would allow Drupal and its database to talk to each other. That is a common type of setup, but the Cloud providers don’t do it for you automatically. You need to make some decisions regarding the network you are going to create, then go ahead and create it.
If Drupal and its database are on separate VMs, will they be in separate subnets? Yes, for security reasons, you don’t want services accessible over the internet to be in the same subnet as a secure database. So then you need to be able to route IP traffic between the database and Drupal, and setup network security rules.
You can see how an understanding of networking would help here.
The Ability to Code
The Cloud has been about instant redundant services being available without having a big initial expense for hardware and premises to house them. This is evolving into setting up these services without even logging into the Cloud suppliers console and instead using code to connect to the cloud provider and set up your infrastructure.
Also, when a service is created in the Cloud, you probably want to further configure it and again this is more frequently done automatically with code you have written, which helps to automate and version control your infrastructure.
Whilst there are several ways to code infrastructure, my experience has been with Terraform, which is used to create your Cloud platform. Then when your VMs first boot up, they run some scripts to set up the software on them, for example on a Windows VM you might use PowerShell to install and configure an MS SQL database, and on a Linux VM you could use Python to setup and configure a web server. Also, Ansible could also be used to help or replace PowerShell and Python in this instance.
So while you don’t need to be an ex Microsoft developer to use code in the Cloud, having some coding knowledge would be extremely beneficial.
Basic Cloud Knowledge
As mentioned above, DevOps can be a bit of a chicken and egg situation. It can be difficult to get into it without some prior experience. With that in mind, it would be beneficial to teach yourself Cloud basics.
AWS and Azure both provide limited free accounts for that purpose, enabling you to get some experience. For myself I used the free AWS account in conjunction with studying AWS on Udemy, then took the AWS certification exam, ending up as an AWS Certified Solutions Architect. Without going through that I would not have got my current role. Also, this process cost less than £200, which is a bargain given the potential it gives you in the workplace.
So get some Cloud experience with the free account, and maybe even get certified. That will make you so much more employable.
Skills We Seek When Hiring
For those applying to DevOps roles, many of the core competencies mentioned above are important, with the primary one being basic Cloud knowledge. Any Cloud certifications would be very advantageous.
Because technology is constantly changing, you must keep learning. Whether that is through training supplied by the company you work for, or self-taught. For graduates looking to get into DevOps, start off by learning one of the Cloud providers, primarily AWS or Azure. Using the free accounts available, set up infrastructure in the Cloud (just a basic web server for starters), then learn how to do the same using Infrastructure as Code, eg Terraform. Learn a bit of Python and PowerShell as it is likely you will be using these a lot in the modern workplace.
And when you get on the job, ask questions! Asking for advice is simply another learning avenue, and never stop learning.
What’s next for me
For me, my goals are to continue getting more experience with the DevOps tools and to keep learning and getting more certifications. Kubernetes is very popular now for container orchestrating, so that is something I am looking to get certified in.
There is also an AWS DevOps course which I will be looking to take and again get certified in.
There’s never a dull moment in a DevOps career.