A decade or so ago, John A. Zachman published a seminal article on technical architecture in the IBM Systems Journal. (In publishing, “seminal” means lots of people cite it but almost nobody actually has read it.) Almost immediately, IBM issued a ton of press releases whose only significant impact was to verb the word “architect,” which hitherto only had only been nouned.
The Zachman Framework for Enterprise Architecture continues to be popular among systems theoreticians, and it is largely responsible for popularizing the idea that management of technical architecture has become a key responsibility for IS organizations. It’s an important idea because without it you end up with a junk-filled data center, databases containing conflicting information, and a hodge-podge of applications that satisfy departmental requirements without supporting the enterprise as a whole.
The Zachman Framework may even have something to do with the framework presented in this column last week. My own ideas about technical architecture evolved in happy ignorance of Zachman’s work, and the methodologies don’t seen very similar, but my platform, information, and application layers described last week match up reasonably well with his network, functions, and data.
Pick the framework you like or invent your own. However you take on the subject, focus on keeping your architecture management practice simple enough that you can afford to do it, clear enough that everyone in IS can easily understand it, and practiced as a value-adding discipline, not as a collection of inflexible, bureaucratic rules. You want people to adhere to the architecture because it’s the best way to do business, not because the architecture police are standing on every corner waiting to shoot violators.
The first step in constructing your architecture is to translate your company’s strategic, tactical, and operational goals into an overall organizing principle on which you can hang your future architecture. Having a clear organizing principle keeps things neat and tidy. But how?
Chances are, you need to deliver more capabilities than you provide today, and with greater integration.
It’s a shame that these two requirements conflict, but they do, because in most IS shops, “integration” means creation of custom interfaces between every two items that need to communicate. As the number of items and need for integration increases, the number of custom point-to-point interfaces increases exponentially.
Which means the organizing principle for most IS shops today should be the creation of an integration-centric technical architecture – one that facilitates integration in all three architectural layers.
Things become even more straightforward once you realize you only have two ways to build an integration-centric architecture.
In some circumstances you can choose a core application – maybe an enterprise resource planning (ERP) suite – and make it the heart of your architecture. Rather than creating point-to-point interfaces between every two items that need linkage, you use this core application as the architectural hub of the enterprise and integrate everything else with it.
That’s great if someone sells a core application that fits your business well enough, or if one of the ERP suites supports enough of your company needs. In an era of business diversification, mergers, and acquisitions, though, many of you will conclude that building around a core application just isn’t feasible.
The alternative is to build an integration engine. The idea is simple enough – everything plugs into it, and it handles all of the translations. I presented this concept to a client a while back though, in the form of a PowerPoint slide showing all legacy and proposed applications and databases plugging into a central cylinder. “But Bob,” scolded the DBA, “that isn’t drawn to scale!”
Designing and building an integration engine is a highly complicated exercise. If you go that route, don’t every use the words, “All you gotta do is to … .”
Instead, tell everyone involved in the decision, over and over, that your goal isn’t to make things easy. Nothing will make things easy.
Your goal is to take something that’s impossible and make it merely very difficult.