You might have heard of the term DevOps and noticed an increasing demand for skills that seems to reference it. Wikipedia has a concise way to explain “DevOps”:
DevOps is a software engineering culture and practice that aims at unifying software development (Dev) and software operation (Ops). The main characteristic of the DevOps movement is to strongly advocate automation and monitoring at all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. DevOps aims at shorter development cycles, increased deployment frequency, more dependable releases, in close alignment with business objectives.
Source: https://en.wikipedia.org/wiki/DevOps
From the business perspective it is a set of technical and non-technical best practices to achieve quicker software releases without compromising on quality and stability. Does this desire to achieve more frequent software releases have any impact on the goals of the business regardless of the sector i.e. does it matter if we are not talking specifically about technology companies? It does because we are accelerating into the world where every organization regardless of size and sector is relying on software for critical internal operations and customer facing products so the ability to innovate and release software quicker than the competition has proven impact on the revenue and growth.
Companies that excel at DevOps interactions are 11 times more likely to see double-digit annual revenue growth. It doesn’t stop at revenue growth either. According to EMA, 49% of organizations also agree that accelerated delivery frequency leads to higher customer satisfaction. And 35% find it enables them to be more agile and competitive.
Source: https://dzone.com/articles/study-reveals-how-devops-grows-revenue
Hopefully by this point you have established the importance of the business case for embracing DevOps and want to understand what would be a recommended technical path for someone looking to getting involved professionally. Please consider below a very opinionated set of recommendations based on a combination of free and paid online resources mostly in the form of self paced courses. Your journey may vary based on your current familiarity with some of these topics and by no means is it exhaustive since the technology landscape around DevOps is expanding into new areas.
- Learn Linux since most of the DevOps/Cloud infrastructure is based on it instead of Windows:
- Complete this free online course on Linux provided by Cisco: https://www.netacad.com/campaign/linux-essentials3
- Download this free ebook. No need to read this whole ebook but keep it as reference and maybe skim through the topics and chapter intros: “Linux Command Line”: http://linuxcommand.org/tlcl.php
- After you feel comfortable with Linux command line basics it is time to move on to learning more about the “Cloud” and related technologies:
- Complete this free online course on “Introduction to Cloud Infrastructure Technologies”: https://www.edx.org/course/introduction-cloud-infrastructure-linuxfoundationx-lfs151-x
- Above gives you theoretical introduction to cloud but it is recommended you now gain practical experience with the most popular public cloud i.a. Amazon AWS:
- Complete free online course on AWS basic concepts: https://linuxacademy.com/cp/modules/view/id/84
- Complete “AWS Essentials” course on Linuxacademy which includes practical expose to using AWS. You will need to upgrade to a monthly paid version of Linuxacademy to access this course but it is highly recommended since it gives you access to all premium courses on the site: https://linuxacademy.com/cp/modules/view/id/91
- By this point you have expose to AWS but you are doing things manually so far. DevOps is all about automation so at this point it is good to complete this fairly short course on using Terraform to automate all of the manual AWS console interactions and Ansible to automate the Linux system configuration and setup: https://linuxacademy.com/cp/modules/view/id/104
- CI/CD (Continuous Integration / Continuous Delivery) : These are key DevOps disciplines for automated, frequent and reliable software releases.
- Read about how Git compliments agile software development: https://www.atlassian.com/agile/git
- Complete free online course no how to use Git and Github: https://in.udacity.com/course/how-to-use-git-and-github–ud775
- Jenkins is arguable the most widely used open source CI/CD tool and this Linuxacademy course will help grasp the key concepts along with some practical labs: https://linuxacademy.com/cp/modules/view/id/118
- Docker and Containers
- Some of the content in intro to DevOps above would have already introduced you to the idea of Linux containers and Docker but below are practical ways to learn this technology further:
- You can do all of the free courses directly in the browser in a simulated command line: http://training.play-with-docker.com/alacart/ (ONLY do the ones under “Beginner” and skip any of the labs with “Windows” in the title)
- Try redoing these tutorials by installing Docker on your local machine or cloud VM (linux environment)
- “Kubernetes” is the most dominant Linux container orchestration technology which is being rapidly adopted by organizations. Complete this free online course on Kubernetes: https://www.udacity.com/course/scalable-microservices-with-kubernetes–ud615
- Some of the content in intro to DevOps above would have already introduced you to the idea of Linux containers and Docker but below are practical ways to learn this technology further: