Add how to become devops engineer guide (#5847)
* add how to become devops engineer guide * Update src/data/guides/how-to-become-devops-engineer.md Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com> * Update src/data/guides/how-to-become-devops-engineer.md Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com> * Update src/data/guides/how-to-become-devops-engineer.md Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com> * Update src/data/guides/how-to-become-devops-engineer.md Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com> * Update src/data/guides/how-to-become-devops-engineer.md Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com> * add newline before and after all headings * remove double empty lines --------- Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>pull/5854/head
parent
6f4ab78f47
commit
f08eae2632
3 changed files with 210 additions and 1 deletions
@ -0,0 +1,178 @@ |
|||||||
|
--- |
||||||
|
title: 'How to become a DevOps Engineer in @currentYear@' |
||||||
|
description: 'Want to become a DevOps engineer? Our @currentYear@ guide covers skills, certifications, and expert career advice. Start your journey today!' |
||||||
|
authorId: kamran |
||||||
|
excludedBySlug: 'devops/how-to-become-devops-engineer' |
||||||
|
seo: |
||||||
|
title: 'How to become a DevOps Engineer in @currentYear@' |
||||||
|
description: 'Want to become a DevOps engineer? Our @currentYear@ guide covers skills, certifications, and expert career advice. Start your journey today!' |
||||||
|
ogImageUrl: 'https://assets.roadmap.sh/guest/how-to-become-devops-engineer-3opju.jpg' |
||||||
|
isNew: true |
||||||
|
type: 'textual' |
||||||
|
date: 2024-06-11 |
||||||
|
sitemap: |
||||||
|
priority: 0.7 |
||||||
|
changefreq: 'weekly' |
||||||
|
tags: |
||||||
|
- 'guide' |
||||||
|
- 'textual-guide' |
||||||
|
- 'guide-sitemap' |
||||||
|
--- |
||||||
|
|
||||||
|
If you are trying to get into tech or are already in tech and have been exploring roles across the industry, you must have come across Development and Operations (DevOps). In fact, DevOps is one of the highest-paying roles in the tech industry. But **what is DevOps, and how is it different from other roles?** |
||||||
|
|
||||||
|
**DevOps is a software engineering approach that combines development (Dev) and operations (Ops) to shorten the software development lifecycle** (feature development, bug fixes, updates) by embracing automation. It is a bridge between the development and the operations team. While the primary goal of a software engineer is to design and build software solutions, a DevOps engineer has a key role in streamlining the software delivery pipeline, automating infrastructure provisioning, and enhancing the deployment process. |
||||||
|
|
||||||
|
This article provides in-depth knowledge on how to become a DevOps engineer, highlighting the mindset and technical skills(including DevOps tools) required to become one. |
||||||
|
|
||||||
|
**TL;DR:** DevOps combines development and operations to automate software delivery. To become a DevOps engineer, you should adopt a mindset of automation, risk awareness, systems thinking, and continuous learning. In addition to the mindset, follow the steps below: |
||||||
|
|
||||||
|
- Step 1: Learn a programming language |
||||||
|
- Step 2: Get comfortable with Linux and terminal |
||||||
|
- Step 3: Version control and code hosting platforms |
||||||
|
- Step 4: Networking fundamentals |
||||||
|
- Step 5: Containerization |
||||||
|
- Step 6: Cloud platform |
||||||
|
- Step 7: Continuous integration and delivery |
||||||
|
|
||||||
|
Let’s dive into the essential skills required for a [DevOps engineer](https://roadmap.sh/devops). |
||||||
|
|
||||||
|
## Skills required to become a DevOps Engineer |
||||||
|
|
||||||
|
### Operating system |
||||||
|
|
||||||
|
A DevOps engineer should understand the operating system, especially Linux (distribution or any variant). This is because most of the servers in use are Linux-based, so having a solid foundation in the Linux OS is imperative for infrastructure management and troubleshooting. |
||||||
|
|
||||||
|
### Solid programming fundamentals |
||||||
|
|
||||||
|
As a DevOps engineer, you will use your knowledge of programming and scripting language to: |
||||||
|
|
||||||
|
- Automate frequent and boring tasks |
||||||
|
- Patch a security bug exposing your internal application to outside users |
||||||
|
- Create automation tools, monitoring tools, and logging tools |
||||||
|
|
||||||
|
Hence, hands-on experience with programming is crucial. |
||||||
|
|
||||||
|
### Version control |
||||||
|
|
||||||
|
Knowledge of version control is essential in all software engineering roles. As a DevOps engineer, you will likely work in a team rather than alone. Version control systems like Git facilitate collaboration in a team while providing a centralized repository for the code. |
||||||
|
|
||||||
|
### Networking fundamentals |
||||||
|
|
||||||
|
Many modern-day applications are distributed systems that rely on networking. For instance, a single application could be composed of a frontend, backend, database, file server, etc., each residing on a separate server. For a seamless user experience, these separate entities should be able to communicate smoothly. |
||||||
|
|
||||||
|
### Containerization and orchestration |
||||||
|
|
||||||
|
[Containerization](https://roadmap.sh/docker) and [orchestration](https://roadmap.sh/kubernetes) help solve the issues of software deployment and resource utilization. Knowledge of containerization and orchestration helps reduce deployment time and allows you to scale applications quickly without downtime, resulting in a better user experience. |
||||||
|
|
||||||
|
### Cloud platforms |
||||||
|
|
||||||
|
Procuring hardware to deploy the software is not always feasible and beneficial. Furthermore, once you purchase the hardware, you need more time and resources to manage the new hardware. Depending upon the complexity of the application, choosing cloud platforms instead of on-premise hardware can significantly reduce deployment time and cost. |
||||||
|
|
||||||
|
### Infrastructure as Code (IaC) |
||||||
|
|
||||||
|
IaC can be seen as a superior form of automation for a DevOps engineer. IaC tools like Terraform and Amazon Cloud CDK allow the operations team to set up and manage infrastructure by simply changing a configuration file. This makes it easier to manage and scale the application. |
||||||
|
|
||||||
|
So, how do you learn these essential skills? In what sequence do you acquire these skills? The following section presents a complete roadmap on how you can learn these skills and become a DevOps engineer. |
||||||
|
|
||||||
|
## How to become a DevOps Engineer |
||||||
|
|
||||||
|
The internet is full of resources for learning DevOps and DevOps tools. Many of these guides lack structure and organization, resulting in a dilemma of where to start. To help beginners learn DevOps in a structured manner, [roadmap.sh](https://roadmap.sh) has a beginner-friendly [DevOps roadmap](https://roadmap.sh/devops?r=devops-beginner). |
||||||
|
|
||||||
|
This section presents a concise version of the DevOps roadmap. It is recommended that you implement real-world projects recommended in each stage of the roadmap. In the end, you can publish these DevOps projects to GitHub as an open-source project repository, and the repository will act as your portfolio. |
||||||
|
|
||||||
|
### Step 1: Learn a programming language |
||||||
|
|
||||||
|
Programming language is essential to a DevOps engineer. I recommend you start with either Python or Go. [Python](https://roadmap.sh/python) is a popular programming language that is easier to learn and used in various projects involving [backend](https://roadmap.sh/backend) development, writing machine learning algorithms, automating everyday tasks, etc. |
||||||
|
|
||||||
|
[Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) is an excellent resource for learning Python and basic programming concepts. It will also come in handy when building automation tools. To demonstrate your understanding of Python, you can create a web scraper that extracts a list of hotels, their address, prices, reviews, and locations from a site like [booking.com](http://booking.com/). |
||||||
|
|
||||||
|
### Step 2: Get comfortable with Linux and the terminal |
||||||
|
|
||||||
|
According to [Gitnux](https://gitnux.org/linux-statistics/), 92.4% of the world’s top 1 million servers run on Linux, and about 96.3% of the world’s top 1 million websites are powered by Unix-like operating systems, with Linux being the most popular. This makes Linux a popular tool for all software engineers. |
||||||
|
|
||||||
|
Furthermore, you should make the terminal your best friend. Some programs and packages may not have a GUI counterpart, and even when they exist, using the CLI(Command Line Interface) alternative is faster and easier to automate. |
||||||
|
|
||||||
|
An excellent way to practice Linux is to install it on a thumb drive and try to do everyday tasks like changing the directory, creating new files and folders, editing files, searching for files and folders, etc., using Linux commands instead of using the GUI interface. |
||||||
|
|
||||||
|
### Step 3: Version control and code hosting platforms |
||||||
|
|
||||||
|
Version control systems like Git make it easier for developers to track changes in their source code by maintaining a history of the changes. Combined with platforms like GitHub or Bitbucket, Git can facilitate developers to work collaboratively with each other. |
||||||
|
|
||||||
|
[This tutorial](https://www.atlassian.com/git) will help you learn Git basics and how to use Git for collaboration using Bitbucket, a code hosting platform. For advanced concepts on git branching, [refer this site.](https://learngitbranching.js.org) Once you go through the tutorial, you can easily switch from Bitbucket to GitHub and GitLab, which are more popular among developers. |
||||||
|
|
||||||
|
### Step 4: Networking fundamentals |
||||||
|
|
||||||
|
Learning networking fundamentals becomes vital to the DevOps team when working with software components constantly communicating with other services. Knowledge of networks comes in handy when setting up resources in the public cloud. At a minimum, you should clearly understand standard protocols(TCP/IP, UDP), routing, IP addressing, subnetting, and ports. |
||||||
|
|
||||||
|
A DevOps engineer should have a sound knowledge of web servers like Nginx. Nginx allows you to serve your application on the web while handling reverse proxy and load balancing. [Apache](https://httpd.apache.org) is another web server that provides similar features. |
||||||
|
|
||||||
|
For your practice, you can create a simple frontend (or clone it from GitHub) and deploy it using Nginx or Apache. |
||||||
|
|
||||||
|
### Step 5: Containerization |
||||||
|
|
||||||
|
An application developed by one developer may not work on other machines due to the difference in environment. To eliminate this issue, DevOps engineers use containerization tools like Docker. Docker allows engineers to create consistent development, testing, and production environments. It also ensures the developed application is portable across different platforms. |
||||||
|
|
||||||
|
Applications rely on multiple containers that communicate with each other. To facilitate the orchestration of these containers, you can use container orchestration tools like [Kubernetes](https://roadmap.sh/kubernetes). The [Docker Roadmap](https://roadmap.sh/docker) provides essential resources to help you master Docker and Kubernetes. |
||||||
|
|
||||||
|
You can demonstrate your understanding of containerization tools by creating a simple project with frontend and back deployed as two separate containers. If you have already developed these components in the previous stages of the roadmap, re-use them to save time. |
||||||
|
|
||||||
|
### Step 6: Cloud platform |
||||||
|
|
||||||
|
Cloud platforms like [AWS](https://roadmap.sh/aws), Azure, and Google Cloud Platform are some popular cloud providers that allow you to deploy your projects without investing in expensive hardware. Many cloud services across these cloud platforms are analogous. So, if you are a beginner, start with AWS, as it is the most widely used cloud platform. Once you are comfortable with AWS’s services and key concepts, you can deploy the application created in earlier stages to the AWS. |
||||||
|
|
||||||
|
Alternatively, you could demonstrate your understanding by taking the [certification exam from AWS](https://aws.amazon.com/certification/). |
||||||
|
|
||||||
|
Once comfortable launching your infrastructure using the GUI, you should learn about Infrastructure as Code(IaC). I recommend using [Terraform](https://www.terraform.io/) for IaC as it is cloud-agnostic. Terraform allows you to set up and make changes to infrastructure resources by editing a configuration file. |
||||||
|
|
||||||
|
### Step 7: Continuous integration and delivery |
||||||
|
|
||||||
|
[Continuous Integration and Continuous Delivery](https://www.youtube.com/watch?v=nyKZTKQS_EQ) (or Continuous Deployment) (CI/CD) is a set of practices aimed at automating and streamlining software changes from development to production. Today, in practice, when you commit and push your changes to the remote repository (say GitHub), the tests kick off; if the tests pass successfully, your changes are merged and then deployed to the staging and production server. |
||||||
|
|
||||||
|
CI/CD is a combination of three skills: programming, writing configuration files, and Git. As such, you don’t need to learn new skills to implement CI/CD. However, some organizations use tools like CircleCI and Jenkins to simplify the process. |
||||||
|
|
||||||
|
You can practice CI/CD using GitHub actions. [GitHub provides a set of tutorials](https://docs.github.com/en/actions/learn-github-actions) for the same. You can follow along those tutorials to get a good grasp of Continuous Integration and Continuous Deployment. Then, you can implement CICD in one of your projects created while learning previous skills in this roadmap. |
||||||
|
|
||||||
|
Next, let’s discuss the mindset needed to become a DevOps engineer. |
||||||
|
|
||||||
|
## DevOps Engineer’s mindset |
||||||
|
|
||||||
|
To become a successful DevOps engineer, you must orient your thoughts around the following: |
||||||
|
|
||||||
|
### Automation |
||||||
|
|
||||||
|
Software products or systems are prone to various errors, including human errors. Stress during work and the race against deadlines can increase the frequency of these errors. Automation helps reduce human error and eliminate boring tasks. |
||||||
|
|
||||||
|
### Risk awareness |
||||||
|
|
||||||
|
DevOps engineers must understand the risks entangled with changes to a software system and deployment infrastructures. The risk should be minimized by utilizing automated testing, monitoring, and incremental changes. |
||||||
|
|
||||||
|
### Systems thinking |
||||||
|
|
||||||
|
DevOps engineers must understand how different components within a system communicate and interact with each other to deliver the desired solution. A graphical representation of the system can come in handy when fixing issues or knowledge transfer. |
||||||
|
|
||||||
|
### Continuous learning |
||||||
|
|
||||||
|
A continuous learning and continuous improvement mindset is essential across all roles in software engineering, but its importance is amplified for a DevOps engineer. A DevOps engineer must continually learn about new technologies, tools, and best practices and implement the ones best suited to the project. |
||||||
|
|
||||||
|
You may not have the DevOps mindset, but that is okay. You can build this mindset as you learn and grow into the role. Let us look at some technical skills required to become a DevOps engineer. |
||||||
|
|
||||||
|
## Who can become a DevOps Engineer? |
||||||
|
|
||||||
|
Anyone with the right skillset can become a DevOps engineer. Typically, it is easier to transition into a DevOps role if you are a, |
||||||
|
|
||||||
|
- Systems Engineer |
||||||
|
- Backend Engineer |
||||||
|
- Infrastructure Engineer |
||||||
|
|
||||||
|
If you are a newbie in software engineering, you are encouraged to learn the above skills and concepts. You can then apply for a DevOps intern position. You may look for vacancies in local companies or remote job boards. |
||||||
|
|
||||||
|
Depending on your current skill set and practical experience, the time to transition into a DevOps role will vary. However, following a structured learning path will help you speed up and ease the process. |
||||||
|
|
||||||
|
## What next? |
||||||
|
|
||||||
|
The [roadmap](https://roadmap.sh) simplifies the [DevOps](https://roadmap.sh/devops) journey by breaking it into learnable skills via the DevOps roadmap. To effectively use the site, I encourage you to [sign up](https://roadmap.sh/signup) on the platform and learn the desired skill by following the structured roadmap. You could explore additional roadmaps and advanced topics utilizing the search bar on the platform. The platform also allows you to: |
||||||
|
|
||||||
|
- Keep track of your journey as you progress through a roadmap |
||||||
|
- Draw your own roadmap or generate one using AI |
||||||
|
- Create and share a roadmap for [your team](https://roadmap.sh/teams) |
@ -0,0 +1,31 @@ |
|||||||
|
--- |
||||||
|
import GuideContent from '../../components/Guide/GuideContent.astro'; |
||||||
|
import GuideHeader from '../../components/GuideHeader.astro'; |
||||||
|
import BaseLayout from '../../layouts/BaseLayout.astro'; |
||||||
|
import { getGuideById } from '../../lib/guide'; |
||||||
|
import { getOpenGraphImageUrl } from '../../lib/open-graph'; |
||||||
|
import { replaceVariables } from '../../lib/markdown'; |
||||||
|
|
||||||
|
const guideId = 'how-to-become-devops-engineer'; |
||||||
|
const guide = await getGuideById(guideId); |
||||||
|
|
||||||
|
const { frontmatter: guideData } = guide!; |
||||||
|
|
||||||
|
const ogImageUrl = |
||||||
|
guideData.seo.ogImageUrl || |
||||||
|
getOpenGraphImageUrl({ |
||||||
|
group: 'guide', |
||||||
|
resourceId: guideId, |
||||||
|
}); |
||||||
|
--- |
||||||
|
|
||||||
|
<BaseLayout |
||||||
|
title={replaceVariables(guideData.seo.title)} |
||||||
|
description={replaceVariables(guideData.seo.description)} |
||||||
|
permalink={`/devops/how-to-become-devops-engineer`} |
||||||
|
canonicalUrl={guideData.canonicalUrl} |
||||||
|
ogImageUrl={ogImageUrl} |
||||||
|
> |
||||||
|
<GuideHeader guide={guide!} /> |
||||||
|
<GuideContent guide={guide!} /> |
||||||
|
</BaseLayout> |
Loading…
Reference in new issue