DevOps has become an overwhelming buzzword representing many different things to many people. If you want to grasp what DevOps is or describe DevOps, that’s a challenge. Instead of trying to define DevOps, we will explain the basic principles that various people associate with DevOps and the history of how the DevOps movement has grown to help you gain a holistic perspective:
Table of Contents
1. DevOps Background
DevOps is the product of agile software development – born out of the need to keep up with the increased speed of the program and the agile methods achieved throughput. Advances in agile culture and practices over the past decade have highlighted the need for a more comprehensive approach to the end-to-end life-cycle of software delivery.
What’s an Agile Development?
Agile Development is the umbrella word for many methodologies for the development of iterative and gradual applications. Scrum, Kanban, Scaled Agile Framework ® (SAFe ®), Lean Development and Extreme Programming ( XP) are among the most common agile methodologies.
Although each agile methodology is unique in its particular approach, they all share a similar vision and core values (see the Agile Manifesto). They all combine iteration and continuous feedback to optimize and produce a software system successively. They all include continuous planning, ongoing research, continuous development, and other aspects of continuous project and software evolution. They are all lightweight and inherently adaptable, particularly when compared to conventional waterfall-style processes. Perhaps most important about agile approaches is that they all concentrate on encouraging people to work efficiently and effectively and make decisions together.
Originally agile teams were comprised mainly of developers. When these agile teams became more productive and effective at delivering applications, it was obvious that it was impractical to have a quality assurance ( QA) and Dev when separate teams. Agile has evolved to incorporate QA to accelerate the speed of software development, and now agile is expanding again to include the distribution and help members expand agility from concept to execution.
Also Read: Why Software Development Companies Should Adopt Kubernetes?
The DevOps ideals extend agile development practices by further streamlining the movement of software changes through construction, validation, deployment, and delivery stages while empowering cross-functional teams with full ownership of software applications – from design to manufacturing support.
DevOps is an IT mindset that promotes communication, collaboration, integration, and automation between software developers and IT operations to improve software delivery speed and quality.
DevOps teams concentrate on standardizing production environments and automating delivery processes to improve predictability, performance, health, and delivery sustainability. The DevOps principles provide developers with greater control over the development process and a better understanding of the technology in development. DevOps allows teams to develop, test, produce, and maintain their own applications with the autonomy necessary. Nothing is ‘thrown over the wall’ with DevOps.
2. How DevOps Helps?
Until the implementation of DevOps, the teams were responsible for gathering business specifications for a software system and writing code. A separate QA team then tests the program in an isolated development environment if the requirements have been met and release the code for deployment operations. The delivery teams are divided further into siloed classes such as networking and database. When a software system is “thrown over the wall,” it adds bottlenecks to an individual team. The problem with this approach is if the teams are working separately:
Dev is often unaware of roadblocks QA and Ops, which prevent the program from functioning as planned.
Usually, QA and Operations function through multiple apps and have little understanding of the software’s business intent and importance.
A growing community has competing objectives that can lead to inefficiency and pointing the finger when things go wrong.
DevOps addresses these challenges by creating integrated, cross-functional teams responsible for maintaining the infrastructure running the software and preparing the software to run on that system with increased quality reviews and automation issues.
Scenario from Pre-DevOps
The Dev squad, which has a mission of delivering as many features as possible, throws QA to a new product “over the wall.” The aim of the tester then is to find as many bugs as possible. When the testers carry their findings to Dev, the developers are defensive and blame the bugs on the testers who test the system. The testers respond that the issue is not their testing environment but the code from the developer.
Eventually, the problems get sorted out, and QA throws the debugged new release to Ops “over the wall.” The Ops team aims to minimize modifications to their program, but they release the code, and the system crashes apprehensively. The pointing finger then resumes.
Ops says Dev provided them with defective artifacts. Dev says everything in the test set has worked well. The fire drills start debugging the machine and stabilize development. Devs and QA are not responsible for the production climate, so they keep their hands off while Ops spend the whole night fixing the production issues.
3. What Is DevOps’ Target?
Improve cooperation between all stakeholders from planning to implementation and implementation process automation to:
- Improve the deployment rate
- Enable time to market faster
- Lower fault rate for new releases
- Reduce lead time for repairs
- Boost median recovery time
According to the DevOps State Study 2015, “high-performing IT organizations are deploying 30x more often with 200x shorter lead times; they have 60x fewer failures and 168x faster recoveries.”
A Common Pre-DevOps Scenario Before beginning a new software project, the It team meets. The team includes experts from the developers, testers, operations, and support. This team is planning how to build working software that is ready to deploy.
A new code is deployed every day as the developers complete it. Automated testing ensures the code is up and running ready. After passing all the automated testing, the code will be distributed to a limited number of users. The new code is tested for a limited period of time to ensure that there are no unexpected problems and that it is stable. If the testing indicates that it is stable, the new code is then proliferated to the remaining users. Most, if not all, of the post-planning and construction phases are carried out without human intervention.
4. DevOps Maturity Phases
DevOps maturity has several stages; only a few of the main phases you need to learn.
Waterfall Development
The development teams would write a bunch of code for three to four months before continuous integration. Then those teams will merge their code to release it. The different code versions would be so different and will have so many changes that it could take months for the actual integration step. That was a very unproductive operation.
Continuous Integration
Continuous integration is the incorporation of newly created technology with the main body of technology to be published quickly. Continuous integration will save considerable time when the team is ready to release the code.
This word hadn’t come up with DevOps. Continuous integration is an agile engineering technique that originates from the methodology of Extreme Programming. The words have been around for a while, but DevOps has adopted this concept, as it needs automation to implement continuous integration successfully. Continuous integration often represents the first step down the path to DevOps maturity.
From a DevOps perspective, the continuous integration process involves checking the code, compiling it into functional (often binary executable) code, and performing simple validation testing.
Continuous Delivery
Continuous delivery is an extension of the [DevOps stage 2] continuous integration. It lies on top of permanent integration. You incorporate extra automation and monitoring while performing continuous delivery so that you don’t only periodically combine the code with the mainline of code. Still, you have the system almost ready to deploy with virtually no human involvement. It’s the norm to keep the foundation of code in a ready-to-deploy condition continuously.
Continuous Deployment
The most modern form of continuous delivery is continuous deployment, not confused with continuous delivery [DevOps nirvana]. It is the method of deploying to output all the way without any human involvement.
Continuous delivery teams don’t deploy untested code; instead, newly created code runs through automated testing before it is pushed out to production. Usually, the code release only goes to a limited percentage of users, and there is an automatic feedback loop that tracks consistency and use before the code is further propagated.
There are very few companies that truly practice continuous deployment. Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, and Google are popular examples of continuously deployed businesses.
Although DevOps nirvana is often not the end goal for most companies, they mostly focus on moving towards continuous delivery.
5. What are the DevOps Values?
DevOps focuses heavily on building a culture of collaboration and improving efficiency through automation with DevOps tools. While some organizations and people tend to value one more than the other, in reality, to be successful requires a combination of both culture and tools. Here’s what you need to know about those two values for DevOps.
DevOps Culture
Enhanced collaboration, reduced silos characterize the DevOps culture, shared responsibility, autonomous teams, improved quality, appreciated feedback, and increased automation. Some of the DevOps concepts are agile since DevOps is an agile extension.
Agile methods are a more systematic form of software delivery. The agile development teams are measuring progress in working software. Product owners, developers, testers, and UX people collaborate closely with the same goals.
DevOps also introduces the attitude of the operations and maybe a member of the team with some of those duties to the agile project. Progress in working software is measured before DevOps; progress in working software is measured in the customer’s hands.
To do this, Dev and Ops need to break down the silos and communicate with each other, share responsibility for maintaining the system running the software, and plan the software to run on the network with increased quality reviews and delivery automation.
Tools for DevOps
DevOps tools provide configuration management, test and build systems, software delivery, version control, and monitoring tools. Different tools are required for continuous integration, continuous delivery, and continuous deployment. While all three approaches will use the same tools, you’ll need more tools as you move through the delivery chain.
6. What Tools do DevOps use?
We talked briefly about some of the techniques used in DevOps earlier; here are some of the main tools and practices you need to learn.
Source Code Repository
A repository of source code is a spot where developers check in and change code. The source code repository manages the different versions of code that are checked in, so developers don’t write about each other’s work.
Source control has probably been around for forty years, but continual integration is a major component. Popular repository source code tools include Git, Subversion, Cloudforce, Bitbucket, and TFS.
Server Build
A build server is an automation tool that compiles the code into an executable codebase within the source code repository. All Jenkins, SonarQube, and Artifactory are popular tools.
Managing Configuration
Configuration Management describes a system or network configuration. Popular tools for managing configurations include Puppet and Chef.
Virtual Infrastructure
Examples of virtual infrastructures include Amazon Web Services and Microsoft Azure. Cloud vendors that sell infrastructure or platform as a service (PaaS) provide virtual infrastructures. These infrastructures have APIs which allow you to create new machines with configuration management tools, such as Puppet and Chef, programmatically.
There are private clouds, as well. VMware, for instance, has vCloud. Private virtual infrastructures allow you to run a cloud in your data center over the hardware.
Virtual infrastructures combined with automation tools to empower DevOps practicing organizations to configure a server on the keyboard with no fingers. When you want to test your brand-new application, you can send it to your cloud infrastructure automatically, create the environment, and then run all the tests without any human interference.
Test Automation
Check automation has long been around. DevOps training focuses on automated testing inside the development pipeline to ensure that it is ready to be deployed by the time you have a deployable development. You won’t get to the point of continuous production where you’re relatively sure that the code can be implemented without a comprehensive automated testing plan without any human interference. Selenium and Water are common instruments.
Orchestrating the Pipeline
A pipeline is like a manufacturing assembly line that happens from the time a developer says, “I think I ‘m done,” all the way to the time the code is deployed in the pre-production environment or a late stage.
Unifying Enterprise Software Development and Delivery
VersionOne VS unifies agile lifecycle management and DevOps systems, offering a full image of the entire product delivery process in one single platform. VersionOne ® ContinuumTM for DevOps is a continuous business deployment system for integrating, orchestrating, and visualization of change flow across the software delivery process.
7. History of DevOps
2007
Patrick Debois, a consultant for software development, was aiming to learn all aspects of IT. Patrick had assumed many different roles in IT over a period of fifteen years to work in every role of an IT organization and gain a holistic understanding of IT. He has served as a developer, network expert, system administrator, project manager, and tester.
Patrick had taken on a consulting job for the migration of a large data center. He was responsible for the testing, which meant that he spent a lot of time with Dev and Ops. The differences between how Dev and Ops worked had always bothered Patrick. Still, he became particularly frustrated with the challenges of managing work across the two groups on this migration to the data center.
Continuous integration gained popularity in the agile community and moved Dev closer to deployment, but nothing was still there that completely crossed the Dev and Ops divide. Patrick was sure these two teams needed to work together more.
2008
At the Agile 2008 Conference, Andrew Shafer posted an idea for an agile technology session called “birds of a feather.” Patrick Debois took a look at the post and went to the session. He was, unfortunately, the only one to turn up. The idea has been so poorly received that Andrew has not even shown up to his own debate.
Luckily, Patrick was so excited to see that somebody else was interested in working together to solve the Dev and Ops challenges that he tracked down Andrew. They decided to start a Google group called Agile System Administration.
2009
At the O’Reilly Velocity Conference in San Jose, John Allspaw, Senior Vice President of Technical Operations at Flickr, and Paul Hammond, Director of Technology at Flickr, gave a talk called “10 + Deploys a Day: Dev and Ops Cooperation at Flickr.” The presentation laid the groundwork on how Dev and Ops would work together to boost app delivery.
Patrick Debois watched the presentation via a live stream in Belgium and was inspired to start his own conference, DevOpsDays, in Ghent, Belgium. The conference put together an enthusiastic community of forward-thinking minds seeking to enhance the delivery of apps. What may be even more significant is that this group of people kept the conversation with the hashtag # DevOpsDays going on Twitter. To save character space on Twitter, people quickly dropped days off, and the hashtag became # DevOps.
2010
DevOpsDays was held in Australia and the USA the following year. Over time, DevOpsDays were gradually being held in various countries and cities around the world. The face-to-face meetings were igniting more and more people to get energized about DevOps before it was a full-on grassroots push.
2011
Until 2011, the DevOps movement was fueled with little attention from analysts or vendors by individuals and open-source software. Yet in 2011, the trend began to go mainstream, attracting Gartner analysts such as Cameron Haight and 451 Research’s Jay Lyman. Big vendors began selling the DevOps.
2012
DevOps swiftly became a buzzword by 2012, and DevOpsDays continued to grow.
2013
The public thirst for information about DevOps inspired several authors to write books on the subject. Notable examples are Gene Kim, Kevin Behr, George Spafford’s The Phoenix Project, and Mary and Tom Poppendiek’s Introducing Lean Software Creation.
2014
Major companies such as Aim, Nordstrom, and LEGO were among the first to implement DevOps into the enterprise.
2 Comments
Why Software Development Companies Should Adopt Kubernetes?
[…] Also Read: Everything You Need to Know About DevOps in 2021 […]
The New Age of Software Development: Post COVID-19
[…] high time now to welcome DevOps. With Agile development and DevOps, working code can be shared to production within no time […]