It can take a while to get your head around DevOps. Is it a set of tools? Is it continuous integration and continuous delivery (CI/CD)? Is it using containers running on virtual machines in the cloud? Well, it can include all of these, but that’s not what DevOps ‘is.’
At its core, DevOps is about automation across the software development lifecycle, integrating both the development and operations functions instead of having these exist as solo activities.
If you’re in software development, then knowing what DevOps is, as well as being able to put it into practice, is essential. Why? Because ‘doing DevOps’ helps produce better quality software that can be delivered at a faster rate than traditional development.
It allows developers to concentrate on coding software, rather than other associated activities, like configuring it for different system architectures, or waiting around for it to build.
People, processes, and technologies
Heard the phrase ‘people, processes, and technologies’ before? It’s about balancing and evolving these three organisational pillars when you’re undergoing digital transformation. And yes, to do DevOps effectively, you need to upgrade and sync all three. Transitioning to DevOps is a type of digital transformation.
Let’s dive into some core DevOps practices in each of these categories.
People: Teamwork makes the (DevOps) dream work
Doing DevOps requires project teams to interact fluidly, with developers working alongside DevOps staff – or actually creating and configuring processes and technologies themselves, as well as developing the software.
“The right DevOps culture requires communication and collaboration from both developers and DevOps teams. To work effectively, with a shared vision, the team needs to be united and work together. As Sun Tzu says, “Harnessing the power of teams to achieve objectives is a wise use of energy.””
It’s recommended to use Agile team configuration and collaboration to achieve this unification. Agile values individuals and interactions over processes and tools, with team autonomy a key principle.
“By applying Agile practices, teams can focus on improving the end-to-end delivery of a product effectively. Because the team is accountable, there won’t be role-based silos and individuals can come together and collaborate well.”
Check out our How to Make the Agile Methodology Actually Work guide for more info.
Processes: Your systems need work
To shift from traditional software development to using DevOps requires a lot of work in changing and automating the processes behind the planning, creation, building, testing, packaging, releasing, and monitoring of the software. There’s even security and compliance activities across the process to create, too – a practice known as DevSecOps.
How can you achieve this? Most companies start by taking a piece of the puzzle, such as testing, and automating it first – continuous testing is DevOps done right. They then work piece by piece, changing practices when a better (faster/quality-enhancing) solution comes along. Once you have a full pipeline developed, it can be automated between phases, and reused in each project, swapping in and out components as necessary.
“Be open to investing in improving the deployment process. It always costs more upfront to automate manual toil. But the benefits pay off the initial investment many times over.”
“Treat environments as cattle that can be replaced, rather than pets that need to be cared for. This can be achieved through implementing Infrastructure as Code.”*
“Always be open to learning new technologies and practices.”
*Infrastructure as Code is essential for DevOps. This involves, for example, coding a container for Docker by specifying the configuration, or coding a new network design in Terraform.
Technologies: How serverless computing enables DevOps
Serverless cloud computing (aka Function as a Service or FaaS) allows you to run applications at a click, without needing an on-site server yourself, or even a server (or virtual server) that you’ve configured in the cloud.
“In the case of AWS Lambda, physical hardware runs a virtual machine (EC2), which then runs an operating system (e.g. Linux), which then runs a container (Firecracker), which then runs a runtime, and finally that runtime starts executing your code. A whole lot of other load-balancing and scaling magic happens in the Lambda control plane, but you never see or need to deal with those complexities.”
“Serverless isn’t 100% serverless, or even close. There are still servers, virtual machines, operating systems, containers, and runtimes, you just never have to manage them.”
How does this fit into the DevOps ecosystem? Instead of developers or system admins spending time configuring resources, it’s just click and go – or code can automatically run on Lambda when triggered by another event, with the right Infrastructure as Code or handoff from another AWS service. This cuts out precious time that is better spent on development.
Beyond this, benefits include “availability, scalability, no operational overhead for managing concerns below your layer, immutability, encouraged statelessness at the architectural and code level, cloud-native service integrations, and a completely code-defined environment.”
Technologies: AI for powerful automation
Just like AI is becoming a revolutionary tool for business practices, it’s also helping developers do DevOps better.
“AI is able to accelerate DevOps processes by automating tasks we didn’t feel we were able to automate. The most basic example of this is in monitoring: instead of sitting down to determine a set of pre-defined thresholds for a metric we’re looking at, we can simply drop in a model of expected behaviour and allow it to determine what is acceptable future behaviour.”
This type of AI can be applied specifically during the testing and monitoring phases of the software development lifecycle. Thorough software testing is always tricky – but with AI at the wheel, the process can be automated and sped up.
AI is also able to help teams who may be interested in transitioning to the NoOps paradigm. NoOps is a term used to describe removing the operations function from your software development. However, in practice, it generally involves using cloud-based services (like Function as a Service and Platform as a Service) along with their operations teams to do the heavy lifting for you.
“The direction towards AI doesn’t result in pure NoOps, the operations function will still exist within your operational boundary and you’d still own it, however now it’s simply being performed by an AI instead of a human team.”
Ready for your new role?
Ready for a role in a team who are doing DevOps, or in the process of conversion? Check out job opportunities at some of Australia’s top companies: