I believe that most of you have studied waterfall development in college, and you may have heard about agile development at work, and now there is DevOps development, which you may not know much about. So, let's learn this area together.
Let me tell you two words: the first is "trend", and the second is "concept".
- Trend: Currently, many internet giants such as Alibaba, Tencent, Baidu, Toutiao, Meituan and other companies are using the DevOps development model internally.
- Concept: DevOps = Developers + Operators, that is, the integration of the development, operation, and maintenance teams.
How does it feel when you only read concepts? Does it seem like the Concept is impossible to understand and understand in this lifetime?
It doesn't matter. Just remember two things here: the first thing is that DevOps is to bind development and operation, and maintenance together. The second thing is that DevOps is not a tool but a methodology.
Let's read the rest together, and we'll ensure you understand.
I. History of Development
The best way to understand the reason for the emergence of something new, such as DevOps, is to understand its history.
As mentioned earlier, DevOps is a development model. What comes to mind when you mention the word "development model"? Is it waterfall development and agile development? Now let's understand the history of these two development models.
II. Waterfall Development
In the early days of the Internet, programmers had almost the same status as scientists when programmers' offices were still called laboratories. At that time, there were not so many Internet users, and they often mentioned their needs with reverence.
And the developed products, as long as they can solve their problems, are scrambling to give gifts to the programmers, do not have too many requirements for the development cycle, and are almost constant.
In this context, the waterfall development model was born, as shown in the following figure：
The waterfall development model has three best features:
- The requirements are fixed.
- The development cycle is fixed, which may be three months or one year.
- Design, development, testing, and operation and maintenance are independent, and the current one is finished before the next one starts.
The disadvantage of this model, which I believe we all know, is summarized as follows: requirements cannot be verified quickly. It is possible that after a year of development, something no longer fits the market, or after six months, if the result does not match the user's needs, you have to start all over again. This is the point where agile development comes in.
III. Agile Development
With the development of the times, there are more and more Internet users, and the requirements of these Internet users are getting higher. More and more Internet users are pursuing " usefulness" and " beauty". And these people are becoming more and more adaptable. They may think this is good today and think that it is good tomorrow, but the software development cycle is getting shorter and shorter. In the context of the times, there are always so many smart people, so the agile development model has emerged:
The most important feature is one word: Faster! Specifically, agile development can find problems faster, products are delivered to users faster, and teams can get feedback from users faster to respond faster.
Another feature is that development and testing have been turned from opposites to the same front.
The testing effort in the waterfall model is to pick as many bugs as possible in the development. Agile development, on the other hand, unifies the two goals, working together to develop products faster and better.
From the Agile Manifesto, we can get a glimpse of its true meaning：
1). Our priority is to satisfy our customers by delivering valuable software as early and consistently as possible.
2). Be open to changes in requirements, even in the late stages of development. Agile processes can navigate change to gain a competitive advantage for our customers.
3). Deliver usable software as frequently as possible, at shorter intervals, from a few weeks to a few months.
4). Business people and developers must work together throughout the project development period.
5). Build projects around motivated people. Please provide them with the right environment and support, and trust them enough to accomplish the job.
6). The quickest and most effective way to convey information with and within the development team is to talk face-to-face.
7). Usable software is the primary measure of progress.
8). The agile process promotes sustainability. Funders, developers, and users should always work together to maintain a steady pace of development.
9). To enhance agile capabilities, there should be a continuous focus on technical excellence and good design.
10). Simplicity - the art of maximizing unnecessary workload - is critical.
11). The best architectures, requirements, and designs originate from self-organized teams.
12). Teams should regularly reflect on how they can become more combative and shift and adjust their behaviour accordingly.
The Agile Manifesto is crucial in bringing peace and maintaining balance. For the first time in a long time, this was a way to connect different key projects based on culture and "humanity" instead of the previous process-based and mechanical approach.
People started to talk to each other, conduct basic meetings, and begin to exchange ideas and opinions on an ongoing basis.
They start to realize that they have more in common than they thought, and the client becomes one of them instead of wasting money on the project and praying to God for everything to work out as they had hoped.
Although agile development has dramatically improved the efficiency of software development and the speed of version updates, its effect is limited to the development side. We found that the backward manual deployment online in operations and maintenance became a new bottleneck.
Operations, maintenance, and development engineers have completely different thinking logic. The motto of the operations and maintenance team is very simple: "stability overrides everything". The core requirement of operations and maintenance is to avoid problems.
What is most likely to go wrong? The most likely to go wrong is when changes occur. Therefore, operations and maintenance are very reluctant to "change".
So the conflict is concentrated between the two. At this time, the mysterious protagonist DevOps came onto the scene.
IV. DevOps Development
Nowadays, Internet users are increasing in huge amounts. In this background, many Internet giants and phenomenal products have been born, such as WeChat, eBay, Tiktok, etc. The competition of Internet has been getting more and more competitive.
The rapid iteration of products, rapid occupation of the market, and rapid occupation of the user's mind have become the goal of Internet companies. At this time, it puts forward higher requirements for product development, the need to be able to continuously develop products, continuous integration, continuous testing, continuous deployment, continuous monitoring, and the need to be available every day and every moment of the new version of the line.
It's time for the development team to relieve the conflict with operation and maintenance. How to relieve it? Well, let's put them on the same front.
This model takes "faster" to another level: users can get a part of the final product or service and experience it early so they can pass it back to the requirements management team and product development team as soon as possible.
And it's all thanks to DevOps, which brings development, testing, and operations on the same front! Agile has its manifesto, and DevOps has its list.
1). There are no barriers between development and operation teams. Both are part of a unified DevOps process.
2). There is quality validation of work that flows from one team to the other.
3). There is no buildup of work, and all bottlenecks have been addressed.
4). The development team is not occupying the Ops team's time because deployment and maintenance are in the same time box.
5). The development team doesn't deliver the code for deployment after 5 pm on Friday, leaving the Ops team to work overtime on the weekends.
6). The development environment is standardized so Ops personnel can easily scale and deploy it.
7). The development team can find the right way to deliver new releases, and the Ops team can easily deploy them.
8). The lines of communication between each team are clear.
9). All team members are given time to experiment and practice to improve the system.
10). Defects are routinely introduced (or simulated) into the system and dealt with, each learning experience is documented and shared with the appropriate people, and incident handling becomes part of the daily routine and is handled in a known manner.
DevOps is the path that Internet giants must choose when labour costs are so high, market competition is so fierce, and user requirements change so frequently.
The above is the summary of today's content for everyone, so what is the use of our understanding of them?
As a product manager at the forefront of the Internet community, you should understand this knowledge. As smart programmers who look forward to world peace, there is such an opportunity in front of you, and you should treasure it.