DevOps source of ideas
DevOps concept introduction
At the beginning of the
introduction to DevOps, let's first understand the concept of DevOps. Literally, DevOps is Dev + Ops. Dev can be understood as Development, that is, development; it can also be understood as Developer, that is, developers. Ops can be understood as Operation, that is, operation and maintenance; can also be understood as Operator, that is, operation and maintenance personnel. So literally, DevOps is how to develop software, how to deliver software, how to operate and maintain software, and coordination in these processes.
But after saying the above sentence, it is the same as not saying it. We need to sort out the ins and outs of
the concept of DevOps from the perspective of thought, source and philosophy.
The source of ideas for DevOps is very broad. The main sources are several aspects: the first aspect is derived from the Lean production model (Lean) or the Toyota Production System (TPS); the second aspect is from the constraint theory ( ToC); The third aspect comes from Agile.
I originally wanted to sort out DevOps' thought sources strictly according to the timeline, but considering that this is a technical blog, not an archaeological article, I will use the source of thought plus actual cases to explain.
Lean production method / Toyota production system
The DevOps classic book "
DevOps Practice Guide" explains the source of ideas for DevOps. The book particularly respects the lean production method of one of the sources of DevOps ideas. It proposes the basic principles of DevOps (three-step method): flow, feedback, continuous learning and experience. These three steps are fully compatible with lean production methods, and the book's directory structure is also based on these three steps.
Lean production/Toyota production system (TPS) is the idea from manufacturing companies.
After World War II, with its strong industrial strength, the United States has become the most powerful country in the world, and American manufacturing has become a symbol of quality assurance.
However, soon Japanese manufacturing entered the US market in large quantities, including automobiles and electronic products. For a time, comparing the pros and cons of Japanese manufacturing and American manufacturing became a hot topic in industry.
Compared with American manufacturing, the main advantages of Japanese manufacturing are: high quality, low price, variety, and short delivery time.
The high quality and low price means that Japan-made products can be manufactured at the same cost and with lower cost. For manufacturing, cost control is critical.
Variety means that Japanese manufacturing companies can quickly respond to market demands and can customize to meet various needs. For traditional manufacturing companies, large quantities can reduce unit costs, but large quantities mean that it is impossible to achieve variety and meet individual needs at the same time.
Short delivery times mean that the Japanese manufacturing industry can give sellers a more reliable commitment. Because usually only the closer to the sales date, such as holidays, the seller can more accurately estimate sales. Therefore, the seller always hopes that the manufacturer's delivery time is as short as possible.
So how does Japan make these points?
American scholars have studied American manufacturing companies and Japanese manufacturing companies, and have come to an important conclusion that lean manufacturing is commonly used in Japanese manufacturing. The lean production method is derived from the Toyota production system invented by Toyota Japan (the Toyota of Toyota Motor). American scholars renamed Toyota production system to a more general name-lean production method.
Since then, manufacturing companies have begun to learn the lean production boom, which is still in the ascendant.
Please refer to "Lean Ideas" and "Toyota Production Modes" for the systematic learning of lean production methods or Toyota production systems.
The following is a brief explanation of several concepts and technologies of lean production methods in combination with IT practice:
Value stream
The lean production method emphasizes the need to speed up the flow of value streams, that is, to minimize the lead time (delivery time) and minimize the waste of the production process.
Taking software delivery as an example, the value stream is to transform user needs into working software and provide it to users. How long can a user put forward a new demand? The competitor's App has a popular new feature, how long can your App achieve similar features?
There are many wasteful situations listed in lean production methods. Among them, rework and waiting due to quality problems are two of the most overlooked wastes that are worth paying attention to.
Taking software delivery as an example, if the test is not done well, the system goes online with defects, which leads to emergency repair of defects, which will not only lead to reputation damage, customer loss, but also a waste. In addition, in the development process, because the compilation is too slow, developers have to wait for the compilation to complete before they can continue to work, which is also a waste. Or, the tester had to wait before the developer manually typed the version, which was also a waste.
Small batch production
The lean production method emphasizes the use of small batch production adapted to the assembly line, rather than uncontrolled large-scale mass production. Taking the production of automobiles as an example, an automobile production line only takes 1 to 2 minutes to complete the assembly of a car from the beginning of the production line to the departure of the production line. In other words, each automobile production line aims to produce a car that can be driven normally, not to produce all kinds of spare parts for assembled cars. The benefits of small batch production are: the first deliverable product can be produced in a short time; the problem is found quickly, and the repair cost is low once the problem is found; and the risk of inventory backlog is avoided.
Taking software integration as an example, every time a developer submits code, the integration process is triggered, and automatic code quality analysis and automated unit testing are run. This process, also known as continuous integration, can help us quickly identify code quality issues and resolve them as soon as possible. If you do not do continuous integration, but wait for the software to be integrated one week before it goes online, code conflicts, test failures, and failed startup after integration will be a nightmare. In other words, we should focus on how much working software we delivered, not how much code we wrote.
Just in time production (JIT)
In the lean production mode, timely production refers to the production of products that are really needed in the downstream environment, that is, it is pulled by the downstream link rather than the upstream link. For example, there is limited space on the shelves of supermarkets, and several pieces of milk cannot be placed. At this time, according to the sales of milk, milk on the shelves should be replenished in time instead of filling the entire supermarket with milk. In fact, Ohno was inventing the theory of timely production from the inspiration of supermarket shelves.
Taking software project management as an example, after using Kanban, if there are too many tasks in the WIP list, you need to consider whether multiple tasks are started at the same time, and these tasks cannot be completed in a short time. At this time, it is necessary to re-prioritize some tasks from WIP to TODO.
Site management
Lean production methods emphasize on-site management, that is, managers must make on-site physical inspections before making decisions. Take Toyota Motor as an example, Toyota Motor's office and car manufacturing workshop are next to each other. Toyota managers are usually wearing tooling, so that they can enter the factory site management at any time.
For the software team, the most ideal working environment is for everyone to sit together in the office and discuss issues in person. If it is a distributed team, you can also use video conferencing to allow the team to communicate "face-to-face".
Kanban
Lean production methods place great emphasis on visual tools such as Kanban. A kanban can really be a whiteboard with some task status marked on it, or it can be anything that expresses a certain meaning visually. For example, a pile of spare parts is a kind of kanban, because it means that there is a problem in the next link of the production line, and these spare parts cannot be digested. For example, the scattered tools are a kind of kanban because it means that the tools are not classified and stored, which will result in a waste of the process of finding the tools. For example, workers who are chatting together are a kind of kanban, because it means that there are too many people on duty for this job, or the last production link is too slow.
Taking software project management as an example, you can use Kanban to visualize the team's work situation, task progress, project goals, risk list, etc. Another example is the red warning sign when continuous integration fails or the notification email sent automatically by the system is also a kind of kanban.
Obuya
When Toyota Motor develops new cars, it will form a cross-functional team to work together in a large room. This large room is called Obuya in Japanese.
In software project management, the development of some key projects will also adopt such a cross-functional team centralized office and isolated from the general office area. Usually this centralized office area is called the War Room.