A breakdown of the myriad skills, platforms, and credentials that will help you succeed in the red-hot field of DevOps engineering.
What is DevOps, and why is it smoking hot right now?
DevOps is a combination of the words Development and Operations. An approach to software development with roots in Agile, DevOps breaks down the walls that separate the software development side of IT from the operations side. DevOps has many goals including improved communications between software development and IT operations staff, and the better, faster creation of applications that are immediately fit for production use.
DevOps is hot due to its proven competitive business advantages. “High-performing organizations [in this context, organizations that use DevOps] decisively outperform their lower-performing peers. They deploy [software] 200 times more frequently, with 2,555 times faster lead times, recover 24 times faster, and have three times lower change failure rates.” – The Puppet 2016 State of DevOps Report.
To prepare for a career in DevOps, learn what skills are in greatest demand, the tools and technologies you should master, and the certifications that can show employers you measure up.
“While DevOps skills differ according to the primary role of the team member, a spirit of communication and collaboration are embraced by all who want to be successful,” says Tim Platt, vice president of IT business services, Virtual Operations, LLC.
DevOps engineers are proficient in some or all of the following stages in the DevOps pipeline for developing software. The pipeline typically starts with automated software builds, then moves to continuous integration, automated testing, and continuous deployment. The pipeline and its stages can vary greatly from one DevOps shop to the next depending on the scope of the software and the goals of the organization.
DevOps engineers working with the automated software build process compile the software’s source code into binary files and test the resulting binary package to detect early-stage coding errors and security vulnerabilities. In the continuous integration stage, developers add new features to the software’s code base, build the software, and test it using unit tests. In the testing phase, engineers check the software using functional and performance tests to ensure that it is fit for deployment. Developers then deploy the software to a staging environment that includes elements of the operations environment and monitor its behavior before they release it to production.
There are many criteria to help you decide what tools are right for you, including the kind of product support you’ll receive, whether the tool is proprietary or open source, and whether the vendor delivers it as a SaaS or self-hosted product. Above all, you will need to know whatever tools the DevOps shop you work in – or wish to work in – uses and requires.
To orchestrate DevOps, developers define infrastructure as code using configuration management tools such as Chef, Puppet, and others. Treating infrastructure like code enables developers to scale and change the underlying infrastructure as efficiently as they make the applications they are developing.
DevOps engineers use build automation products like Jenkins, Ant, Gradle, and more to build and test the applications they will improve and innovate. Continuous Integration (CI) tools including TravisCI, TeamCity and many others enable DevOps engineers to add innovations and features to the primary application code.
Testing tools such as Selenium, Calabash, and Cucumber enable DevOps engineers to confirm application stability before moving the software from production-like staging environments into operations.
Continuous deployment tools such as AWS CodeDeploy and CircleCI which deploy applications to production, have a good deal of market share and high marks from users, though these are only two of several continuous deployment tools that you could learn.
When the vendor of a popular DevOps tool offers a certification, it means something. Puppet, a leading configuration management tool, provides the Puppet Certified Professional certification. Chef and other configuration management products offer their respective certifications, as well, which demonstrate mastery of the given product.
The Certified Jenkins Engineer designation can be useful as developers often apply Jenkins to build automation and continuous integration. The ANT+ Product Certification is available for engineers working extensively with ANT. There is a DevOps Test Engineer Certification for engineers specializing in test automation.
You will typically find DevOps training and certification information for each vendor product at the vendor’s website. There are DevOps certifications and prep courses for many tools from the Linux Academy, RedHat, and other organizations, as well.
As Marc Andreessen, Co-founder and Partner, Andreessen Horowitz said, “Software is eating the world.” Paraphrasing Marc, in brief, every company is becoming a software company. While software is at the heart of every company’s future, DevOps is increasingly becoming the core of software development, cementing DevOps’ future.
According to Prem Chandrasekaran, vice president of software engineering, Barclaycard, “DevOps is going to become mandatory for an engineer’s success. Organizations that fail to embrace DevOps will find it hard to remain relevant.”