This document provides a guide for becoming a DevOps engineer. It discusses what DevOps is, the responsibilities of a DevOps engineer, and the necessary technical and non-technical skills. Foundational skills like Linux, programming, Git, networking and cloud are recommended. Technical skills like CI/CD, containers, Kubernetes, infrastructure as code and security are important. Non-technical skills include understanding DevOps culture, communication, Agile principles and Lean. The document provides certification and learning resources recommendations.
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Guided Path to DevOps Career.
1.
2. Guided Path to DevOps Career
Guide to becoming a DevOps Engineer
3. Guided Path to DevOps Career
Guide to becoming a DevOps Engineer
SHAIK ABDUL WAHAB
Founder of The Guided Path LLC
shaikwahab.com
The Guided Path, LLC
Madison, WI
5. Contents
1. Who is this book for?.............................................................................................................................6
2. What is DevOps?...................................................................................................................................7
3. Does “DevOps Engineer” role exist? ..................................................................................................8
4. Responsibilities of a DevOps Engineer............................................................................................10
5. Skills needed for DevOps Engineer role ..........................................................................................11
6. Technical Skills needed ......................................................................................................................15
7. Non-technical skills needed ...............................................................................................................19
8. Certifications and Resources.............................................................................................................21
9. Conclusion ............................................................................................................................................22
6. 1. Who is this book for?
This book is for you.
If you want to put your step forward in DevOps world and do not know
where to start
If you are a fresher and are serious about starting your career in DevOps
If you are an experienced IT professional, willing to steer your career
towards DevOps
If you love working on innovative projects and look forward challenges
every day
If you want to know how to get started in DevOps environment
If you want to learn more about DevOps to determine if it a right career
choice for you
If you fall into any of the above categories, you are in the right place. Please keep
reading this short e-book. At the end of this book, you will know
Exactly what DevOps is?
What is the role of a DevOps Engineer?
Most common and useful skills needed to break into any role that falls
under “DevOps Engineer” umbrella
Responsibilities of a DevOps Engineer
What are the best DevOps Certifications out there?
Any books and resources needed to get further insight and deep dive into
DevOps Concepts
Most importantly, how to find a job as a DevOps Engineer.
7. 2. What is DevOps?
DevOps is a culture and a way of working whereby developers and operations
engineers work as one team to achieve a common goal.
DevOps is set of best practices that enable substantially faster, more efficient, and
more agile delivery of high-quality software.
It involves getting key technology stakeholders working together more effectively
and combining this with best-in-class release and infrastructure automation to
speed up delivery and focus everyone on the real business goals of software.
When DevOps is adopted successfully,
• The organization is empowered to deliver software better
• It gives the organization an enhanced ability to beat the competition
• It enables the organization to get to market faster
• It gives the organization opportunity to innovate much more effectively
8. 3. Does “DevOps Engineer” role exist?
The job title DevOps Engineer is used a lot and it has several meanings from
different perspectives.
The DevOps Essentials training, I took from Pink Elephant, claims that the title
DevOps Engineer shouldn’t even exit. Because DevOps is not a role, it is ‘a culture’
or a ‘a specific way of working’.
This statement is not wrong. In fact, some organizations that understood and
implemented DevOps in the best way possible, don’t even have a role that named
“DevOps Engineer”.
But we still see occasionally, a job posting with title “DevOps Engineer”.
What are they advertising for?
Who are they looking to hire?
9. After interviewing the hiring managers and recruiters, we came to know the truth
that they are looking for
• Infrastructure engineers
• System Reliability Engineers
• CI/CD engineers
• And Sysadmins etc.
That brings us to our next section.
10. 4. Responsibilities of a DevOps Engineer
While DevOps is a term that may encompass many roles, the responsibilities of a
DevOps engineer combines aspects of a technical role and an IT operations role.
Below are some common tasks across these different roles:
Writing CI/CD Pipelines using tools like Git, Jenkins, Maven, MS Build and
Nexus etc.
Spinning up VMs and automating infrastructure using tools like Ansible,
Chef, Puppet etc.
Working closely with developers to write well designed microservices
architectures
Designing Roadmap of infrastructure and deployment as part of DevOps
Strategies
Building and setting up new development tools and infrastructure
Providing platform and infrastructure recommendations and solutions to
development teams
Working on ways to automated and improve development and releases
processes
Ensuring that all workloads and infrastructure is secure against
cybersecurity threats
11. 5. Skills needed for DevOps Engineer role
The question always comes up,
Where do I start?
What skills do I need?
What skills are sufficient to start applying for jobs?
What skills are nice to have?
In this section, I am going to address them all by dividing them into three
categories:
1. Foundational Knowledge:
This is common knowledge that is required in all DevOps roles. This is
fundamentals that are needed in Information Technology Industry.
Below are five fundamental foundational skills that are absolutely needed for
anyone even thinking about getting into a role in DevOps
• Linux (OS Fundamentals)
• Basic Programming Skills
• Git
• Networking Fundamentals
• Cloud Platform Fundamentals
Linux (OS Fundamentals):
12. A basic understanding of how the operating systems works is a great way to start
your journey. Almost all DevOps roles make use of Linux in one way or another.
While you could get away with windows if you want to follow Microsoft path but
still, I strongly recommend learning Linux.
Basic Programming Skills:
You certainly don’t need to be a complete programmer, but you need to learn at
least basic programming concepts like variables, arrays, conditions, loops, and
lists, etc. These will be very helpful when you need to understand or modify some
code. If you want to learn one programming language from scratch, I recommend
going with Python. As it is easy and is most widely used language for
accomplishing most automation jobs at this time.
13. Git:
I strongly recommend familiarizing yourself with concepts of Git. As Git is a
distributed version control system and it is widely used by all development and
operations teams. Once you learn what is Git and how it works under the hood,
you will be able to work with any versioning service like GitHub, GitLab, Bitbucket
etc. Which is very important component of a basic CI/CD pipeline.
Networking Fundamentals:
You don’t need network engineering experience to start in DevOps and you also
do not need to learn everything a network engineer knows. All you need is basic
understanding of networking concepts like subnet, route, ip, router, switch and
VPC etc.
14. Cloud Platform Fundamentals:
To begin your DevOps journey, you need to understand the cloud platform from
administrator perspective. You need to know all the concepts and services offered
by the cloud platform and be able to orchestrate them.
There are three big shots in this market AWS, Azure and GCP. You can learn either
of them. Although, most people recommend AWS, I do not have any opinion on
one over the other. However, if you are taking Microsoft route for DevOps, then it
is better if you focus on Azure. But learning any of these will give you required
Cloud Platform understanding to start your DevOps journey.
Once you have the above five foundational skills, you can start applying for entry
level positions in DevOps or be able to apply as an intern.
15. 6. Technical Skills needed
In this section, we will go over some specific technical skills that are needed for
DevOps roles. Although, the fundamental foundational knowledge will help you
get your foot into DevOps environment, you really need to have these technical
skills to work and excel in DevOps world.
Continuous Integration, Continuous Delivery and Deployment (CI/CD):
Most commonly known as CI/CD pipeline is a series of steps that must be
performed in order to deliver a new version of software. Although it is possible to
manually execute each of the steps in a CI/CD pipeline, the true value of CI/CD
pipelines is realized through automation.
Jenkins is the most widely used and the most powerful CI tool in the market at
this time. There are many other tools that you can use to achieve CI/CD, but the
most important thing is to understand the concept and value behind creating and
executing a CI/CD pipeline.
You need to know Git concepts, trunk-based development and familiarize yourself
with Jenkins or other similar tools.
Containers:
A Container is a standard unit of software that packages up code and all its
dependencies, so the application runs quickly and reliably from one computing
environment to another. It doesn’t matter on which server the containers are
running, they always run in the same way.
Containers are heavily used in building CI/CD pipelines. Therefore, understanding
how containers work, how to quickly create them, use them and dispose them
would be very essential for a person in DevOps role.
16. I would highly recommend learning Docker which happens to be the most popular
runtime environment for containers.
Container Orchestration:
Container orchestration automates the provisioning, deployment, networking,
scaling, availability, and lifecycle management of containers.
In most organizations the number of containerized applications is growing rapidly
and managing them at scale - especially as part of a continuous
integration/continuous delivery (CI/CD) pipeline is impossible without
automation.
17. Kubernetes is the most popular container orchestration platform, and most
leading public cloud providers - including Amazon Web Services (AWS), Google
Cloud Platform, IBM Cloud and Microsoft Azure - offer managed Kubernetes
services. Other container orchestration tools include Docker Swarm and Apache
Mesos.
I would recommend learning Kubernetes as it is by far the most popular container
orchestrator today.
Infrastructure as code (IaC):
Infrastructure as code (IaC) is the process of managing and provisioning computer
data centers through machine-readable definition files, rather than physical
hardware configuration or interactive configuration tools.
The IT infrastructure managed by this process comprises both physical
equipment, such as bare-metal servers, as well as virtual machines, and
associated configuration resources.
IaC is a key attribute for bringing DevOps culture in an organization. With IaC in
place, developers become more involved in defining configuration and Ops teams
get involved earlier in the development process.
Moreover, tools that utilize IaC bring visibility to the state and configuration of
servers and ultimately provide the visibility to users within the enterprise, aiming
to bring teams together to maximize their efforts. Isn’t that the main goal of
DevOps?
Terraform, Ansible and CloudFormation are some of the tools that promote IaC.
Learning either of them would bring tremendous value to your DevOps persona.
Software Reliability Engineering (SRE):
Site reliability engineering (SRE) is a software engineering approach to IT
operations. SRE teams use software as a tool to manage systems, solve problems,
and automate operations tasks.
18. SRE is a valuable practice when creating scalable and highly reliable software
systems. It helps you manage large systems through code, which is more scalable
and sustainable for sysadmins managing several machines.
Security:
It absolutely does help a lot if you have the understand at least of the type of
attacks involved in a system that you are designing. Besides that, basic
understanding of security is must for a professional working in a DevOps role.
Therefore, try to get some basic understanding of what role security plays in
securing system.
19. 7. Non-technical skills needed
DevOps Culture and Organizations:
DevOps is more of a culture than automation. DevOps is truly achieved not when
all the operations are automated, but it is truly achieved when the DevOps
culture is totally adopted by the organization.
A lot of programmers and sysadmins are technically competent, but they do not
totally understand the culture aspect of DevOps. It is very important for both
sysadmins and programmers to completely understand the culture aspect of
DevOps. The automation/technical part of DevOps is easy to achieve rather than
the culture aspect. Therefore, early adopters of DevOps spent majority of bringing
the DevOps culture in the organization.
Enough said about this, rather in reality this must be done by both Dev and Ops.
There are various books written on DevOps and most of them focus on culture
aspect. However, if you want to read only one book on DevOps, I recommend you
read ‘The Phoenix Project’ written by Gene Kim.
Communication:
By this point, it is evident that the aim of DevOps is to bridge the gap between
what the client ordered and what the development team has delivered. Of
course, there is emphasis on short release cycles, iterative approach to design and
automation of repetitive tasks.
But what do you think is most important to bring those to reality?
Yes! Communication.
If you have been working on a Silo until now and do not really communicate with
others. You need to develop the habit of opening and communicating with others.
Because DevOps is all about ‘great communication’.
20. Only with great communication we can achieve the true essence of DevOps.
Agile:
Agile is an integral part of DevOps. It is a set of principles that enables teams to do
continuous and short release cycles in a more efficient way. It embraces changing
requirements on the fly and improves communication with the customer and the
business.
There are various implementations of Agile like Scrum, XP, Kanban etc. It is good
to become familiar with the various implementations. Because we never know
what your future organization would be adopting to implement DevOps.
Lean:
Lean is all about keeping your process simple and not creating waste. It is worth
familiarizing yourself with Lean and value stream mapping and trying to apply to
your own work.
21. 8. Certifications and Resources
Certifications:
Certifications are not necessary for getting into a DevOps role. However,
whenever you learn any of the DevOps technical skills mentioned in the earlier
chapter. It is worth getting a certification of that skill to get a complete hold on
the skill. Also a certification gives the interviewers and potential hiring manager
credibility towards the skillset of the candidate.
Therefore, I recommend spending time and effort to prepare for the following
certification if you can. Although they are not necessary but nice to have.
1. AWS Certified Cloud Practitioner or Azure Fundamentals
2. DevOps Essentials by Pink Elephant
3. Certified Kubernetes Administrator
4. RedHat RHCSA
Resources:
Here I am listing all the resources that can be helpful for you to master the skills
required for being a DevOps Engineer.
• Beginner’s Guide to Linux
• Python Free Interactive Tutorial
• Networking Course on Udemy
• Git courses on Pluralsight
• QwikLabs for practicing Cloud services
• Play with Docker
• Git tutorial for Trunk Based Development
• Jenkins courses
22. • Learn IaC with Terraform
• Kubernetes Tutorials for beginners
• SRE books
• Building Secure and Reliable Systems
• Leaders eat Last – by Simon Sinek
• How to win friends and influence People
• The Agile Manifesto
• DORA website
• The Phoenix Project
• The DevOps Handbook
9. Conclusion
DevOps engineer positions are found across many tech companies, including
Amazon, Netflix, Facebook, and Adobe.
As of January 2018, there were more than 3,300 open jobs in DevOps, according
to Glassdoor. DevOps engineers came in no. 5 on the list of tech roles with the
largest share of job openings in Silicon Valley in 2018, according to Indeed.
Indianapolis, IN and Cleveland, OH were hot markets for DevOps jobs as of 2017,
according to Glassdoor.