All the above are compounded into a toxic cocktail when the impact on strategic decision-making is considered. Without correct, comprehensive data that is free from subjectivity, one is reduced to estimation when trying to prioritize the most urgent work to address the most serious IT risks, rationalize to a common set of technologies, or simplify the application landscape.
To reach and maintain appropriate levels of objectivity, quality and correctness in the data describing architecture, a level of rigour is needed that is normally associated with software engineering. This is known as “Architecture as Code” - applying the same levels of control to the data that describes your architecture as you would to the code that implements it. The architecture data is versioned, managed and tested (committed, peer-reviewed, branched) in a code management tool such as Git. Fundamentally, the Architecture is the Data - the architecture is explicitly not frozen in analogue diagrams.
There’s something of a mindset shift here - challenging but ultimately bringing significant benefits. Evolving the Practice of Architecture away from human-centric analogue processes brings about generation of diagrams from data, automated governance with testing for consistency and standards, and direct integration of the architecture code into delivery pipelines. Imagine that: architects become integrated into the end-to-end engineering team, directly enabling positive change rather than frustrating or obfuscating delivery.
Populating the central store of your architecture data is also not trivial, in much the same way as other business-critical aggregated datasets: customer data, transactional data, data about individuals connected to the organisation. Whilst this is a tough nut to crack, the good news is that there has been some interesting thinking and tool deployment in this domain. The raw material is a jumble of hand-written documents, confluence spaces, stores of domain knowledge, application catalogues, production telemetry... the list goes on. What’s the common factor here? All this data is human language - and so you can immediately deploy modern LLM-based tools to process and evaluate it. AI-augmented data discovery can take on a lot of the grunt work in generating the codified data you need - and there’s a crucial role for domain experts and architects in reviewing and polishing that generated data. Furthermore, referentially linking those disparate datasets (e.g. which technologies implement which applications, or which applications support which business capabilities) can also be achieved using the same approach: AI doing the heavy lifting, with human experts reviewing the output. It’s a powerful combination.
Once you’ve got some decent data describing your architecture and IT - even if it’s an evolving landscape - you can start to get some value out of it. We’ve been experimenting with architecture data at Icon Solutions, and whilst it's entirely possible to do this by building static SQL queries, we’ve found that once you’ve worked out how to expose your Architecture as Code in appropriate data frames and format it into JSON, LLMs can be used to evaluate it.
We had good results when wrapping a model (defined in, say, PlantUML) around the LLM output using a small amount of Python code - producing a data-driven visualization, which automatically updates as the underlying data does. AI is somewhat constrained due to its output being textual (especially on larger datasets), but judiciously prompting the LLM produces filtered views of the data. These can then be piped into a diagram generator, to produce a view of whatever the stakeholder needs: non-strategic technology usage in a particular domain, for example, or projected cost savings from applications which are slated for decommissioning. We also found that the currently-available models for Architecture as Code don’t quite “fit” in some way or other: a view or perspective is either over-emphasized or missing - but using data-generation approach gives you the option of choosing the most appropriate model from all those available - all generated on-demand from the same underlying data.
For those of us who have legacy IT to curate and improve, AI-augmented tooling can greatly assist with harvesting and evaluating the data which underpins Architecture as Code. In the second half of this blog series, we'll look at the wider vision of Architecture augmented with AI - for which Architecture as Code is an absolute prerequisite, and which makes architects as much a part of end-to-end value delivery as engineers.
If you would like to find out more, get in touch today.