A Transition Guide from System Admin to DevOps Engineer
Ever since DevOps concept was introduced in the market, its use is on the rise. As businesses across the world have accepted this fast methodology for software development with open arms. Due to its acceptance worldwide, DevOps offer many attractive jobs that are yet to be filled. Companies are looking for professionals, who are experienced enough to introduce DevOps in their organization. Lack of skilled professionals is the main dilemma of this philosophy.
Be it a system admin, programmer or any other professional who can work in software development process has its place in DevOps. But before you make a switch, it’s vital to analyze yourself that as a system admin, developer or QA professional your skills are fully compliance with needs of DevOps industry.
During my past few years, I have worked with quite a few excellent system admins in various projects and I understand that some of them would like to transition to DevOps roles. In this post, I will try to explain what attributes a system admin should have in order to make a successful switch towards DevOps.
Difference between System admin and DevOps Engineer
Traditionally system admin job is limited to configuring, keeping up and maintaining servers and computer systems. Usually, system admin has no role in the development process of software and there is a huge fence separating system administrator and developer. System admin role has been around for quite a while now, with tasks and responsibilities well defined.
DevOps is a different approach, it’s creating a pipeline of development, QA and system admin to overcome the lack of coordination. In DevOps, the whole team has an overlapping role throughout the product development lifecycle, a developer will perform tasks in production, while a system admin will look after things during the design phase of the product.
There is no formal definition of DevOps engineer, it’s a complex role and is believed to be one of hardest role to be filled and kept with success.
DevOps professionals are programmers who get interested in deployment and operations over time, or system administrator who also knows the coding, and move into the development phase where they can improve the planning of test and deployment. DevOps engineers are people, who have pushed beyond their defined areas of competence and who have a more holistic view of their technical environments.
System Admin Skills which are transferable to DevOps Engineer
DevOps negates the “throw it over the wall mindset”, where developers do their job, and system admins do their sole job. DevOps breaks teams and departments into one single unit, with the overlapping role. It’s important to understand that nothing beats the experience, adopting “DevOps” to reduce staff and save money to increase revenue will have a negative impact.
There is an overlap of skills between system admin and DevOps Engineer. A report from School of DevOps lists top 9 skills which companies are looking for these days
It can be easily seen that some of these skills such as scripting, OS admin, and monitoring are already possessed by system admin, some are not.
New Technical Skills Needed for System Admins to get into DevOps
System admin traditional approaches (with some changes) are still valid for DevOps. A DevOps engineer needs to apply his skills to entire life cycle of product development. He must be familiar with cloud services and the state of the art automated tools and finally, he must be able to collaborate with other members as well.
Following are some key things which a system admin should have in order to become a DevOps engineer
The most important aspect about DevOps is Continuous Integration (CI) which is a software development practice, CI allows developers to continuously update changes to a single repository, from where automated builds and tests are made.
Usually, traditional system admins roles do not involve developing continuous integration pipelines, but if you are looking to dive into DevOps, getting hands-on experience with continuous integration tools is a must.
There are different products and tools which can help you implement Continuous Integration in your organization. Some tools let you host the CI servers in your own network infrastructure. The most popular one is Jenkins which is rebranded from the Hudson project of Sun. There are some other hosted CI products such as CircleCI and Travis CI which is completely hosted in the cloud.
Majority of DevOps projects are cloud hosted. As a DevOps engineer, you must be able to configure servers and services relating to Amazon Web Service, MS Azure, Google Cloud and other cloud hosts. Apart from that you should also be familiar with cloud services like Software as a Service (SAAS), Platform as a Service (PAAS), Infrastructure as a Service (IAAS).
As DevOps engineers, you must be familiar with configuration management tools like Puppet, Chef, Salt or Ansible. They all are built to make it easier to automatically configure and maintain hundreds, or even thousands of servers. These all tools helps in automating various process, which is one of main feature of DevOps.
System admin role is around for quite a while with tasks and responsibilities well defined. DevOps is a different approach, it’s creating a pipeline of development, QA and system admin to overcome the lack of coordination.
Some of DevOps skills such as scripting, OS admin, and monitoring are already possessed by system admins. But there are still a few key skills which a system admin should have in order to become a DevOps engineer such as hands-on experience with some popular continuous integration tools, cloud computing, and configuration management tools.
ABOUT THE AUTHOR
James Lee is a passionate software wizard working at one of the top Silicon Valley-based start-ups specializing in big data analysis. In the past, he has worked on big companies such as Google and Amazon. He also co-founded Level Up.