Tuesday, August 31, 2010

Everything Should be Software

If there's one lesson we've learned over the years it's that software is king. The tech titans of the world are Microsoft and Google, not IBM and HP. Hardware has its place but suffers from multiple obstacles including the laws of physics and the depth of education required to drive innovation. Innovation on the software side however can be as easy as doing something for the first time, and there are hardly any obstacles. As a result we have proven that software is significantly easier to build, manage, update and deploy than hardware.

The question I have is why does hardware exist in so many different forms today? Many have jumped on the bandwagon incorporating low-power processors with embedded Linux to create appliances from DVR's to EKG's and even engine control modules. What about inside the data center? We pretend today there is a big difference between the "pizza box" 2U rackmount servers with one or two multi-core CPU's and the big box 16-way multi-core machines which require a small power plant to operate. In the end the only difference between the two machines is which offers the lowest cost per performance unit.

Looking introspectively at what we today consider hardware or infrastructure applications many are nothing more than specialized servers. The true value is in the software, not the hardware. Examples include backup devices, switches, bridges, routers, DNS, directory services, and the list continues to grow.

Virtualization has taken us to the limit of the existing hardware architecture. The next step is the continued commoditization of the hardware where specialization is moved into software. The key enabler of this migration is the capability of the modern processor, both in speed and bandwidth. Many hardware devices have migrated to "appliances" and will soon be migrating to software packages. Why does this matter? Because we can leverage the existing virtualized environment to move, grow, and shrink these services just as we do application, web, and database servers.

I consider the FPGA (field programmable gate array) as the ultimate model for the data center. Such a data center would be composed of a generic set of servers configured on the fly to provide ALL of the services required from load balancing to routing, naming services to applications, data to system management. This move would improve resiliency, lower overall TCO, and provide the most efficient infrastructure possible at any given time. Considering the end of rotating storage is on the horizon, such a static hardware architecture would provide the ultimate in dynamic services!