More Musings....
I think for a great many people in the storage industry, the Storage Array is the answer, the one true answer and do everything in the array. When this gets challenged, we get very defensive; the recent Forrester report asking whether we need a SAN any more elucidated some fairly defensive responses. But it's a question that we need to be asking ourselves more often; we need to be challenging ourselves regularly on this point. The core of our storage strategies may still be Networked/Shared Storage but this does not preclude doing things in a different way.
EMC, I think have woken up to this fact with Atmos; I'm not saying that Atmos is unique or special, I'll leave EMC to say that but Atmos is arguably the first attempt by the big storage boys to look at storage delivery in a different way. It really acknowledges that the special sauce is software; there is no real reason why Atmos could not be delivered as a software appliance, it runs on industry standard hardware utilising pretty dumb disk at the back-end. It is an *Interesting* product and I look forward to seeing it developed, matured and delivered.
But still Atmos delivers storage as a discrete entity, abstracted away from the application platform. I am beginning to come round to the idea that the application platform needs to become more tightly integrated with the storage and at time the application may well do things that the storage has done in the past.
Replication for example; don't get me wrong, array-based replication has served us well; integration, testing, maintenance, complexity and the magic pixie dust which makes replication work has kept many a storagebod fed, clothed and kept in the style to which they have become accustomed. But perhaps there is a better way, perhaps the applications themselves should be managing their replication, ensuring that they are transactionally consistent, after all they have a better view of what transactionally consistent may mean than us guys at the bottom of the stack. We should be starting at the top of the application stack and asking the question, would it be better to do it here?
Clustering, back-up, archiving, many traditional infrastructure functions may be better carried out better at the application level. At least ask the question and think about the answer.
So why doesn't this happen? Firstly, generally Non Functional Requirement gathering is an afterthought! That's boring stuff and anyway, the infrastructure teams look after that stuff for us. Secondly, the clue was in the words "infrastructure teams"; application teams and infrastructure teams rarely have a close relationship; often the first contact that the infrastructure team will have is when an application is delivered to be integrated into the infrastructure and they try to get the application to meet it's NFRs, SLAs etc. At this time, the relationship rapidly becomes antagonistic and fractious; surely the better thing would be for infrastructure teams and application teams to work closer together. The boundaries between the teams need to become blurred and some sacred cows need to be sacrificed. And yes, there is the belief that it will constantly mean re-inventing the wheel but with modern development methodologies and code re-use, this should not be the case.
Turning to the infrastructure to fix application problems, design flaws and oversights should become the back-stop; yes, we will still use infrastructure to fix many problems but less often and with a greater understanding of why and what the implications are.
I am hoping that as the downturn begins to bite that we will be forced to do this and that 2009 will become the year that applications and infrastructures become more integrated. Yes, you will still need storage, servers, networks but as the boundaries blur between infrastructure teams, so the boundaries between infrastructure and applications should blur as well. We all have a common goal in that we provide service. I live in hope...eternal optimist!!