The Agile Toolkit Podcast had a great
episode this last week. The interview
was with the author of Clean Code, Bob Martin on the topic of clean
architecture, among other things. One statement that was made during the
interview, and I am paraphrasing Bob, was that the various technologies
that make up a system architecture (i.e., the database server, web server
etc.) are just the implementation details, they ARE NOT the architecture.
He stated that an architecture consists of the use case scenarios for a
system. I tend to agree with that line of thinking. I think there tends
to be an inappropriate emphasis put on things like: the dbms (Oracle, MS
SQL Server, NoSQL, Hadoop etc.), the programming frameworks/languages (i.e.
features that must be built. There is certainly too much architecture built
around database vendor products and services buses.
Technological tools serve at the pleasure of those building the solution.
Could you imagine building a house with brad variety nails (i.e. something
you'd use to hang a painting) because you only have a 4oz. Ball Pein hammer?
The usage scenarios should drive the tools that are selected to build a
solution, not the other way around.