Aymen

@eon01

The Roadmap to Becoming a DevOps Dude — From Server to Serverless

The DevOps ecosystem is growing fast since the last 5 years but I’ve always seen the same question that is somehow hard to answer in some lines: How to become a DevOps engineer?

I recently created Jobs For DevOps: A dedicated job board for the DevOps community and I am taking this opportunity to share a learning roadmap that could answer the same question.

1 — Start By Learning About The Culture

DevOps is a movement and a culture before being a job this is why cultural aspects are very important.

Check my article The 15-point DevOps Check List to know more about this.

2 — Learn A Programming Language

In my experience, a good DevOps engineer is someone who has skills in development and operations.

Python, Go, Nodejs .. you have a large choice ! You don’t necessarily need to learn the same main language that your company use but programming skills are really nice to have.

3 — Learn How To Manage Servers

One of the principal tasks that a DevOps professional do, is managing servers. Knowing how servers work is a must-know and to do this, some good knowledge about the hardware (CPU, architecture, memory ..) is needed. The other thing to learn is operating systems and especially Linux. You can start by choosing a distribution like Ubuntu.

If you are really beginner with Linux, you can try it first in your laptop/desktop and start playing with in order to learn.

You can also use DigitalOcean, Amazon Lightsail or Linode to start a cheap server and start learning Linux.

4 — Learn Networking & Security Basics

You may probably say that these are skills for network and security engineers. No ! Knowing how HTTP, DNS, FTP and other protocols work, securing your deployed software, anticipating security flaws in the code and configuring your infrastructure network are things that you should know.

Using Kali Linux could be a good way to learn networking and security. You can also learn by reading good books like Kali Linux Revealed: Mastering the Penetration Testing Distribution.

5 — Learn Scripting

Even with the growing number of tools that could be an alternative to creating your own scripts, scripting is a must-know and you will need it for sure. In my experience, Bash is one of the most used scripting languages. Python is also a good scripting language that could be used to go fast while writing less code.

Start by writing basic scripts and check online resources like Awesome Bash.

6 — Learn How to Install & Configure Middlewares

Apache and Nginx are the most used middleware in the DevOps industry and knowing how to install and configure things like virtual hosts, reverse proxies, domain names and SSL will help you a lot in your daily tasks.

Start by deploying Nginx as a web server for a wordpress blog then as a load balancer for two backend servers.

7 — Learn How To Deploy Software

Once you know how to deploy and configure Nginx, you need to know how to deploy applications to a production server.

Create a hello world applications using Python, Nodejs and PHP. Deploy these 3 applications. You can use Nginx as a reverse proxy for all of them.

8 — Learn GIT

GIT is one of the versioning systems being used in the IT industry. You don’t need to be a GIT expert but this is a technology that will follow you through all of your DevOps experiences.

GIT basics are well explained in the official documentation.

Pro Git is the book you really need to read if you want to learn GIT.

9 — Learn How To Build Software

Building comes before running. Building software is generally about running a procedure of creating a software release that could run in a production server. A DevOps professional need to know about this important part of the software lifecycle.

Create an application in the language of your choice and check the different ways to install its dependencies and build your code.

10 — Learn How To Automate Your Software Factory

DevOps is not about automation, but automation is one of the pillars of the DevOps business transformation. Once you learned how to build software, you can use tools like Jenkins to automate builds and connect your code to the code repository.

If you are not familiar with all of this, read about Continuous Integration and Continuous Delivery.

11 — Learn Configuration Management

Once things become more complex and once you will need to manage multiple environments and configurations, learning a configuration management tool will make your life easier.

There are a lot of CM tools like Saltstack , Ansible, Chef, Puppet ..etc and you can find online resource that compare these tools. In function of what you need, choose a CM tool and start learning it.

I wrote a book about Saltstack (Saltstack For DevOps), so if you are interested in this technology you can get the book here.

12 — Learn Infrastructure As Code

IaC is absolutely important to automate your infrastructure and provision your environments with simple scripts or alternative tools. DevOps is about reducing the time to market while keeping a good software quality and IaC will help you on this.

Choose a cloud provider (AWS, GCP ..etc) and you will find a lot of free online resources to start your infrastructure. You can also learn how to use “cloud managers” technologies, some CM tools like Saltstack could help you provision infrastructure on AWS or GCP, otherwise if you need more go for technologies like Terraform.

13 — Learn How To Monitor Software & Infrastructure

A software deployed in production and the infrastructure hosting it should be monitored. Monitoring and alerting are one of the important skills you need to know.

Zabbix, Icinga, Sensu, prometheus .. there are a lot of tools you can learn but start by comparing these tools and choose the one that fits your requirements. You can also consider learning how to deploy and use an ELK stack.

14 — Learn About Containers & Orchestration

Containers like Docker are becoming a must-know skill ! You need to have good skills creating, building, deploying and managing containers in development and production environments.

I wrote Painless Docker and I am sure this could help you learn Docker and more even if you are beginner. You can find the book here.

15 — Learn How To Deploy & Manage Serverless Applications

Serverless is one of the most buzzing technologies of 2017 and sooner it will become a requirement in many job descriptions.

AWS Lambda, Azure Functions, Google Cloud Functions, IBM OpenWhisk, or Auth0 WebTask, you have the choice to start learning one of them.

You can also join my newsletter Shipped: An Independent Newsletter Focused On Containers & Orchestration.

16 — Learn & Share

Learning is a continuous process and sharing your knowledge could help you learn more !

Join DevOpsLinks, a community of DevOps passionate and professionals where you can learn and share awesome stuff.

17 — Submit Your CV To Jobboards & Test Yourself

One of the best ways to test if we have the required level to be accepted in a DevOps job is being interviewed and passing technical tests with recruiters and companies. If you fail an interview, try again and again and again, successful people failed on their way to Success.

I recently started Jobs For DevOps, a dedicated job board to the DevOps ecosystem. You can create an candidate profile here, we also provide additional services like writing, optimizing and proofreading your CV. I can personally assist you if you need it.

Connect Deeper

If you resonated with this article, please subscribe to DevOpsLinks : An Online Community Of Thousands Of IT Experts & DevOps Enthusiast From All Over The World.

You may be also interested in joining our newsletter Shipped, a newsletter focused on containers, orchestration and serverless technologies.

You can find me on Twitter, Clarity or my website and you can also check my books: SaltStack For DevOps,The Jumpstart Up & Painless Docker.

Don’t forget to join Jobs For DevOps and submit your CV.

If you liked this post, please recommend it and share it with your followers.

More by Aymen

Topics of interest

More Related Stories