Let's start 2020 with something probably fairly controversial. I've spent much of my consultancy and managed service life working on what we call reference architecture. However, more and more, especially in the cloud I'm becoming more convinced that it's not all that relevant anymore.
This conversation started just before the New Year on Linked In with a contact of mine. He was asking for further advice from my previous article on transitioning from a managed service provider, he's gone the other way.
He was mentioning that most of his time is working with an organisation who is focused on complex reference architecture, this got me thinking. My response was that I believe more so now than ever that reference architecture is becoming less relevant, you should be deploying the architecture for the application, defined by the vendor, yes you can argue this is exactly what reference architecture is but my comments were more from a provider or enterprise perspective.
Interestingly, he replied with this article about Software Architecture. Gergely Orosz (the author) makes some great points. "First, none of these designs used any of the standard software architecture planning tools." - When discussing about building scale applications for large organisations.
Think about your cloud marketplace, you go to deploy resources in Azure, and other than the odd offering, for the most part you are deploying individual resources, more so in the PaaS world.
Also think about how that applies in the infrastructure world. You can spend loads of time as an enterprise or a service provider writing templates for reference architecture for say 10 applications. Thing is making them generic is very difficult, without hundreds of parameters. The best approach is then to define a library of templates and build your infrastructure from those templates.
This is where the marketplace comes so powerful. I'll have a Cosmos DB, App Service, Databricks, etc. Take the effort to build reference architecture for X application, chances are you'll only ever use it once or a couple of times.
So instead, let's focus on template repositories, letting people pick what they need from a picking list of resources, rather than forcing people to architect to a specific way which may not be valid.
Main point of this article here is think blueprint, not always reference architecture. Think about individual resources rather than complex reference architecture.