SDN is not about centralizing control for the sake of centralization. A huge part of the objective is to automate workflows, which makes provisioning, monitoring, troubleshooting, and overall managing a network easier. To do this well, the network needs to be treated as a resource that can be sliced, diced, and delegated to as part of the application delivery process. But application workloads do not stop at the boundaries of the network.
Applications require more than just network resources -- compute, storage, and even other applications are part of the equation. If the long-term vision is to enable a highly orchestrated environment, it means that the bounds of integration need to extend well beyond the network. Even if the networking industry successfully executes against the current SDN vision, by the time those architectures are in place, they will be obsolete as IT shops everywhere look to extend the concepts to the whole of IT.
It is challenging in its own right to integrate a large homogeneous environment that exists within a single technology space. How do you even go about integrating across infrastructure silos?
The marketing folks in the room will talk about bringing these silos crashing to the ground. But, a tightly-integrated system that spans an ever-expanding IT infrastructure would threaten to bring the whole thing to its knees. Sound architectural design embraces modularity. The important bit is how these different modules come together. Those interfaces between components are what allow autonomous activity while preserving the interdependent relationships between components working towards a common goal.
More simply, the right answer is not to lump all of compute, storage, and networking under a single system that is tightly integrated. Rather, the solution is in identifying the means by which these components can interact when necessary.
The typical networking response to interaction is protocols and APIs. But protocols generally don't extend outside the network, and APIs are a very insular way of tackling the problem ("Code to MY interface and everything is good"). The question we ought to be asking is: How should components interact?
[Read how vendors are using software to handle complex operations and overcome obstacles to scaling in networking and storage in "SDN Helps Break Down Barriers To Scaling."]
Ultimately, we need to design systems where each component can act semi-autonomously based on a common view of what the broader system needs. The currency for this kind of coordination between components is not protocols or APIs, it's data. If each component -- compute, storage, or networking --has access to the data driving the system, it can consume that data and tune its own behavior accordingly.
For example, imagine a new Hadoop application is deployed. When a job is executed, that job will require compute, storage, and networking. If the data that specifies that job can be shared, it becomes the blueprint from which the servers, storage devices, interconnecting switches and routers can all work. Virtual machines can be spawned on servers in close proximity to the storage required for the job, load balancers and firewalls can be provisioned, and the network paths between the various elements can be optimized for latency and bandwidth.
The key to this type of orchestration is the data. How is that data captured? How is it relayed to interested parties? How is it normalized across the different elements, each of which consumes data at different times and in different formats?
None of these questions is unique to the network. The answers will necessarily extend across the various infrastructure elements. This means that those caught up in the throes of SDN-euphoria need to talk more with their counterparts in other silos. Because as it stands, software-defined networking, software-defined storage, and the already virtualized compute space need to come together. And, if that merger is not deliberately planned for, all of IT will be staring at a disappointing outcome in a couple of years.