DevOps is the development of software development life cycle (SDLC) from waterfall to agile to lean. DevOps goes beyond agile, and its focus is to remove waste from SDLC. Often, the forms of waste or bottlenecks found include: inconsistent environments, manual build and deployment processes, poor quality and testing practices, lack of communication and understanding between IT departments, frequent interruptions and failed agreements, and those that need to be precious Resources, spend significant time and money to keep the system running a full set of problems.
He also saw another repetitive waste: the first step of a
DevOps team is usually to decide whether they should use Chef or Puppet (or any other popular things like Salt, Ansible, etc.). They have not even defined the problems they intend to solve, even if the tools at hand can solve them. These teams usually struggle to build thousands of lines of scripts, but this raises the question: "Are we responsible for writing Chef scripts or entering the market faster with better and more stable products?". In most cases, these teams will push themselves into a desperate situation. A large number of proprietary scripts actually increase the waste of the system, and the driving force hidden behind the DevOps movement is to remove the waste from the system. These teams did not Make it happen. Original text by Mike Kavis
At present, there are too many opinions and definitions on DevOps, but they all share a common idea: "Resolve the once insurmountable gap between developers and operators, and enhance the communication and exchange between developers and operators. ". And I personally think that DevOps can be expressed with a formula:
Changes in cultural concepts + automated tools = constant adaptation to rapidly changing markets
Its core value lies in the following two points:
Deliver faster and respond to changes in the market.
Pay more attention to business improvement and promotion.
After understanding what DevOps is, why do we need it? What benefits does it bring us?
Why you need DevOps
The speed of change in today's world is different from the past, and every time it undergoes a disruptive technological revolution, it has brought profound changes to the world, such as
big data, cloud computing, artificial intelligence, VR/AR, and blockchain. Emerging technologies are driving constant changes in the world. How can we respond to this era of VUCA so that we can respond quickly when the environment changes?
V=Volatillity (variability) is the essence and power of change, and is also driven and catalyzed by change
U=Uncertainty (uncertainty) lacks predictability, lacks anticipation of unexpectedness and understanding and awareness of things
C=Complexity (complexity) enterprises are plagued by various forces, various factors, and various things.
A=Ambiguity (ambiguity) is the source of misunderstanding, the confounding of various conditions and causality.
Next, I will analyze how to change from the two levels of "product iteration" and "technological innovation".
Product iteration
Whether we are doing Internet or games, in fact, we are ultimately making products, making a product that users like. Jobs has a very famous famous saying: "Consumers don't know what they need, until we take out their products, they only found out that this is what I want." So Joe Gang can design the final effect of the product from the beginning, and then iterate the production step by step according to the parts
How to achieve the landing of DevOps
To know the truth and to be true is to act, and to be aware of what is to be understood is to know-Ming Wang Shouren's Biography
In some cases, I quoted a famous quote from the sage Wang Yangming, who advocated "the unity of knowledge and deeds". In layman's terms, doing things requires a combination of theory and practice. When we implement
DevOps, we must also follow the "combination of theory and practice" approach. Theory is the guiding ideology of our work, and practice is the specific method of doing things. Next, I will follow how I follow the theory in the company. Combine with practice to promote the implementation of DevOps.
Implement DevOps guidelines
First of all, we still have to go back to
what is DevOps. If you forget, you can go back and review it again, including the DevOps formula I summarized.
In fact, the core idea of DevOps is: "Quickly deliver value and respond flexibly to changes." The basic principles are as follows:
Efficient collaboration and communication;
Automated processes and tools;
Fast and agile development;
Continuous delivery and deployment;
Continuous learning and innovation.
However, how are these basic principles closely related to project R&D, that is, how are they reflected in all aspects of our development process?
Agile management: A well-trained agile development team is the key to successful DevOps implementation.
According to Conway's Law: The products developed by the software team reflect the company's organizational structure.
Therefore, adjusting the organizational structure according to the company's situation is the first condition, which will directly affect the requirements, the efficiency of the design and development stages, and the cost of communication.
There is a good calculation formula for the communication cost of the team in the "Mythical Man-Month": communication cost = n(n-1)/2, where n is the number of people, so the communication cost will be exponential as the number of organizational staff increases Level growth. And how to divide the small and fast agile team, I will introduce in detail in the "specific implementation method of DevOps" later.
Continuous delivery and deployment: Automate the construction, deployment, testing, and release of applications.
Using technical tools to transform traditional manual operations into automated processes, which not only helps to improve the efficiency of product development, operation and maintenance deployment, but also reduces errors and accidents caused by human factors, discovers problems early and solves problems in a timely manner. Ensure the quality of the product.
IT service management: Sustainable and highly available IT services are the key elements to ensure the normal operation of the business, and it is integral with the business.
IT service management (ITSM) directly affects the entire life cycle of product operations. Traditional IT service management (like ITIL) is very good in production, but it is too cumbersome for
DevOps, so it is necessary to create for DevOps An ITMS that only focuses on business continuity requires very few necessary resources to provide services for the corresponding business. ITMS considers it more from a business perspective.
Note: The vernacular explains what is IT Service Management (ITSM). It is a model where traditional "IT management" shifts to "IT services". The former may be more concerned with specific server management, network management, and system software installation and deployment Etc.; the latter is more concerned with the standardization and standardization of processes, clearly defining the goals and scope of each process, costs and benefits, operational steps, key success factors and performance indicators, the responsibilities and rights of relevant personnel, and the relationship between each process, etc. , Such as establishing an online incident resolution process, service configuration management process, etc.;
But processes are not enough, because processes are mainly used internally by IT service providers, and customers are not interested in them. Therefore, these processes need to be packaged into specific IT services as needed, and then provided to customers for use, such as in the cloud The same as buying a virtual cloud host on the platform.
Lean management: Establish a pipelined IT service chain, bridge the gap between development and operation and maintenance, and realize the agile model of integrated development and operation and maintenance.
Lean production is mainly derived from the production philosophy of Toyota Production System (TPS). It is famous for reducing waste and improving overall customer value. It mainly uses optimized automated processes to increase productivity and reduce waste. So the essence of lean production is just-in-time (JIT) and automation (Jidoka).
JIT (Just In time): JIT describes in one sentence that it consumes the minimum necessary resources to produce and ship the correct parts in the correct quantity. Working in this mode can minimize inventory and prevent premature or excessive production. Most companies prefer to use inventory to avoid the potential risk of line suspension, while Toyota does the opposite. By reducing inventory "forcing" to respond to problems in production in a timely and effective manner. Of course, the JIT model is a considerable test of the ability to solve problems. In the case of insufficient capabilities, there will be a considerable risk of disconnection.
Jidoka (Build in quality):
Automation, Japanese means "self-assertion", literally means automation, means "automation" in Japanese, and in the Toyota TPS system, the word "man" is specifically added to the word "motion" By the way, it has become a "sullivan". In other words, the process control of TPS/lean production eager to produce can be as intelligent as "human", and it will automatically shut down in the first time under abnormal conditions. This automatic shutdown function can prevent bad parts from flowing downstream, prevent the machine from causing damage in the wrong production state, and also allow people to better analyze the fault in the current error state. When the equipment can automatically analyze the failure, it can truly liberate the "man" supervising the machine and save labor costs.
Lean software development is the application of lean production and practice in the field of software development. It is summarized as the following seven principles:
Eliminate waste
Reinforcement learning
Try to delay the decision
Publish as soon as possible
Decentralization
Embedded quality
Global optimization
Lean management runs through the entire DevOps stage. It encourages proactive problem discovery and continuous optimization of processes to achieve continuous delivery, rapid feedback, risk reduction, and quality assurance. Next, let us look at the specific implementation method of DevOps.
Specific methods for implementing DevOps
Building a fast and agile team
According to Conway's law introduced earlier, we can see what the current project team structure in the company is.
I believe this is not just a structure like ours, but a layered structure common to most IT Internet companies. They are generally divided into seven major departments: product planning, design and art, front-end engineers, back-end engineers, and test engineers. , Operation and maintenance & DBA, market operation, etc. Communication barriers have naturally formed among various departments, and they communicate with each other mainly in the form of emails and meetings. It is inefficient, difficult to change requirements, and it is difficult to quickly respond to market changes and continuously deliver high-quality products.