If you’re new to the concept of Development Operations (DevOps) and/or if you’re thinking about implementing DevOps at your organization, it’s important to understand the fundamental concepts and foundation of what DevOps is built upon. In this article we’ll cover:
· What is DevOps?
· The Key Components of DevOps
At its most basic level, DevOps is a framework of concepts, that when applied, ultimately shorten the software development lifecycle within an organization. It has been widely recognized that manual processes and siloed teams are preventing organizations from delivering software that meets today’s demand for innovation and speed.
DevOps has evolved from Agile Software Development concepts and is unique because it bridges the gap between Development and Operations, two internal organizations that traditionally operate independently of one another.
It’s important to understand, that to truly optimize DevOps within an organization, you need to look at your organization wholistically. For DevOps to work at its highest level, people, processes, and technology need to work harmoniously. With that said, DevOps can be daunting and there are no issues with slowly deploying DevOps in areas of the business that will benefit the most.
The key components of DevOps spans your people, process and technology. All areas of focus must receive attention for DevOps optimization. One of the biggest problems we see is that organizations tend to want to focus on their tools only, but 75% say siloed team culture is a barrier to DevOps success.[1]
We’ve all heard the phrase “people are your greatest assets”, and it holds true when it comes to DevOps. One of the biggest challenges for an organization when adopting DevOps, is redefining the required roles and responsibilities, and getting broad acceptance of the new roles. The underlying idea behind redefining these roles and responsibilities is to break down traditional siloes and get the Development and Operations team to work as one cohesive unit with one common goal. This shift is also an opportunity to recreate a DevOps based culture. Below are some of the key roles that are now required to ensure your culture and people are not the roadblock to a successful DevOps implementation:
The DevOps Evangelist – creates a DevOps culture be clearly articulating the benefits of DevOps
The Release Manager – manages the product from development to production
The Automation Architect – integration specialist with a focus on automation and continuous delivery
The Software Developer/Tester – involvement in development, testing, deployment and monitoring
The Experience Assurance (XA) Professional – responsible for implementing changes that enhance user experience
The Security Engineer – works with developers from product inception to ensure security is built-in from the beginning
The Utility Technology Player – responsible for quality of service, resource management and infrastructure security[2]
Process is the thread that holds DevOps together. When applying process to DevOps, the goal is to create unity through well thought out workflow. While there are many processes involved with DevOps, and every organization’s processes might look different, there are common processes that you will always see in every implementation: Continuous Integration (CI) and Continuous Delivery (CD) often referred to as CI/CD.
· Continuous Integration is a build and test process that allows software developers to work on different feature-sets and independently commit code to a central repository on a frequent basis. The committed code should also be automatically tested. The goal of this process is to increase the rate at which developers commit code, while avoiding code conflicts across the development team.
· Continuous Delivery is a delivery process that allows DevOps to keep code in a deployable state and allows operations to deploy incremental releases into different environments at any time. A biproduct of CD is the opportunity for automation, a quicker feedback loop, improved testing and quicker to market software.
A key characteristic of a good DevOps process is that the process can be automated through technology tools.
When considering tools for DevOps, it’s important to refer back to the ultimate purpose of DevOps, to reduce the development lifecycle time through automation and elimination of silos between development and operations. Some of the most popular tools used to encourage collaboration and automate DevOps process are below:
1. Slack – Collaboration
2. MS Teams – Collaboration
3. Jenkins – CI tool
4. Docker – Containerization
5. Phantom – Security and Monitoring
6. Nagios – Infrastructure Monitoring
7. Vagrant – Collaboration and CI tool
8. Ansible – Configuration Management
9. Terraform – Infrastructure as Code Tool
10. GitHub – Collaboration
11. Sentry – Bug Detection
12. Bitbucket – Collaboration (code repository)[3]
[1] https://assets.dynatrace.com
[3] https://hackr.io/blog/top-devops-tools