From Zero to DevOps Engineer

DevOps roadmap...

As a DevOps professional, sometimes I forget how it is getting into DevOps from the perspective of a beginner. So I wanted to create this article outlining a path I would take, if I was starting from zero again. 0️⃣ And having the knowledge that I have now, what the most efficient path to get there would be like.

So basically what are the steps to becoming a DevOps engineer, what do you need to learn and in which order?

What is DevOps?

If you don't know what DevOps is. there is a clear explanation in this article

#What is the DevOps skillset?# Now first to understand how to become a DevOps professional, let's define exactly what skill set you to require for that. 🤔

Software Development Basics

As you are working closely with the development team to improve and automate tasks for them, you need to understand the concepts of:

  • how developers work and

  • what workflows they use,

  • how they collaborate on developing features,

  • the modern processes like agile and scrum,

  • what Git workflow they use and

  • generally understand what software development life cycle covers from idea to code all the way to releasing it to the end users.

Now here it's important to mention that you don't need to be a software developer or the one implementing those agile and scrum processes. You need to understand how those things work on a high level, conceptually.

Software Deployment

The next one is software deployment. Once the feature is developed, it needs to be released to the end users, which means you need an environment, where your application will be running and be available for the end users.

Operating Systems & Linux Basics

As a DevOps engineer, you need to know how to

  • provision and prepare these environments and

  • maintain them.

For that, you need knowledge of general server administration like creating virtual machines, mostly with Linux operating system, installing software, doing patches, configuring networking on-premise as well as on the cloud.

Containers with Docker

As part of the more modern infrastructure concepts, you need to understand how to work with containers and the most popular container technology, which is Docker.

Container Orchestration with Kubernetes

For projects with tens or hundreds of Docker containers, you need to know how to work with container orchestration platforms like Kubernetes, which is the most popular one nowadays.

If you're working on a cloud like AWS, which is the most popular and most used cloud platform for now, you also need to know AWS-specific services and how to manage the whole deployment infrastructure on AWS.

CI/CD - Continuous Integration and Continuous Deployment

Connecting all these pieces together and kind of the heart of the DevOps processes is CI CD pipelines.

It's not just about deploying it to the deployment environment, we don't just take it and throw it on there. Why? Because humans make mistakes, either because of lack of knowledge in some area or just accidentally. So instead we add many gatekeepers before the deployment, so the deployed code needs to go through various of these gate checks to be allowed on the final environment and that's what the DevOps CI/CD pipeline is for:

  • testing code,

  • packaging,

  • deploying to production to deliver it to their end users.

CI/CD Pipeline

Now what are those gatekeepers? Well, testing the code quality, testing code logic, testing that it didn't break any previously existing code, checking for any security issues, testing that it functions as it's supposed to etc. So tools for implementing this whole CI/CD pipeline with all those gatekeepers is a super important skillset.

Monitoring and Observability

As we are humans and we can assume that even with the most cautious measures and a lot of extensive testing, we can't always 100% test every single aspect of the deployment and some issues may slip through to production env. That's why vital part of the DevOps skillset is to create a process of handling discovered issues in production instead of having a panic mode. So what does that skillset include? Well, it's a thing called "monitoring and observability".

So in the last stage of CD or continuous deployment, after deploying the code changes, we don't just say: "hey we're done, that's deployed so now let's move on to the next task", instead we observe and monitor closely what happens. If some user encounters an error, if something crashes or doesn't work, so we know we need to proactively fix that. So maybe for a couple of hours or within the next days of deployment, we're actively looking and observing whether some kind of issue appears in the production.

Automation

And finally, the last missing piece of really conquering DevOps is automation.

Let me give you some examples, for every new code released:

  • you always need to test your application,

  • you always need to check for security,

  • you always need to package and deploy application changes.

These tasks should happen automatically, so you make sure to execute automated tests that developers or test engineers write, you have automated security checks, quality checks and you have scripts or automation code that deploys that code to the production env:

CI/CD automates all human tasks

Infrastructure as Code

DevOps doesn't end with automation, but also automates things done less frequently ( not on every automatic deployment ); for example steps like provisioning infrastructure or setting up a Kubernetes cluster Some of the most popular tools in this area are:

  • Terraform - for Infrastructure Provisioning ( IP ),

  • Ansible for Configuration Management ( CM )

Did you find this article valuable?

Support Wojtek X by becoming a sponsor. Any amount is appreciated!