Basically DevOps is not a tool or a job role but a culture where the engineers practice the best methods and use combination of tools to achieve speed and quality for delivering applications and services. After all the entire IT infrastructure is for serving some applications and it is a combined effort from different teams like developers, QA engineers, Systems Administrators, Network Engineers, Database Administrators, Storage Administrators and many more unsung heroes. With the introduction of so many tools – most of them are opensource ! – and methodologies, organizations started adopting DevOps culture in a rapid manner. And the demand for skilled engineers also increased.
Note: This is a living article and I may update anytime when I find something new or outdated.
Again, there is no such fixed skill set or syllabus for a DevOps engineer in reality. Some of the DevOps roles are more inclined to Developer skills like programming, automation etc. But some other DevOps roles need knowledge in System engineering, Network operations, Security and so on. So, as I mentioned in the first place, DevOps is a combination of skill-sets and culture. But there are some important skills you need to achieve to start your career as a DevOps Engineer.
Pro Tip : How to find the skills needed for a DevOps Engineer ?
Very simple, find DevOps engineer job listing, check the job description (JD) and required skills from multiple job postings; you will find the very common items and target those items. Other non-common items consider specialization or the area of expertise.
Anyway, here is a list you can refer to as a starter and add whatever we missed in the comment box; fine ?
As you know, most of the latest tools are widely available for Linux platforms (compared to Windows), Linux became the favourite choice for organizations and you should know how to handle a Linux Operating System. It can be any flavour – based on organization’s policy and choice – but understand the Operating System Core Concepts. Okay, I am not telling that, no one is using Windows for their DevOps tasks; but the tools are mostly running on Linux and some are only available for Linux ! (Like Ansible etc)
Pro Tip: If you are using a Windows workstation (or laptop), then install and switch to a Linux operating system (Ubuntu, Fedora, Centos, you choose it) for your day to day tasks. You will automatically learn how to manage the OS operations including file management, package management and the editing of files.
What should I do with Networking as a DevOps Engineer ? Well, one of the important concepts of DevOps is to give the freedom for engineers to manage their applications – end to end. You don’t need to wait for a Network Engineer to configure the connection or route for you; you should be able to understand and use the platform to deploy your application including the network part.
This is the era of virtualization and containerization; and as a DevOps engineer or as a DevOps practitioner, you should know the basics and usage of Virtualization software’s. Most of the time, we need a PoC or test environment to learn or test some new tools or features; something like you want to try a new version of the Operating System or new version of an application. And the easiest way is to use a Virtual Machine which is immutable and you can create or delete anytime. Tools like VirtualBox made our life so easy by providing the FREE virtualization software’s which we can run on our workstation or laptops. And also thanks to Public Cloud providers as most of them offer FREE or TRIAL versions by which you can access the public cloud for FREE and start practicing.
Since the application source code and configurations are handled by multiple engineers, there will be multiple copies of configurations and files. And it is important to keep track of these changes so that at any point of time, we should be able to switch to an older version; hence the Version Control systems were introduced. Organizations are using different tools for SCM and VCS and it is important for you to learn the concepts and operations.
Tip : Learn How to Build Your Own Git Server using Gogs
Wait, I am not a programmer ! doesn’t really matter, you need to understand the concept of Software Development and the best practices; skip this point if you are already a programmer.
Okay, I don’t need to explain about the importance of Security in IT and application infrastructure. Because of the increasing amount of Cyber attacks and threats around, Security plays the key role in an application and entire IT infrastructure.
Containers are the default platform for applications now because of easiness, portability and wider support. You need to learn how containers are working and how you can containerize an application. Install docker or other tools on your workstation and start practicing today.
Automations is the key for DevOps methodologies; you need to automate whatever possible tasks which you are doing now manually. It can be provisioning of Infrastructure, creating a VPC or subnet, creating a cluster or container, installing packages, deploying applications, doing QA testing and more. And when you integrate the automation with other tools the entire DevOps workflow will be completed.
Developers push the code to a repository and you get the latest version of the application on production ! It is not a dream anymore; with CI/CD and automation tools organizations are publishing multiple versions of applications in a single day with almost all automated. (Again, automation will not destroy your job, organizations still need engineers to automate things !).
Okay, now you have your infrastructure and application ready and users are using it. What if something goes wrong ? Yes, we need to learn how to monitor our application and infrastructure and this task may assign to you as a DevOps engineer !
Wait, this is not the complete list and also you don’t need to learn all these technologies. Plan your learning path based on your current skill set. Eg if you are a developer, try to learn more on infrastructure and operations, if you are a system engineer then learn about the application workflow and how to deploy applications.
Questions ? Please ask in the comment box.
All the best.