Microsoft has applied several agility lessons to embracing DevOps across its Cloud + Enterprise (C+E) business.
The C + E engineering group, which encompasses products and services such as SQL, Power BI, Azure, Visual Studio, Visual Studio Online, Windows Server, and System Center, has taken the lead in DevOps practices at Microsoft.
“For many years, we have been implementing Agile practices across our teams,” said a post by Buck Hodges, director of engineering for Visual Studio Online and Team Foundation Server (TFS), and Munil Shah, director engineering for Visual Studio Online. “What we had discovered is that our developers and testers became very efficient at producing, but we had not yet changed our operations processes to be able to ship more quickly as well. We had created a bottleneck into the operations team. We needed to apply the lessons we learned with becoming Agile and move into the world of DevOps.”
Microsoft said DevOps quickly evolved Application Lifecycle Management (ALM) and Agile methodologies to address the needs of the digital business, including the importance of transparency, communication and collaboration between development and operations teams, and the inclusion of the project’s business owner and other critical groups, such as security (DevOpsSec), networking and compliance .
Moreover, DevOps can help teams respond faster to competitive pressures by replacing error- prone manual processes with automation for improved traceability and repeatable workflows. Organizations also can manage environments more efficiently and enable cost savings with a combination of on-premises and cloud resources, as well as tightly integrated open source tooling.
Other DevOps benefits include the ability to deliver better quality software faster and with better compliance, drive continuous improvement and adjustments earlier and more economically; increase transparency and collaboration among stakeholders involved in delivering and operating software; control costs and utilize provisioned resources more effectively while minimizing security risks, and plug and play well with many of your existing DevOps investments, including investments in open source.
To illustrate this, Microsoft has produced a series of DevOps videos that discuss how different teams from Tools, to Azure, to SQL and Windows Server, have made cultural adjustments in how they build software and how they’ve brought engineering and ops together in the process.
“It’s a different world; it requires a fundamentally different kind of development and operations process,” said James Phillips, corporate vice president of Power BI and Data Analytics at Microsoft.
In an eBook describing Microsoft’s journey to DevOps, Sam Guckenheimer, developer engineering manager at Microsoft, said, over seven years, the Microsoft Developer Division embraced Agile and achieved a 15-times reduction in technical debt through solid engineering practices. However, that was not enough. DevOps became the goal.
“Part of a DevOps culture is learning from usage,” Guckenheimer said. “A tacit assumption of Agile was that the Product Owner was omniscient and could groom the backlog correctly. In contrast, when you run a high-reliability service, you can observe how customers are actually using its capabilities in near real-time. You can release frequently, experiment with improvements, measure and ask customers how they perceive the changes. The data you collect becomes the basis for the next set of improvements you do. In this way, a DevOps product backlog is really a set of hypotheses that become experiments in the running software and allow a cycle of continuous feedback.”
Microsoft Takes Journey to DevOps Success
Hodges and Shah said DevOps practices and habits have been essential for Microsoft to improve delivering better services across the board. They also found that the organizational changes and cultural shifts required to embrace these practices have been quite significant.
“Customers expect more and more frequent delivery and we just can’t have any traditional roles getting in the way,” said Lori Lamkin, director of program management for Visual Studio Online. “We needed to apply the same things we learned from the world of agile planning into the world of DevOps.”
In the past, Microsoft had three distinct roles on its “feature teams.” These were program manager, developer and tester. However, the company wanted to reduce delays in handoffs between developers and testers and focus on quality for all software created. To do so, Microsoft combined the traditional developer and tester roles into one role — software engineer. Software engineers are now responsible for every aspect of making their features come to life and performing well in production, Hodges and Shah said.
“We realized that what had worked two decades ago, having separate engineering systems in separate groups was now hurting us,” Guckenheimer said.
“We’re saying that the developers and the operations people work closely together throughout the entire phase of development – all the way from design to deployment and production,” Shah noted.
To deliver the best set of services to its customers, Microsoft needed engineering and operations to work closely together throughout the entire lifecycle. So they brought the operations team and engineering team together.
“The close coupling between the individuals who are writing the code and the individuals who are operating the service itself allows us to get capabilities into production much more rapidly,” the Hodges and Shah post said.
Moreover, a new significant culture shift occurred. “Software engineer accountabilities transitioned from responsibility for not only building and testing but ultimately the health of production,” the post said. “This accountability shift has two aspects. First, we want the feature teams obsessed with understanding our customers to get a unique insight into the problems they face, and how they can be raving fans with the experiences those teams are building. Second, we needed the feature teams and individual engineers to own what they were delivering into production. We are giving engineers the power, and we are giving them control and authority over all of the parts of the software process. You develop it, you test it, you run it. If something is wrong, you have the power to fix it.”
Overall, DevOps has helped Microsoft to ship products faster and improve customer service. A major principle Microsoft has followed in its DevOps journey is getting fast feedback throughout every phase of the software lifecycle and using it to improve at every step.
To help other organizations with their own DevOps journeys, Microsoft offers a DevOps Self-Assessment tool.