头图

DevOps celebrated its tenth anniversary in 2018. In the technology industry, this is already a long enough life cycle. Although DevOps has been relatively mature, the DevOps philosophy is still avoiding even the most famous and resourceful organizations. A shocking Gartner report shows that 75% of DevOps projects fail to achieve their goals.

Why is the failure rate of DevOps so high? When implementing the DevOps concept, what are the common challenges that organizations face? How to overcome these challenges?

This article will solve these problems and provide companies with reproducible strategies to improve the success rate of DevOps plans.

1. Irregular resource allocation

Resource allocation is a major challenge for DevOps. Merely integrating development and operation and maintenance teams cannot produce an efficient DevOps team. A large number of DevOps teams lack subject matter experts, which seriously affects the team's ability to achieve DevOps promises.

First of all, generalists engaged in different technologies such as application development, optimization, and monitoring will not be as efficient as experts. This will waste precious time and ultimately slow down the delivery speed of DevOps.

In addition, DevOps teams are most productive when they minimize unplanned work. Without dedicated resources to deal with specific DevOps issues, the team is forced to assign complex issues to experts on non-subject issues. This will destroy their work plan and make the entire team inefficient. More importantly, the increasing workload of such talents will lead to employee exhaustion and may derail the entire DevOps plan.

Only when there are specialized personnel to deal with the problem, DevOps can speed up the feature release, update and time to market. Therefore, companies must identify key application technologies and development processes, which can be optimized through DevOps, and assign specialized skilled talents to these specific areas.

Optimal resource allocation is critical to the success of the DevOps program.

2. Misplaced responsibilities

DevOps brings together teams with very different goals to work in an "unstable" environment. Developers are mainly concerned about innovative, stable operation and maintenance teams, perfect QA teams, and so on. Of course, there are bound to be frictions and conflicts between these teams.

To make matters worse, senior executives often do not clearly define the goals, responsibilities, and priorities of the DevOps team. This leaves a lot of room for ambiguity. Teams that are accustomed to working in silos without worrying about dependencies will fall back to the original way of working, thus negating all efforts to achieve seamless collaboration.

Before changing the leader, getting the team out of mindset is the biggest challenge. Therefore, DevOps works best when the team is composed of interdisciplinary resources. Developers with operation and maintenance thinking are not ashamed to often step out of their comfort zone. This is an urgent need to lead the DevOps program to success.

Organizations often overcome these challenges by clearly describing the goals, priorities, and responsibilities of DevOps. More importantly, they assigned full responsibility for the success of the DevOps mission. Each team member is responsible for the success of DevOps end-to-end tasks. When their individual performance is measured by the team’s overall success, the silo will automatically break down and collaboration will increase rapidly.

3. Process fragmentation

Not many DevOps leaders realize, or at least realize, that DevOps is very fragmented. Although DevOps has matured, it is not particularly suitable for SME software development and delivery models. DevOps has long been primarily a large-scale enterprise project. For this reason, small and medium-sized enterprises that are in line with DevOps find themselves in trouble.

DevOps works by automating most of the tasks involved in the software development life cycle. However, no tool, process or resource can achieve this. DevOps teams must use different tools to automate different aspects of their operations. There are good tools to automate various components, such as continuous integration, infrastructure provisioning, testing, source code control, and so on. However, these tools cannot be integrated with each other (of course, you can also use tools to achieve integration, such as ZenTao ZTF opened up the gap between ZenTao and Jenkins, throughout the DevOps continuous integration, continuous testing, continuous deployment and other DevOps life cycle differences stage).

Making these different tools communicate with each other requires a lot of resources, and most organizations are unable or willing to allocate these resources. For this reason, DevOps teams are often forced to use limited automation capabilities, which is the opposite of DevOps.

An efficient DevOps team allocates time between performing tasks and automating tasks. Without automation, transactional work will gradually increase, resulting in employee exhaustion, process delays, deterioration in responsiveness, and degraded delivery quality.

Companies can avoid these problems by developing a clear DevOps strategy that specifies the DevOps goals of the organization, determines the processes that can be automated, and deploys resources to achieve these goals. These goals should be matched with resource allocation. This realistic approach to defragmentation will help companies simplify and automate processes that are important to them.

4. Lack of appropriate metrics

The lack of appropriate metrics is both a process challenge and a personnel challenge. KPIs and metrics are very helpful in communicating the priorities and expectations of the organization to the DevOps team. As discussed earlier, stability and deployment time continue to conflict in DevOps teams. Should we rush to deliver at the expense of stability, or should we focus on stability and delay delivery? How did you start to prioritize one goal over another?

Indicators provide the team with clear and precise directions to determine the priority of different goals. Although the value of these metrics may vary from business to business, these metrics themselves are universally relevant to all DevOps teams. The following are some of the metrics that companies must define when communicating DevOps goals to the team:

● Deployment frequency
● Deployment time
● Change failure rate
● Automatic test pass rate
● Number of failures after each release
● Defect escape rate
● Detection time is up
● Function use
● End user experience
● Business impact
● Failed to deploy

5. Cultural change

Resistance to change will be the biggest obstacle to DevOps transformation. DevOps attempts to transfer control from separate teams and their leaders to a single multi-departmental organization within the organization. Naturally, such an attempt can be interpreted as an erosion of decision-making power.

Furthermore, this is not all about control. Compared with traditional IT roles, the leadership role of DevOps is very different. Generally speaking, IT leaders must have the professional skills to guide, support and advise employees in various technical aspects. In the DevOps environment, this is not the case. DevOps employees work in an unstable and rapidly evolving environment. Mistakes are common, and the consequences can be catastrophic. It is not difficult to understand why employees are worried about the DevOps process.

Therefore, the primary role of leaders is to create training conditions, give employees a higher degree of freedom, and protect them from the setbacks caused by rapid trials. In addition, the leader’s job must be focused on identifying successful DevOps models and replicating these models to scale the transformation throughout the organization.

A top-down approach attempts to redefine the role of leadership, giving DevOps teams more experimentation freedom, and ensuring their stability, which is crucial to overcoming cultural inertia.

"Cultural change cannot be implemented-stakeholders across the entire organization must unanimously support the necessary cultural changes required to successfully adopt DevOps. It includes executives and leaders in different groups. This is not just technical adoption. In order to succeed, business, Operations, IT, finance, and other aspects must commit to and build trust."-Ian Willoughby, Vice President and Chief Architect of Cloud Solutions

6. Unable to scale DevOps

In many cases, the success of early DevOps plans often turns into failure. The best-performing DevOps teams are overwhelmed by more projects, which will soon become a bottleneck in project delivery, not to mention the subsequent increase in pressure and decreased productivity.

An obvious way to solve this problem is to expand the DevOps team. However, this is easier said than done. DevOps experts require very different skills from developers or engineers, so it is difficult and expensive to hire.

Some organizations overcome this challenge by embedding a DevOps expert in each development team. Their responsibility is to simplify the delivery chain of their respective teams while coordinating with DevOps experts in other departments. However, this method often breeds inconsistencies and collaboration problems between teams. One way to solve these new problems is to learn from open source practices and use an internal source code approach.

Teams must have powerful collaboration tools that enable them to code, publish, and collaborate from anywhere in the world. Finally, the traditional "project-centric" approach should be replaced by a robust and decentralized "product-centric" delivery model.

"Change driven by DevOps first needs to have a convincing purpose. Then, to successfully measure change, it requires communication, collaboration, and commitment across the organization."-Qasim Khan, Senior Vice President-Commercial Information Officer, Bank of America

7. Unable to merge security


Purely on the surface, DevOps and security seem to be in complete conflict. The core of DevOps is speed and continuous delivery, while security emphasizes extensive testing and error prevention. However, companies are slowly realizing that DevOps integrated with security can help them patch vulnerabilities, release updates, and respond to cyber threats faster than ever.

Currently, DevOps faces three obstacles in integrating security into its process: slow development speed, endless security standards, and threats to visibility.

Finally, by providing security data to all team members and making it easy for them to report, you can increase threat visibility. SIEM dashboards customized according to the roles and responsibilities of each team member can provide the DevOps team with threat visibility to a large extent. In order to be effective, a reward system based on common performance goals can be established.

Each organization's DevOps plan will encounter complex obstacles unique to that organization. However, paying attention to the cooperation and stability of team members can reduce internal resistance and turn a potential source of inertia into leadership changes to ensure success.


陈哥聊测试
158 声望3.3k 粉丝

资深敏捷测试顾问,国内知名项目管理软件禅道团队成员。