Current approaches to software delivery require that we think differently about architecture. Old approaches emphasized consistency and standardization, well-considered interactions between components and systems across the enterprise, and centralized control to avoid inefficiencies that would result if different system teams made decisions independently. Increasingly, enterprises are seen as complex adaptive systems in which centralized “omniscient” control is ineffective. New delivery techniques like DevOps, with a focus on lean and agile processes, are a poor fit with the classic architecture approach. By removing stage-gate reviews and trying hard to reduce cycle time, such approaches make it difficult to impose architectural standards on individual projects.
I suggest that we re-think architecture in light of agile and DevOps approaches. At USCIS, we are experimenting with ways of doing this by moving toward more loosely coupled architectures to allow more flexibility at each endpoint. We encourage collaboration across teams on architectural questions so that we can ensure that architectural decisions support all systems with their differing needs without imposing external constraints. We created a team called Architecture and Design Services whose role is to support teams as they evolve architectures, doing research, pilots, reference implementations, and so on. The Architecture and Design Services team exerts subtle standardization control by advising teams on other enterprise needs that they should factor into their designs. These are all intended, in agile spirit, as experiments – we will see what works and try to evolve our new approach to architecture.