In the past two years, with the rise of technologies such as containers and Kubernetes, the concept of DevOps has been widely mentioned and widely used. This article will start from the following aspects, combined with the way the experiment shows, let the reader really understand the meaning of
DevOps.
The background of DevOps
The relationship between DevOps and containers, Kubernetes
DevOps technology implementation
What is DevOps
Dev in DevOps refers to Development, and Ops refers to Operations. In one sentence, DevOps is to break through the barriers of development and operation and maintain integration of development and operation and maintenance.
From waterfall development to agile development
Talking about the development history of DevOps, we need to talk about agile development first.
First, agile development is software-oriented, and software depends on computing hardware. We know that the world's first computer appeared in 1946. Therefore, software development is relatively short compared to human history. Compared with mastering software development methodologies, people are better at engineering, such as building buildings and building bridges. In order to promote software development, in 1968, people applied engineering methods to the software field, resulting in software engineering.
The software engineering approach has its advantages, but it brings a lot of problems. The key point is: software is different from engineering. After the completion of engineering-built bridges and high-rise buildings, people usually do not have a lot of changes in the main body of the bridge high-rise use requirements; but the software is different. For software for end users, people's needs for software functions are constantly changing. Under the waterfall development model, when customers have changing needs for applications, software vendors have to redevelop the software. This will greatly reduce the competitiveness of enterprises.
The traditional software development process is: the product manager collects the needs of the front-line business departments and customers. These requirements may be new functional requirements or changes to the existing functions of the product. Then carry out evaluation and analysis, formulate these requirements as a road map of the product, and allocate corresponding resources for related work. Next, the product manager outputs the requirements to the development department, and the development engineer writes the code. After writing, the personnel from different departments will carry out the follow-up code construction, quality inspection, integration testing, user acceptance testing, and finally to the production department. The problem that this brings is that the development cycle is relatively long, and if there are any changes, you must go through the development process again. In shopping malls such as battlefields, a version of the software is postponed. It may be in the market by the time this version is released. Outdated; competitors are likely to quickly seize customers and markets due to a step forward in the release of new software.
Because of the pressure of the business environment, software vendors need to improve their development methods.
At the beginning of 2001, at the American ski resort snowbird, 17 experts gathered together to outline some values and principles that allow software development teams to work faster and change accordingly. They call themselves "Agile Alliance."
With agile alliances and agile development values, there will inevitably be schools of development. The main agile development genres are: Extreme Programming (XP), Scrum, Crystal Method, etc.
So far, agile development has ideas, methods, and practices. With the rise of the concept of cloud computing and the continuous landing of cloud computing, agile development has not only been instrumentalized but also sublimated.
From agile development to
DevOps
When it comes to agile development, what is the relationship between agile development and DevOps?
Agile development is a concept in the development domain. On the basis of agile development, there are the following stages:
Agile development->Continuous integration->Continuous delivery->Continuous deployment->DevOps
From agile development to DevOps, the previous stage is the foundation of the latter stage; as the stage advances, more and more processes are covered by each stage concept; eventually
DevOps covers the entire development and operation and maintenance stage. Formally, the scope of each stage is different, so the tools provided by each concept are also different.
Continuous integration (Continuous Integration) refers to: before the code is integrated into the trunk, it must all pass automated testing; as long as one test case fails, it cannot be integrated. The goal of continuous integration is to achieve rapid iteration of products while maintaining high quality.
Continuous delivery refers to: developers frequently deliver new versions of software to quality teams or users for review. If the review passes, the code is released. If the review fails, then you need to develop and make changes before submitting.
Continuous deployment (Continuous Deployment) refers to: after the code is reviewed and released, it is automatically deployed for delivery.
DevOps is a complete set of practices that can automate the processes between software development and IT teams so that they can build, test, and release software faster and more reliably.