By now, every IT professional in a software development organization has heard of DevOps. Though the definition can vary greatly depending upon the source, DevOps – at its core – is meant to break down silos and increase collaboration amongst development and IT operations folks to improve the software development and delivery processes.
Through the use of Agile development practices typically associated with DevOps, an organization equips itself with the ability to deliver application and infrastructure changes with greater frequency and without sacrificing quality. With that said, moving toward DevOps requires personnel with certain skills to help facilitate the transition and implement these practices appropriately. In many organizations, these people are actually known as “DevOps engineers”, and they are often converted from traditional IT career paths.
Below, I discuss the skills necessary to make the move from the role of System Administrator to a role in DevOps. As is true with most traditional IT roles, a quality SysAdmin likely excels in several areas that make up critical aspects of a DevOps professional’s skill set. But, along with this common ground, it’s crucial that a System Administrator acquires new skills (which held less importance in their previous position) to achieve success in a DevOps role.
The responsibilities of personnel in DevOps
DevOps engineers, or those working as part of a DevOps-minded team, hold a wide range of responsibilities within a software development organization. They work with developers and members of IT operations to help facilitate and implement efficient processes for application development and delivery.
DevOps personnel hold a holistic view of their organization’s environment and require an understanding of every aspect of the software delivery process. DevOps-minded engineers have familiarity with the processes and tooling for version control, automated application builds, automated testing, application deployment, server configuration, server monitoring, etc.
Essentially, those in DevOps see the big picture. They have a high level of comfort working with the technologies that drive the application delivery process within their organization. Additionally, they have the capacity to analyze and resolve operational challenges that could hinder their organization’s ability to streamline deployment processes. Obviously, there’s a lot that goes into DevOps and the responsibilities maintained by a DevOps-oriented engineer – more than can be uncovered in this space.
For a more detailed look at the DevOps methodology and the best practices that DevOps professionals work toward each day, consider resources such as The DevOps Handbook and The Phoenix Project.
The evolution from system administrator to DevOps
So how can a system administrator position themselves to find a home in DevOps? The answer involves leveraging the relevant skills they already have while increasing their capabilities in other aspects critical to success in a DevOps role. Consider the following skills necessary for a SysAdmin’s transition to DevOps:
Coding and scripting skills
Despite the fact that a SysAdmin is not a developer, it will help to have some coding knowledge and experience to make the career transition into DevOps; particularly in DevOps-friendly languages such as Python or Ruby. DevOps teams embrace automation and that means an abundance of effort will be put into writing scripts for traditionally manual operational processes such as server configuration and application deployment. Many system administrators may already have relevant experience in this area, including experience with popular platforms that support this type of automation, such as Ansible or Chef.
An understanding of the development lifecycle and CI/CD practices
This is a big one. Every member of a DevOps team should have a thorough understanding of the application development lifecycle and the CI/CD practices that help drive the time-efficient development of high-quality systems.
Traditionally, application development was likely presented as more of a black box process to a professional on the operations side. Only once development was completed would operations be called upon to perform the necessary configuration and deployment duties. In DevOps, this won’t be acceptable.
Understanding the iterative process employed by development teams is critical to a team member’s ability to attain the holistic view necessary to assist in facilitating DevOps throughout the organization. Additionally, those transitioning to DevOps will likely find themselves heavily involved in the construction and maintenance of CI/CD pipelines for active projects. This means delving further into the development side than a typical SysAdmin may be accustomed; thus increasing the importance of familiarity with the DevOps model for application development and the CI/CD practices to go along with it.
In addition to understanding the concepts associated with CI/CD, a quality DevOps professional will need to familiarize themselves with the CI tools that are used to help put in place cutting edge application lifecycle techniques. These tools facilitate the implementation of automated build, testing and deployment jobs to help drive a more efficient development process. Popular CI tools include Jenkins, Travis CI and Bamboo, to name a few.
An understanding of forward-thinking deployment strategies
A cornerstone of CI/CD is the more frequent delivery of code changes to production environments. Since this means deployments will be occurring with greater frequency than ever before, an effort must be made to ensure that application downtime is kept to a minimum. Therefore, DevOps engineers (as those tasked with implementing these practices) must fully understand the most effective ways to deploy applications while minimizing downtime.
In short, system administrators with a desire to transition to DevOps should familiarize themselves with safe and efficient deployment strategies such as canary deployments and blue-green deployments.
Experience with application containerization and IaaS
Most SysAdmins transitioning to DevOps in today’s development climate are likely to deal with deploying and supporting containerized applications that run on cloud-based infrastructure. This could occur immediately upon their introduction to the role or shortly thereafter. Thus, ensuring success in a DevOps role will be much easier if the individual has an understanding of the practices involved in containerizing an application, as well as some level of familiarity or (even better) practical experience with popular IaaS platforms such as AWS or Microsoft Azure.
In addition, when working in these environments, container monitoring will be an important aspect of preserving and improving application quality. So, it can’t hurt for an aspiring DevOps professional to be familiar with various monitoring solutions that assist in the collection and analysis of container performance metrics.
Making the leap from SysAdmin to DevOps
Like many career transitions made within the same industry, the role of a system administrator has a bit of overlap in responsibilities and experience with that of a DevOps-focused engineer. Many SysAdmins will already have experience with scripting and may even have a level of familiarity with the technologies and platforms for automating application deployment, server configuration, etc.
The trick will be for a SysAdmin to leverage relevant experience to make themselves a valuable candidate while working to close the gaps in knowledge elsewhere. Just as all IT professionals learned to work with the concepts and technologies required for past jobs, mastering the responsibilities of a DevOps engineer will require putting time and energy into cultivating the skills related to the methodologies and tooling that will be utilized going forward.
Simultaneously building visibility into the development and alerting process can help both DevOps-minded engineers and SysAdmins diagnose and remediate incidents faster. Sign up for a 14-day free trial or request a personalized demo to see how VictorOps can drive lower MTTA/MTTR and make on-call suck less.
About the author