If you a developer, system admin or a new engineer looking for a shift to this career as a DevOps engineer? If so, read this article to understand what it takes to become a DevOps engineer regardless of any background you are coming from. Follow the 2020 DevOps Engineer roadmap and get your hands dirty in the defined skillset, because as per today’s trend Cloud & DevOps technologies will make you stand out from the crowd and starting a DevOps career is not easy but also it is not so hard from my perspective.
During the initial years of my career, I have worked in “Code Deploy and Automation” that how it was called before the word DevOps coined in the IT industry. The point here is, what technology looks like today is not what technology looked like 10-15 years ago or vice versa and Continuous learning in this field is the only way to progress upwards in your career.
Let us jump into the learning path on how to become a DevOps engineer.
Understand what is DevOps?
In short, DevOps is a culture that brings development (Dev) and operations (Ops) together to shorten the development life cycle and provide continuous delivery with high software quality. Start with the below link to understand DevOps concepts and explore more about DevOps foundational concepts.
- What is DevOps?
- The lifecycle of DevOps?
- DevOps Tool List
- How do you implement DevOps in your organization?
- DevOps roles and responsibilities
- Continuous Integration and Delivery Process?
Learn what is Agile Methodology
Today many organizations have succeeded in implementing agile methodologies to speed up & deliver working software frequently, in a sustainable manner. Among all of the Agile framework, Scrum is most popular framework and widely adopted across many organizations. Following are some of Agile methods and frameworks for your reference
- Scaled Agile Framework – SAFe
- Feature-driven development (FDD)
- Lean software development
Learn what is Software release cycle and management
Explore software release management processes that will help in understanding the planning, scheduling and controlling of the software development and delivery process. Also, The release processes may vary for each organization, following are the primary steps to release management and explore more on this topic.
- Plan release.
- Build release.
- User acceptance testing.
- Test release.
- Deploy release.
Learn to Code
A key element of DevOps is automation. All manual tasks within DevOps can be automated by using scripting languages like Go, Python, Rust, Bash, Shell. Learn one language in specific and other languages you can easily adapt by knowing the syntax.
Learn Operating System Concepts
Linux and any other operating system is an essential component of operations and you cannot become a true DevOps professional without knowing Linux. Explore any Linux distro (Linux, Ubuntu, Centos, RHEL) that will ease your daily operations. Some of the Essential OS concepts which you should be knowing in Linux are
- Boot Process: System startup, Stage 1 boot loader, Stage 2 boot loader, Kernel, Init
- Process and Process Management
- Linux Signals
- Threads and Concurrency
- Memory Management
- Inter-Process Communication
- I/O Management
- Distributed File Systems
Learn Version Control Systems
Version control is always important to have a clear track of what version has been deployed in your environment say it can develop or QA or UAT or Staging or Performance or Production environment. Also, we can avoid conflicts when there are multiple contributors to a single project. My preferred choice will be following version control tools Git, GitLab, BitBucket
Learn Build Integration Tools
Build tools generally transform source code into binaries – it organizes source code, manages dependencies, project’s build, reporting, and documentation. Learn about Gradle & Maven on how to automate the creation of executable applications from source code.
Learn Continuous integration tools
To become a DevOps champion you have to learn Jenkins, as it is the most widely used and probably the most sophisticated CI/CD tool in the market. One line Definition: Jenkins is an open-source automation tool written in Java, which helps to automate the development process with continuous integration and continuous delivery.
- Checkpoint (cloud bees only at this point)
DevOps Security (DevSecOps)
SecDevOps is about moving security checks earlier in the DevOps life cycle of application development, rather than doing them randomly before an application release. Its main goal is to and minimizing security vulnerabilities earlier stage before application release. Explore more on What does shift left implies in DevOps?
Learn Artifact managing tools
Artifacts management tools are used for storing binary packages that are created throughout the build process. Artifacts repo will store the version, binary artifacts and metadata in a defined directory structure which will be used by clients such as maven … etc, to retrieve binaries during a building process which will reduce the time spent downloading dependencies from public places.
Explore about Nexus and Jfrog artifactory to know the artifact management.
Learn Networking Concepts
Networking expertise is not mandatory for all DevOps team members because not all DevOps initiatives do require networking personnel. In other ways, the DevOps team cannot scale if they require a networking specialist for each team and in some cases, they require only some period of time and roll off. So it is better to have a basic understanding of networking concepts basics and move forward step by step to an advanced level based on your interest. Some of the concepts listed below you can start with
- OSI model and TCP/IP
- Routing – Bridging and NAT
- Firewalls and ports
- basic utils – netstat, ping, mtr, nc, ip
- How High Availability/Failover works at a network level
- SSH port forwarding
Learn Cloud service platforms
The data centers are virtualized into one shared pool of resources which can be intelligently and automatically orchestrated. Undoubtedly it will fit today’s dynamic business environment (Pay per use). Below is some of the most popular cloud provider list and you can choose one which maps with your fundamental skill and start learning.
Learn IaaS (Infrastructure as a Service)
Infrastructure as service or IaaS as the name suggests it is a basic layer in the cloud computing model that provides you the basic computing infrastructure. You require IaaS knowledge to get started as a DevOps Engineer.
- VM infra provision (Create/Delete)
- VPC, firewalls, load balancers, IP addresses
- cloud storage services
- Snapshots & Images
- Understanding AV zones
- Etc …
Learn PaaS (Platform as a Service)
Platform as a Service or PaaS provides a platform allowing end-users to develop and manage applications without the complexity of building and maintaining the infrastructure. Learn any one container orchestration platform from Google or Amazon or Azure to understand the core and learn other Paas services based on your fundamental skill and cloud provider.
- Google Kubernetes Engine
- Amazon Elastic Container Service for Kubernetes
- Azure Kubernetes Service
- Google App Engine
- AWS Elastic Beanstalk
- Azure App Services
- Amazon DynamoDB
- Azure Cosmos DB
Understanding service mesh is important because the world is moving around loosely coupled microservices architecture. We will have challenges on how we are going to deploy, secure, connect, manage and control the microservices seamlessly. The following are the popular list in service management and the best option to start your learning with Istio.
Learn Monitoring & Logging Tools
If you are setting up your DevOps infrastructure, We have to have better monitoring to observe how application and infrastructure are behaving, Detection and alerting when some things go wrong, Majorly useful to debug and gain insight on production issues. For logging, Fluentd, ELK, Loggly should work and for Monitoring Prometheus, Istio Telemetry should work. Start with the below tool list and narrow down based on your requirements.
Cloud Design Patterns
The below cloud design patterns infographic explain the most common problems in the designing and architecting cloud-hosted solutions in the cloud. It also offers guidance to help you design a better application and solutions in the cloud. It is not mandatory, but good to know these concepts…
Basic Security for your Cloud Infrastructure
Security is mandatory for both business and personal users (Google “2019 data breach statistics” will give you a glimpse of the importance of security). Strictly there’s no room for poor practices in allowing a loophole in security which might compromise the ability of your IT infrastructure to prevent security threats. Explore with this following “Basic Security for your cloud Infrastructure” keyword in google and learn the best practices used across the industry to secure the cloud infrastructure.
You cannot become an expert on any technology overnight. My advice is to constantly learn and practice on the defined roadmap which is listed above, that is the only way to become a DevOps Champion. Again tools are different from skills, so while learning the tools, please give focus on getting experience with implementation and troubleshooting areas.