With the increasing dependence of enterprise business on software systems, IT management and R & D models have also created a demand for the "sensitive state" model,
which is DevOps, which is often mentioned today. Improving efficiency is one of the core contents of DevOps practice. Let us discuss the direction and method of
DevOps practice efficiency improvement from the business flow and job flow of the software life cycle.
DevOps "stream" analysis
Software engineering defines the life cycle of software as the process of problem definition, requirement analysis, software design, program coding, software testing, operation and maintenance. Whether it is traditional mode, agile mode or DevOps mode, the software life cycle process is basically the same, as shown in the following figure As shown.
The various processes of the software life cycle also constitute the "business flow" of software engineering, and when different teams adopt corresponding development models, the development and related activities that are specifically executed, we become the "job flow".
In DevOps practice, the most important improvement is to "shut down and turn around" these "job flow" activities, so as to achieve overall and partial improvement in efficiency.
These operations, which are activities that need to be carried out, can be divided into the following categories:
Human interaction
Both parties in this type of activity interaction are natural persons. For example, business needs are collected. The activity is characterized by a high degree of irregularity and irregularity.
Human-machine interaction
One side of this type of activity interaction is a natural person, and one side is a computer-dependent program, such as coding activities, manual review / approval, etc. The characteristics of the activities are that human activities must follow the rules of computer-related topics, and some activities can be extracted as a standardized process .
Machine-to-machine interaction
The characteristic of this type of activity is that both sides of the interaction are programs that rely on the computer, such as compilation and construction, automated testing, and the process of the activity is highly standardized.
Different types of operations require different methods for optimizing efficiency.
DevOps efficiency improvement collaboration
The essence of collaboration is to carry out fast and effective information sharing between different subjects, thereby further coordinating the execution of consistent and orderly work of various subjects to achieve overall consistency and smoothness. Collaboration is the improvement of efficiency in
DevOps practice One of the important directions and content of
Collaboration in DevOps practice requires more systematic consideration and design from the perspective of overall software lifecycle. Collaborative design mainly includes the following two aspects.
1. Information sharing
In the traditional model, relevant business information is only shared within each stage, while in DevOps practice, more emphasis is placed on the sharing of information across stages, facing the full life cycle of the product. Shared information includes:
Business information
That is, business objectives, business background, business needs, business restrictions and other information.
Execution information
That is, software development, compilation, testing, deployment, and other related execution information, such as start time, end time, execution time, and execution operation records.
Feedback information
That is, the information feedback of each step and stage execution, such as demand split feedback, task execution feedback, code scan results, test results, release verification results, etc.
DevOps time information sharing needs to provide a unified information management and analysis platform for the above information. For the stage before code writing, provide agile collaborative work collaboration management module to record information such as requirements, task allocation, and completion of requirements. For the stage after code writing, provide relatively complete execution record information and necessary notification information. To build timely feedback.
2. Collaborative scheduling
Collaborative scheduling is another key content in DevOps collaborative practice. Driven by the tool platform, it realizes fully automatic collaborative scheduling for "machine-to-machine activities", simplified collaborative scheduling for "human-to-machine activities", and event-driven collaborative scheduling for "human-to-human activities" to achieve optimized collaborative scheduling Efficiency and enhance the effectiveness of collaboration.
Fully automatic collaborative scheduling
Fully automatic collaborative scheduling is mainly achieved through the pipeline engine of the
DevOps platform, and the designated job flow is automatically executed through the pipeline orchestration, and the information interaction in different stages is automatically completed during the execution process, without manual participation.
Simplified collaborative scheduling
Simplified collaborative scheduling is also achieved through the pipeline engine of the DevOps platform. In the pipeline operation flow, nodes that require human intervention are arranged, but only simple command-type information such as pass / terminate is required to be manually given.
Event-based collaborative scheduling
Event-based collaborative scheduling is mainly used for "human-to-human activities" and can also be used for "human-to-machine activities". It implements accurate information sharing and push through notification, to-do and other event methods. The cooperating downstream parties quickly accepted and promoted the affairs.
The effectiveness of collaborative scheduling in
DevOps practice can be initially evaluated and measured through research and development effectiveness. Through measurement, we can clearly know which stage of coordinated scheduling is the key obstacle or can be further optimized.
DevOps efficiency automation
Automation is the core concept of DevOps and the most important means of improving efficiency. Through DevOps tool platform, software process automation and software process support work automation are realized.
1. Software process automation
Software process automation refers to the introduction of automated means in the development, testing, and deployment of software to achieve rapid software quality inspection and software application release.
Development process automation
The automation of the development process is mainly aimed at the automation of source code scanning, compilation and construction, product filing, and report filing.
Source code scanning includes the use of commercial / open source tools for scanning and quality inspection in terms of code specifications, defects, complexity, and repetition rate.
Compilation and construction includes support for different compilation and construction types such as server and mobile, such as Maven, Gradle, Node.js and other compilation and construction methods.
Product / report archiving includes archiving and storage support for binary packages, documents, and images.
Through the pipeline engine, the above content can be realized freely, visually arranged, and executed on demand.
Test process automation
The automation of the testing process is mainly aimed at unit testing, interface testing, UI testing of stable functions, automatic generation and cleaning of test data, etc. in software testing.
Including the organization of test tasks, the execution of test scripts, automatic statistics of execution results, etc.
Automate the deployment process
Deployment automation refers to the process of software deployment and release, including database update, application deployment, grayscale / rolling release, and rollback.
2. Process support automation
Software process support mainly refers to the support for the
software engineering process. The realization of automation includes:
Compile and build environment automation
Compilation and build environment includes self-managed compile and build environment based on DevOps platform, compile and build environment is generated on demand, automatically destroyed after compile and build, and quick access to specific compile and build environment.
Test environment automation
Test environment automation refers to the capability environment required for automated test execution, such as the execution environment required for interface / UI test scripts, which can achieve flexible self-management of the test environment according to the needs of the test task.
Environment deployment automation
Environment deployment automation refers to the basic environment required for development, testing, production, etc., which can automatically complete the generation of the environment before use and the recovery after use according to the pipeline, so as to realize the resource is the code without manual participation.
In the practice of DevOps, through a large number of processes and supporting automation, it can greatly reduce the manual participation time of development, testing, operation and maintenance, reduce labor costs, and can achieve tasks that cannot be done manually, such as quickly responding to 10,000 servers Update on the app. However, there are many technical points involved in the early stage construction, and the cost is also huge. How to build floor automation, in addition to efficiency, we must also focus on the independent controllable and sustainable development of the
DevOps platform.
Continuous optimization of DevOps efficiency improvement
Continuous optimization is the third major aspect of DevOps efficiency improvement, and it is also an important practice to practice the DevOps concept. Continuous optimization needs to solve the problems of what to optimize and how to optimize. To solve these problems, we need to apply the concept of DevOps lean analysis.
Lean analysis is essentially the statistics, analysis and mining of data.
1. Data Acquisition
The data involved in lean analysis should form an end-to-end closed loop from the request to the user access. Data acquisition needs to be obtained from the business system itself and the DevOps platform supporting the business system. In the early days, the main source of the relevant data of the DevOps platform can be obtained, and the subsequent sustainable integration of non-DevOps platforms and data obtained from the buried points of the business system. Throughout the process, the timeliness, accuracy and completeness of the data need to be achieved.
2. Data analysis
Data analysis needs to have clear goals and pertinences, such as the average cycle to the business requirements and the trend of development rework. Through data analysis, you can quickly find the current key points that affect efficiency and achieve targeted improvements.
3. Data presentation
Data presentation is a data application, and data presentation can be performed in two ways.
Collaborative management
Real-time feedback and presentation of the data acquisition / analysis results on the DevOps collaborative management platform, so as to promote the efficiency optimization of PO / development team / stakeholders based on the feedback information, trigger qualitative changes through quantitative changes, and self-optimize within the team To achieve efficiency improvement.