Disciplined Agile

Enterprise Architecture Strategies for DevOps

There are several enterprise architecture strategies that support Disciplined DevOps:

  • Reuse mindset. An important thing that your enterprise architecture efforts will accomplish is the promotion of a reuse mindset throughout your organization. Delivery teams with a reuse mindset strive to leverage various types of assets such as data sources, components, templates, and many others. This reuse mindset is enabled through education, coaching and mentoring by your enterprise architects (who are ideally active members of delivery teams in the role of Architecture Owner). It is also enabled by roadmaps that indicate the technologies that delivery teams should, and shouldn’t, be working with. And of course, having high-quality assets that are easy to discover, to understand, and to apply in the course of providing real value to your customers enables reuse.
  • Technical-debt mindset. Your enterprise architecture effort should promote strategies that motivate delivery teams to pay down technical debt when they find it and more important do what they can to avoid it in the first place. Many technical debt strategies are embedded right in DAD, but without a technical-debt mindset this often comes to naught. Enterprise architects, often acting as Architecture Owners on delivery teams, should coach and mentor developers around the issues associated with technical debt. Similarly they should help to educate the senior managers and stakeholders whom they collaborate with in technical debt as well. It requires investment to avoid and remove technical debt, and investment decisions are typically in the hands of these people.
  • Development guidelines. An important aspect of enterprise architecture is the development of guidelines for addressing common concerns across delivery teams. Your organization may develop security guidelines, connectivity guidelines, coding standards, and many others. By following common development guidelines your delivery teams produce more consistent solutions which in turn makes them easier to operate and support once in production, thereby supporting your DevOps strategy. A potential drawback of common development guidelines is that developers may feel constrained by them. To counteract this problem the guidelines should be developed and evolved in a collaborative manner with the delivery teams, not imposed from above.
  • Roadmaps. Your enterprise architecture efforts include the definition, support, and evolution of roadmaps that guide the efforts of the rest of the organization. This in turn supports the creation of a common and consistent technical infrastructure within your production environments, enabling common DevOps practices such as continuous deployment, automated end-to-end regression testing, and operational monitoring amongst others.

An important aspect of your roadmap is to capture both the existing operational infrastructure and the future vision for that infrastructure. Your operational infrastructure potentially includes your network, software services, servers, middleware, and data sources to name a few elements. As you can see in Figure 1, when developing your infrastructure vision there are two issues to consider:

  • Ownership. Does your organization own and operate its own infrastructure or does it outsource some or all of it to external experts. Outsourcing options include traditional strategies such as having another organization (such as HP or IBM) run your data centers to using cloud-technologies hosted by external organizations (such as Amazon or Google). The advantage of owning your own infrastructure is the greater level of control that it provides you, something that is critical when you must guarantee the security and integrity of your IT solutions. Outsourcing potentially offers greater flexibility in managing your IT infrastructure and cost savings from economies of scale. However, outsourcing requires more sophisticated governance and in the case of traditional strategies is a potential bottleneck when the outsourcer cannot respond in a timely manner to your requests.
  • Virtualization. Are the elements of your IT infrastructure built to meet the needs of specific solutions or are they softwarized to provide malleability and ease of evolution? With softwarization, also known as software-defined infrastructure (SDI), the elements of your IT infrastructure are fully virtualized. Softwarization includes IT infrastructure models such as a software defined data center (SDDC), software defined storage (SDS), and software defined network (SDN). Softwarization is typically implemented using cloud-based technologies on either side of your firewall. Greater virtualization offers to increase flexibility and programmability of your IT infrastructure, and thereby enabling you to optimize resources. However, the greater flexibility of virtualization can increase the complexity of your testing efforts and make operational incident simulation more difficult.
Continuous Integration new

Figure 1. Martin Fowler’s technical debt quadrant (click to enlarge).