Compute started its major architectural transition several years ago with the introduction of virtualization. If you pay attention to any of the IT noise today, it should be clear that storage and networking are going through their own architectural evolutions as well. But another shift is also underway: applications are fundamentally changing as well.
An interesting dynamic in all of this is that it is near impossible for each of the four major IT areas to undergo simultaneous, coordinated evolution. Change is hard enough on its own, but changing multiple variable at once makes it difficult to anchor to anything substantial. And when change does occur along multiple fronts at the same time, the task of determining causation for newfound results is challenging at best.
Understanding that business underlies much of the change, the best that the industry can collectively do is to take some things as fixed and then change around that. And so we evolve each of the silos somewhat independently, trying hard to keep in mind that the environment into which they plug is also changing. At our best, we try to intersect the various changes. But when we miss, we tend to aim towards slotting into current architectural paradigms, because that allows us the best chance to make a meaningful difference in production environments. Indeed, always playing out ahead of the horizon might be great for making future progress, but it makes building a business around the resulting innovation nigh impossible.
And so IT as a whole continues the trudge forward.
Each of the major infrastructure silos—compute, storage, and networking—has to operate with some fixed environment in mind. The most basic thing to attach to is application infrastructure. While virtualization has made compute containers that make applications portable (the reason dynamic and change are so prominent in most marketing materials), the applications themselves have remained largely static.
Except, of course, that they haven’t.
Anyone watching the major web-scale players (think: Facebook, Google, Twitter, and the like) will know that the architecture for their applications is actually significantly different than what most enterprises currently think of. Applications tend to be flatter and more distributed, typically running on bare metal to avoid some of the virtualization overhead that exists in a pure hypervisor environment.
This new breed of scale-out applications would appear to mark the beginning of the application evolution. If this is truly a trend that will only increase, how will it impact the evolution of the other silos?
The prevailing chatter across the whole of IT is about software-defined everything. The view is that compute, storage, and networking will all work in cahoots to meet application requirements. The rise of controller-based architectures is prominent in both networking and storage roadmaps, and the compute side of the house embraced central control awhile back.
But what happens if the underlying assumption that applications emerge largely unscathed turns out not to be true?
It could be that the future of datacenter architectures will hinge not on the supporting infrastructure but on the applications themselves. If this is true, we could see a re-emergence of something that we haven’t really talked about in quite awhile: the operating system itself. Sure, there is still talk about Linux and all the server tools that come with it, but the actual operating system hasn’t materially changed in quite some time.
Learning from web-scale applications
If we learn anything from the web-scale companies pushing the boundaries for application performance, it should be that the future is not necessarily about the containers in which applications run. It could be about the underlying OS itself. What if the reason massively scaled companies are embracing bare metal isn’t only about the cost? There is certainly a performance aspect to it as well.
One somewhat uncomfortable conclusion here would be that all the infrastructure work involved in handling application portability across a containerized infrastructure could be somewhat transient. I don’t mean to suggest that it is not useful; there will be a relatively long transition to any kind of new application architecture. And even if there is a transition, the persistence of mainframes should tell us all that no change is absolute or all-encompassing. But a scenario where pockets of new-era applications co-exist in data centers with legacy applications seems likely. We are already seeing this with Hadoop, but I would expect to see more applications built on new architectures.
But this does mean that future-proofing datacenter investments requires a bit more nuance than just buying and planning on scale. Highly-distributed application architectures are even more dependent on east-west traffic. For every 1 byte of traffic going in and out of the datacenter, close to 1 Gigabyte transits the datacenter fabric in some current applications. This ratio likely gets even more aggressive over time.
The bottom line
How all of this plays out is anyone’s guess. We will certainly end up with a hybrid environment supporting all kinds of application architectures making use of various underlying infrastructure architectures. But none of us should be surprised when the industry starts talking a bit more broadly about the role of the operating system going forward. And if you are making plans based on a set of assumptions anchored to current architectures, it might be worth expanding the strategic aperture some to consider how this impacts current plans.
And as a final thought, if the operating system changes, is it still defined by the server, or do we end up with large, distributed operating systems? Put differently, what is the definition of the underlying platform? Are we looking at a new era of platform that includes all of compute, storage, networking, and applications? The implications would be dramatic.