The use of container technology supports the current three major
DevOps practices: workflow, timely feedback, and continuous learning.
Some people say that
container technology and DevOps are mutually reinforcing in the development process. Thanks to the popularity of DevOps design concepts, the container ecosystem has also evolved in design and component selection. At the same time, the use of container technology in the production environment, in turn, promotes the three main
DevOps practices: three practices that support DevOps.
Workflow
Workflow in the container
Each container can be regarded as an independent operating environment. For the inside of the container, there is no need to consider the external host environment, cluster environment, and other infrastructure. Inside the container, every function seems to operate in the traditional way. From the external point of view, the applications running in the container are generally part of the overall application system architecture: such as web API, web app user interface, database, task execution, cache system, garbage collection, etc. The operation and maintenance team generally restricts the use of container resources, and builds a complete container performance monitoring service on this basis, thereby reducing its impact on infrastructure or other downstream users.
Workflow in reality
Teams with independent business functions like "containers" can also learn from this kind of container thinking. Because both the workflow in real life and the workflow in technology (development, testing, operation and maintenance, release) use this linear workflow. Once a problem occurs in an independent link or work team, then The entire downstream will be affected, although the use of this linear workflow effectively reduces the coupling of work.
Workflow in DevOps
The first principle in
DevOps is to control the entire execution link, and strive to understand how the system works together and how the problems that occur in it affect the entire process. In order to improve the efficiency of the process, the team needs to continuously find the performance waste and problems that may exist in the system and finally fix them.
After practicing such a workflow, you can avoid bringing a known defect downstream of the workflow, and avoid local optimization that may lead to possible global performance degradation. You must continue to explore how to optimize the workflow and continue to deepen your understanding of the system.
Feedback
Feedback in the container
In addition to restricting the resources of containers, many products also provide functions to monitor and notify container performance indicators, so as to understand the state of the container when the container is not working properly. For example, it is currently popular and can be used to collect corresponding performance index data in containers and container clusters. The container itself is particularly suitable for separating application systems, as well as packaging code and its operating environment, but it also brings opaque features. At this time, it is particularly important to quickly collect information from it to solve internal problems.
Feedback in reality
In reality, feedback is also required from start to finish. In an efficient processing flow, timely feedback can quickly locate the time when things happen. The key words of feedback are "quick" and "relevant". When a team is overwhelmed by a large number of unrelated events, important information that really needs quick feedback is easily overlooked and passed downstream to form more serious problems. Can quickly realize that the conveyor belt is too fast, then the chocolate may be no problem.
Feedback in DevOps
The second principle in DevOps is to quickly collect all relevant and useful information so that problems can be identified before they affect other development processes. The
DevOps team should strive to "optimize the downstream" and quickly solve those problems that may affect the team later. Like workflow, feedback is a continuous process. The goal is to quickly obtain important information and respond in a timely manner when problems occur.
Fast feedback is essential to improve the quality, availability, and safety of the technology.
Continuous learning
Continuous learning in the container
Practicing the third principle of "continuous learning" is no small challenge. Without the need to grasp too many marginal or incomprehensible things, container technology allows our development engineers and operations teams to still safely test local and production environments, which was difficult to do before. Even for some radical experiments, container technology still allows us to easily version control, record and share.
Continuous learning in reality
To take my own example: Many years ago, as a young, fledgling system administrator (just three weeks of work), I was scheduled to make changes to the configuration of an Apache virtual host running the website of a university’s core IT department. Since there is no convenient test environment, I modified the configuration directly on the production site. At that time, I released the configuration without any problem. After a few minutes, I accidentally heard the colleague next door say:
"Wait, the website hangs?"
"Yes, what's going on?"
Many people are in a circle...
After being ridiculed (true ridicule), I stuck my head on the workbench and quickly undone my previous changes. Later that afternoon, the head of the department - the boss of my boss's boss - came to my office and asked what happened. "Don't worry," she told me. "We will not blame you, this is a mistake, and now you have learned."
In the container, this situation is easy to test on my laptop, and it is easy to be discovered by those experienced team members before deploying the production environment.
Continuous learning in DevOps
Part of the continuous learning culture is that each of us hopes to improve something through some changes and bravely test our ideas through experiments. For DevOps teams, failure is growth rather than punishment for both teams and individuals, so don't be afraid of failure. Each member of the team keeps learning and sharing, and will also continuously improve the level of the team and organization where they are.
As the system is more and more subdivided, we need to focus our attention on specific points: the two principles mentioned above mainly focus on the overall process, while continuous learning focuses on the entire project, personnel, team, organization the future of. It affects not only the process, but also everyone in the process.
Enlightenment of container technology to DevOps
Effective application of container technology can learn the three principles of
DevOps: workflow, feedback and continuous learning. Looking at applications and infrastructure as a whole, rather than ignoring things outside the container, teach us to consider all parts of the system, understand its upstream and downstream impacts, break down barriers, and work as a team to improve overall performance and depth Understand the entire system. By striving to provide timely and accurate feedback, we can create an effective feedback mechanism within the organization in order to discover problems before they affect them. Finally, providing a safe environment to try new ideas and learn from them teaches us to create a culture in which failure promotes the growth of our knowledge on the one hand, and on the other hand, through educated guesses, we can Complex problems bring new and elegant solutions.