DevOps has taken the IT world by storm, and many companies are reaping the rewards of adopting a DevOps approach to software development. This is done by encouraging increased communication and collaboration between operations staff and developers throughout the entire software development lifecycle. A well implemented DevOps strategy allows organizations to minimize their speed to market, which is particularly valuable for face-to-face services that need to move at the speed of business.
In addition to increasing the frequency of software releases, DevOps also improves the stability, reliability and robustness of the software being delivered. Despite the high potential rewards, many companies are struggling to successfully adopt and implement a DevOps culture. Below are the 5 most common obstacles that organizations face when implementing DevOps, and how to overcome them.
According to a Microsoft report called ‘Why DevOps Matters’, a company’s organizational structure is the most common stumbling block when adopting DevOps. When managers focus exclusively on technology and not enough on their employees, the DevOps strategy won’t work. The most important thing for managers to be aware of is that DevOps is not just tech, it is a way of working and thinking. With this in mind, effective people management is the key to successfully aligning the existing organizational structure with a DevOps-driven strategy.
Companies can transition to DevOps more smoothly if they gradually adjust their organizational culture well before implementing the change. The first step is to gain a comprehensive understanding of employee’s day to day tasks and behavior, and determine any additional training that may be required. Proper training and education will allow staff to quickly and seamlessly adapt and transition to DevOps. Gradual adoption will minimize the risk of employees feeling like changes are being forced on them.
Resistance to Change
Change is never easy in the workplace, especially when everyone has been doing things a certain way for a long time. The fear of the unknown, losing control and even being left behind or fired all contribute to employee resistance to change. Switching to DevOps can be extremely beneficial, but it inevitably threatens the status quo. Clear and open communication between management and employees is needed to overcome any potential resistance.
Employees are at the heart of any DevOps strategy, and a good manager will help employees realize this. In addition, responsibility for implementing DevOps should be delegated to the workforce, as opposed to a traditional top-down approach. Taking ownership of the process allows employees feel involved, have more control, and feel more secure as a consequence.
Moving from Legacy to Micro-services
Even though existing Legacy applications and infrastructure might have served a company well in the past, they can be extremely problematic when transitioning to DevOps. It is more than likely that these systems were set up without DevOps best practices in mind, and as such are difficult to integrate into the new infrastructure.
The best practice is to maintain legacy apps and systems while focusing on gradually phasing them out and transitioning to a DevOps strategy. Performance measuring tools can help you keep an eye on the transition progress by carrying out automated regression tests. A completely opposite approach is to create a new system that will maintain the legacy infrastructure without interfering with your DevOps system.
Replacing old apps with new microservice-driven architecture allows for quicker innovation, faster development, and continuous releases. There is, however, a high barrier to entry with microservices. Several conditions need to be met in order to cope with the increased operational workloads brought about by microservice implementation. The foundations of configuration management, continuous delivery and automation systems need to already be in place for microservices to work effectively.
The already complicated process of transitioning to DevOps becomes even more difficult when you try to scale up. This is particularly true for large organizations that already have deep set internal politics that all too often hinder the transition process. In his book “Starting and Scaling DevOps in the Enterprise”, Gary Gruver notes that the first step to scaling up is to broaden the workflow from just one developer to the entire team. Having a strong CIO installed to lead the DevOps team also goes a long way to making sure nothing breaks when scaling up.
In the case of truly huge enterprises, it is common for different sectors to start implementing DevOps individually and independently, which often creates a fragmented landscape. This means that different subsidiaries can end up using different DevOps tools and software that are ultimately incompatible and lead to integration conflicts. To avoid such a scenario, DevOps should first be implemented centrally and only then rolled out to the entire organization. By doing so, all subsidiaries are on the same page and have a single, well defined approach to measuring key metrics[VN1] and strategic goals and milestones.
Security and Governance
Many organizations overlook security and governance when implementing DevOps. This often happens when trying to quickly shift to rapid app deployment, and can lead to a lot of problems down the line. A lack of security protocol can be fatal for cloud-based applications, leaving them open to sensitive data leaks and even outside attacks. Security is such an integral part of the DevOps process that a whole new term has been coined for a security-first DevOps strategy[VN2] : DevSecOps.
As important as compliance and security policies are, many companies feel that strict adherence to them leads to slower deployments and impedes the process of rapid innovation. Fortunately, there is a way to operate at pace and still have all of your security and compliance systems up and running. Application Release Automation (ARA) products both support software delivery and automatically check everything is in compliance with security and compliance policies. ARA ensures that companies can keep up with frequent software deployments while being in total control of administrative security and protecting sensitive or confidential data.