It’s typical for technical people: ask them what a product does, and they’ll tell you how it works.
I can’t tell you what the box does…
As a little self-test: what does the engine in your car actually do? Can you accurately describe its function? If you know something of automotive technology, you may find you’re tempted to explain the engine to me as an internal combustion device that burns fuel and thus converts the energy into motion; pistons, cylinders, valves or injection, all that stuff. But “burning fuel” is not actually the goal of having the engine in your car, is it?
The same applies to infrastructure facilities: if you point to a box, its administrators can tell you how it is connected, how it is configured, and what cool features the vendor has created that they were able to use. But the language the admins use will likely be rife with buzzwords and proprietary terms that the vendor has made up, or has twisted in a Humpty-Dumpty way (“When I use a word, it means just what I choose it to mean – neither more, nor less”). This serves the vendor well, because to retain these proprietary features, the best product to augment or replace his box will almost automatically be another one of his own boxes. But infrastructure architects shouldn’t want to limit their choices this way.
… but I can tell you how it works.
If we look again at your car’s engine, its function is to propel the car. Other functions that are performed by different car parts: breaking, steering, signalling, lighting, offer seating, protection against impact, protection against the climate, et cetera. As our culture has had over a century of experience with automobiles, these different functions are easily recognized. (And you therefor probably already gave the proper answer in the previous self-test).
Now if we look at infrastructure facilities, we find there are many words that describe the construction and its components (router, firewall, CMS, server, hypervisor, database), but we seem to lack the proper functional vocabulary. One could wonder if we could simply put “ing” behind a construction items name to describe its function. When we try that, we find that “Routing” and “firewalling” seem OK. But “Content Managing”, “serving” and “data basing” are too generic, and “hypervisoring”… well that doesn’t seem to mean anything. And by the way, doesn’t your firewall also do other things, like routing and logging?
It’s clear we need to look at infrastructure in a different, more fundamental way. At the most basic level, we could say that infrastructure transports, stores, and/or processes a customer’s data. But using a vocabulary of only three verbs won’t get us very far, so we need more specific words to describe infrastructure functionality.
The OIAm functional vocabulary
Fortunately we don’t have to make up these infrastructure functions from scratch. There’s a community surrounding the Open Infrastructure Architecture method (OIAm), that has been working on this problem of recognizing and naming infrastructure functionality since 2008. This has resulted in a list of some fifty-plus infrastructure functions, ranging from “distribution” (what a router does) and “filtering” (what a firewall does) to “interconnection” (long range network connection), from “Application Engine” to “Identity Validation”, et cetera. Tested in practice, the set of infrastructure function covers just about everything that the infrastructure architects need to describe.
One thing that remains difficult, however, is how to come to acceptable names for the functions. We’ve found cases where a function was named with a seemingly fitting, industry accepted term, only to find that architectures containing this function were misunderstood by some, precisely because of that familiar term. Examples are Authentication (now named Identity Validation) and “Basic Storage” (now Raw Retention). It turns out that many recognizable terms can be interpreted in many different ways, some narrow in interpretation, others quite sweeping. On the other hand, if functions are named with seemingly abstract, obscure, or otherwise unknown terms, then some stakeholders may regard the whole architecture built on those functions as a fairly useless academic exercise.
So in naming generic infrastructure functions, we need to maintain a precarious balance between terms that are too familiar, and terms that are too alien. Have the community succeeded in this? Maybe you can have a look for yourself, and if you think you can help us improve, feel free to drop me a line. And since the vocabulary is published under a Creative Commons license, you are free to use it as you see fit.
SUBSCRIBE TO BIZZDESIGN'S BLOG
Join 10.000+ others! Get BiZZdesign's latest articles straight to your inbox. Enter your email address below: