Most organisations have a degree of heterogeneity in their infrastructure for example:
- mainly Windows with a few Unix or Linux servers
- multiple versions of SQL Server because of application restrictions
- a mixture of fat client and thin client systems because of application and mobility drivers
- virtual and physical servers
Cost can also be a contributing factor to heterogeneity – for instance an organisation wants to virtualise its whole infrastructure but can’t afford to perform the migration in a single project under the current economic conditions.
Complexity, in infrastructure terms, may seem to be the same as heterogeneity in that a complex infrastructure is usually heterogeneous however a heterogeneous infrastructure isn’t necessarily complex.
Complexity arises from a number of sources:
- multiple systems performing the same task
- manual administration processes across multiple, disparate systems
- multiple technologies - “just because we can”
- wrong choice of technology
- infrastructure driven by technology rather than business need
- adopting new technologies without a clear business need
The last point may need some clarification. There is a simple progression of needs:
- organisations have business processes
- business processes need applications to make them work
- applications need to be hosted on and supported by infrastructure
If we approach this list in a top down manner we build infrastructure that meets the business requirements. If we supply technology and attempt to make the applications and business processes fit the result may well not meet the requirements and almost certainly will be more complex.
Complexity can be removed from a heterogeneous environment e.g:
- use Active Directory for authentication\authorisation on your handful of Unix/Linux servers
- extend your management tools across the whole environment
- determine a strategic approach to infrastructure and ensure there is a governance/enforcement mechanism
I’ve stated before that infrastructure seems to a forgotten subject. There is a lot published on software architectures but very little on the infrastructure. We don’t even seem to have a set of guiding principles. I’ll offer one here:
Heterogeneity driven by business need should be embraced. Complexity should be removed from the environment.