A role in DevOps 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.

A Role in DevOps – Key Insights:
  • 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.
Background: My Role in DevOps

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.

Infrastructure Knowledge

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

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

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

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

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

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.