DevOps is an IT delivery method that brings development and operations departments closer together by combining individuals, tools, and working practices. With DevOps, teams boost the efficiency of applications and service development, and can cultivate a more responsive process in managing the IT infrastructure. They can also deploy IT products at a pace that aligns with today’s marketplace, and update them as required to maximize performance.
DevOps plugs the gap between software development (Dev) and operations (Ops) in IT. Developing software involves creating code to power applications, and IT operations focuses on bringing those applications to end users with any maintenance necessary.
DevOps spawned from two past trends: agile development and lean manufacturing. Agile development revolves around completing work in brief sprints and fast iterations to achieve more responsive processes. Lean manufacturing aims to reduce waste as much as possible and increase productivity among factory workers.
As a result, DevOps offers a solution for a bottleneck issue resulting from agile development: with developers creating fresh software or key updates more frequently, traditional ops teams will find it more difficult to test software and launch it as fast as they need to. That means rapid development can lose the value that makes it so attractive in the first place.
Essentially, the agile movement led software design and construction to become more flexible — but it didn’t cover the entire software development lifecycle (also known as SDLC) into the deployment stage.
Ultimately, DevOps as an approach is intended to facilitate ongoing improvements, transparency, and worker collaboration. It promotes a holistic view of IT operations, regarding value: the aim isn’t to centre on individual silos but the whole process from conceptualization to product launch. It makes every stage between those points run more smoothly to achieve better business value in less time. DevOps teams that perform to a high standard don’t just enjoy quicker iteration and deployment of code: they also bring products to market in less time, with less bugs and a stronger infrastructure.
We’ve covered the basic ethos of DevOps in this introduction, but beginners asking “what is DevOps?” will want a more detailed explanation. Below, we’ll explore the most important concepts in DevOps and look at key points of entry if you want to incorporate DevOps into your business.
The Creation of DevOps
The birth of agile development occurred in 2001, with the publication of “Manifesto for Agile Development”. This document was the work of more than 15 developers and promoted four critical ideas:
- Putting individuals and their interactions above tools and processes.
- Working software above in-depth documentation.
- Collaborating with customers above negotiating contracts.
- Being responsive to change above sticking rigidly to a plan.
By bringing this concept to fellow developers, this team challenged the traditional waterfall development method: that’s strictly sequential and involves incredible amounts of documentation, with explicitly defined processes, roles, and tools. Teams embracing agile development started to achieve faster software iteration, responding quickly to fluctuating needs and situations. But operations teams found working at a new pace more difficult.
This led Patrick Debois and Andrew Clay Shafer to start exploring the complexities of integrating the agile methodology into IT infrastructure in 2008. One year after they began, the pair were ready to share their discoveries. Debois spoke at the inaugural devopsdays in Belgium — and brought DevOps into the mainstream.
Later, DevOps proponent and author Gene Kim offered valuable insight into three core DevOps principles:
This encourages a holistic IT approach that incorporates developers, infrastructure managers, software testers, and software consumers. It places emphasis on the whole system’s performance rather than that of one work silo or department exclusively.
Feedback Loop Amplification
Gene Kim promoted shortening feedback loops, and amplifying them, to ensure corrections can be implemented in an ongoing product-improvement process.
Ongoing Learning and Experimentation
While the Agile Manifesto places considerable value in collaboration and responsiveness, the DevOps approach values continual refinement. Teams should consistently identify better working processes to achieve their best. Organizations should aim to build a culture that cultivates ongoing experimentation, risk-taking, and learning from mistakes. This will help them recognize that becoming the best requires consistent practice and repetition.
DevOps cultures are built on multidisciplinary teams that continuously create fresh features and new services, then deploy them in a timely manner. Developers are required to maintain their code, so they can fix incidents in less time and are motivated to make their software more reliable. On top of this, DevOps teams focus on a whole product’s lifecycle instead of the individual projects assigned to them (e.g. adding a new feature or component).
This methodology, sometimes referred to as “products not projects” can help IT align better with business value: it prioritizes work that benefits both the company and end users. This leads to higher adoption rates, improved consumer loyalty, and — crucially — increased revenue down the line.
How is DevOps Different from Agile?
DevOps extends agile principles from the development of software to its deployment. The Agile Manifesto promoted better methods of software creation that helped teams work more efficiently, and DevOps brings similar philosophical ideas to the complete software development lifecycle. It takes agile development right the way through to a product’s release.
What is DevOps Continuous Development?
The term “continuous development” covers a number of concepts: continuous integration and delivery (known as CI/CD), plus continuous deployment. IT teams can constantly refine their work when they constantly identify and act on improvement opportunities instead of limiting themselves to individual massive releases once per year (or even less frequently).
Whether that’s the main product of a software-based organization like Instagram or a key improvement in an IT service or a website, business will stay competitive in a marketplace that regularly sees new arrivals disrupt leaders (or even whole markets).
What is DevOps Continuous Integration?
Continuous integration involves regularly adding new code to a product’s main source code when tasks are completed. The latest code is inserted into a shared space in which an automated build tests changes and (when relevant) validates them. This gives developers feedback immediately and allows them to make changes to fix issues without delay.
What Does Continuous Delivery Mean?
This refers to the process of testing code as it becomes integrated, to extend the pace of continuous integration. With continuous delivery, new code is tested and staged via an automated process so it’s ready to be deployed.
This can incorporate multiple types of testing, such as unit, functional, regression, and integration. Code that receives approval will be staged for deployment automatically, but continuous delivery of software doesn’t automatically deploy code that has been vetted. That’s for continuous deployment instead.
What is DevOps Continuous Deployment and How Does It Work?
This term refers to the automated release of new code as it gets integrated and approved via continuous integration and delivery. Code which has been tested successfully through automated delivery is staged then released into the production environment. As a result, end users have access to the new feature right away.
As the code is passed from developers to the end user with no manual intervention, continuous deployment carries risks. It’s typically ideal for products or features deemed to incur lower risk: teams are unlikely to use continuous deployment when sensitive data, significant financial risk, or security vulnerabilities are involved. Still, beyond these factors, continuous deployment is widely regarded as one of the main DevOps goals as it maximizes velocity and time to value.
Continuous deployment and continuous delivery can easily be confused, especially as they’re both referred to as “CD” by teams. However, it’s fairly simple to remember the difference: the latter delivers release-ready software and the former puts updates into action to benefit end users.
The Architecture of DevOps
When teams refer to DevOps architecture, they typically mean the infrastructure facilitating your DevOps culture’s objectives. DevOps has no individual, fixed architecture. IT companies don’t always have to get rid of their current architectures to use it either. Still, there are some important architecture principles that DevOps organizations should bear in mind.
The explosion of DevOps coincides with that of cloud services, and cloud makes a major contribution to the success of DevOps (as do other technologies facilitating virtualization). Cloud software, virtualization, and microservices all facilitate DevOps companies — let’s take a closer look at each.
These enable IT to allocate resources within the cloud (virtual environments) rather than on-premises. As a result, users can get to resources with greater speed and flexibility. We’ll cover this more in “How the Cloud Works with DevOps” below).
In the days before virtualization, servers were physical hardware, and you needed to purchase a second if one wasn’t enough. However, virtualization empowers teams to create virtual servers: software developers can build virtual environments on current on-site or cloud servers instead of investing in new hardware. This eliminates a potential bottleneck for agile teams, while teams can leverage automated provisioning to access essential resources within minutes.
Microservice architecture comprises units of finite functionality that are loosely coupled. These combine to build a complete system, and makes applications or systems on a bigger scale simpler to build. Modification is also easier thanks to these reusable, single-function modules.
DevOps teams can expect reduced dependencies when they use this approach to deploy updates. That means they can work more quickly with decreased risk of triggering disruptions with a change.
A DevOps organization’s architecture will encompass cloud, virtualization, and microservices. However, it will also require effective test automation, monitoring, and security to allow DevOps workflows. Generally, automation is a core component of DevOps, and just as there’s a cloud-first bias, there’s also a bias toward automation. These biases will help form a DevOps company’s overall architecture.
How the Cloud Works with DevOps
Cloud computing is fundamental to the DevOps approach: the cloud’s scale, speed, and efficiency empowers teams to boost the rate at which they work and the overall quality. Software-as-a-Service (SaaS) tools have enabled software teams to benefit from both improved efficiency and economy. SaaS software is a fine example of a product that’s constantly iterated and all but needs a DevOps approach.
You may not place all applications into the cloud, but one strong DevOps practice is to consider all new applications with a cloud-first mindset. It’s important to ask whether you can find any reason to NOT put a new application or software service into the cloud during the planning stage, rather than asking whether you should in the first place.
You may come up with reasons not to occasionally, usually due to regulatory requirements or security concerns, but DevOps organizations should consider cloud the default rather than an afterthought.
DevSecOps refers to the integration of security practices into the DevOps approach. Everyone involved is accountable for maintaining security, as opposed to developers passing code on to a separate team specializing in security in the final stages of the process. DevSecOps is intended to produce secure software in less time and with less issues in the later stages (resulting in reduced rework).
The following principles are generally regarded as being fundamental to DevSecOps:
- Introducing security thinking at an early stage in the software development process.
- Adding security thinking as an essential responsibility to development teams rather than being the exclusive concern of a separate team.
- Automating security processes to aid the efficiency of the DevOps workflow.
Each of these principles is explained in more detail in the DevSecOps Manifesto, originally published in 2012.
Best Practices in DevOps
With DevOps, best practices focus on culture: it’s about collaboration, flexibility, efficiency, agility, and delivering end value. But there’s no definitive list of rules or practices companies MUST follow. Best practices differ from industry to industry, as does the value. A software developer’s needs will vary from those in manufacturing, retail, and many other industries.
John Willis and Damon Edwards, two early champions of DevOps, created the term CAMS. This is an acronym for four crucial principles of software development:
Furthermore, another six principles were suggested by the DevOps Agile Skills Association:
Understanding consumers’ views and incorporating necessary changes via short feedback loops.
Build for the end user
Encouraging companies to place more importance on the end user when creating products — they should think less about individuals’ defined jobs and how the entire organization delivers products for the ideal user.
End to End Accountability
Team members shouldn’t be responsible for their individual work alone: DevOps aims to break silos down and cultivate success by making the whole team responsible. This is different from traditional working methods in which developers have no stake in failures and operations teams are unaccountable for poor code.
Autonomous Cross-functional Teams
Teams working on any product should have the capabilities to drive it from the initial idea through availability and subsequent improvements until it’s eventually replaced by another product.
Improving Products Continuously
DevOps teams should continually seek to boost the quality and speed of their work while reducing waste.
Take Advantage of Automation
Using IT automation can help teams work more quickly, efficiently, and effectively. That’s why organizations should utilize automation as often as possible. This will leave team members more time to focus on valuable tasks and minimize human error.
Using DevOps Tools
Organizations can leverage various DevOps tools to make implementing principles easier. Tools allow teams to manage development and testing of code, as well as infrastructure. While DevOps focuses mostly on the building and delivery of software, automation tools and various other solutions help bring the DevOps culture to life.
A number of tools are available to help companies embrace DevOps practices, for source control, release management, and more.
Finding the Top DevOps Tool
The finest DevOps tools on the market cater to the needs of the individuals and processes that make up your organization’s DevOps culture. DevOps isn’t something you can purchase and bring into your company without work. It’s a cultural evolution that demands commitment and consideration.
Alex Honor, a DevOps technologist, wrote a piece called “People Over Process Over Tools” in DevOps’ infancy. He explored how DevOps emphasizes culture above tooling, though various tools make it easier for DevOps teams to work at their best. Here are some of the most well-known proprietary and open-source options:
For managing source code:
- Git (GitLab, GitHub)
For managing configuration:
For release management:
For monitoring, virtualization, and containerization:
For logging and analyzing application lifecycle:
- Splunk (a popular log management tool for DevOps)
How to Start in DevOps
Want to take your first step into the world of DevOps? Begin by assessing your present culture. Look at existing bottlenecks and silos that stand in the way of fast development and constant iteration to find improvement opportunities.
Andi Mann, Splunk’s technology advocate and a published author, recommends that newcomers choose a DevOps path according to the unique requirements of their company while still hitting essential waypoints that serve as vital success indicators. It’s critical that you eliminate friction and bottlenecks, learn from failure, measure performance, and keep evolving to get better.
A well-known maker of DevOps software, Puppet, wrote a comprehensive State of DevOps report detailing the DevOps practice’s multi-stage evolution. This tracks progress with the CAMS model mentioned above. Practices necessary for effective adoption and success in DevOps are:
- Service-operating teams should be able to configure monitoring and alerting.
- When creating applications or services, deployment patterns should be reused.
- Teams should also reuse testing patterns when building services or applications.
- Teams should help improve tools that other teams provide.
What are KPIs in DevOps
Here are the most important key performance indicators (KPIs) in DevOps:
- Deployment frequency: The aim is to perform small deployments on a more frequent basis.
- Failed deployment rate: Try to cut the number of failed deployments.
- Features released in a specific period: Many businesses think in terms of months, but it can be any timeframe.
- Mean time to discovery (MTTD): The length of time that passes before team members notice something has gone wrong.
- Mean time to recovery (MTTR): The length of time that passes before team members implement a fix.
- Mean lead time (MLT): The length of time it takes from requesting code to its implementation.
- Uptime: Measuring availability, including downtime that’s planned and unplanned.
- Rate of escaping defects: The number of defects that reach production as opposed to those QA teams catch.
- Performance of applications: Analyzing an application’s performance after implementing a change compared to its prior performance.
After you pinpoint obstacles you face and how you can track progress, you’ll be able to start reshaping your current culture. Begin by eliminating silos separating developers, software testers, security specialists, and operations teams. You should also include business analysts in discussions.
Be sure to teach all team members that their objective is to complete their to-do list and to share responsibility for a software product’s overall creation time and delivery. Mix ice-breaking educational processes with infrastructure and process adjustments. Also, bear in mind that DevOps takes time to get used to: you can’t expect to master it within a few months. It isn’t a goal: it’s an endless process.
What Is DevOps Going to Become in the Future?
DevOps is here to stay. It was never a fad. For years, companies have sought to align IT with their business, and DevOps has become recognized as a way to deliver stronger IT in less time. Numerous monolithic companies such as Facebook and Netflix have enjoyed immense success with their DevOps, and it’s becoming more and more mainstream.
In today’s marketplace, all businesses want to be more responsive and all organizations in the public sector try to enhance their services in different ways. IT is unable to sit still as consumer expectations grow and data becomes increasingly ubiquitous. And embracing DevOps is one of the most important changes any business can make. That’s why it will continue to become more and more popular in years to come.