Keeping it as simple as possible, to do the job it has to do.
- Getting to simple is hard work and a lot of thinking.
- Nobody gets there just dropping more and more components into a data centre.
- Simple is reusing services, minimising dependencies and fully utilising what you already have.
- Simple is doing the right things in the right places.
The five ways to keep things simple.
Eliminate the service duplication that is built into stovepipes. The most common enterprise stovepipe is the dedicated web server - dedicated application server - dedicated database server stack deployed on a per application basis. These stacks duplicate services every time. Many (if not almost all) of these applications sit on infrastructure that is barely utilised. Platform as a Service (PAAS), database clusters and load-balanced web farms remedy this duplication by aggregating resources at each tier to deliver a single deployment platform for whole classes of applications.
Minimise dependencies. Dependencies tightly couple infrastructure components and are hard to keep track of. They make change risky as change on one component is likely to break functionality elsewhere. Service Oriented Architecture gets around this problem. You can minimise dependencies by preferring applications and technologies that communicate through service interfaces and implementing service interfaces on some existing technologies.
Design for an exceptional business fit. Design cannot be decoupled from the business requirements. Appropriate solutions always trace their functionality back to documented business requirements. Exceptional solutions also take into account business realities like:
- Is this an innovative company that has to stay at the leading edge to survive, or is this a highly efficient machine that beats competitors on price?
- Is this organisation a tear-away success, battling for survival or somewhere between?
- Is this a highly structured, centrally controlled entity or a conglomeration of autonomous entities?
- Where does this organisation want to be in five years time, what specific goals does it want to achieve?
Conceptualise and describe infrastructure in a way that's easily understood by others. Infrastructure must be supportable to be successful; and it must be understood to be supported. A structured design with clear interfaces between logical and physical components is easy to understand, evolve and troubleshoot. Well thought-out infrastructure is described in terms of layers that trace back to problem domains.
Utilise and re-purpose what you already have. Well-utilised infrastructure is the hallmark of a design gone right. When we are pointing our work at the least busy processors, we have built something efficient that will make the business run better.