Even as computing changes at a dizzying pace, there are some things that remain the same, as those with a computer science degree know. There will always be algorithms, bugs, and both hardware and software, right?
Well, on that last part, maybe not. A trend in computing is for the merger of traditional software and hardware to a mix. Instead of neatly splitting the two worlds, there is an emerging category of hybrid collected under the general term “software-defined.”
The idea of combining hardware and software into a mix isn’t new. Many types of consumer electronics, industrial equipment, and other devices are controlled by the combination of a processor and firmware that tailors the computational work into the specific needs of an application.
Software-defined gear is similar in some ways. There is specialized hardware, accompanying software, and an additional layer of management software. One big difference is that in the software-defined world, you’re not looking at individual devices, but collections of devices. A software-defined network will include the cabling, switching equipment, and other elements. Software-defined storage will include a battery of disk and optical drives, storage appliances, and utilities to run and manage the storage.
If this is beginning to sound a bit like another name for virtualization, it is in a way. Software-defined systems rely on the fundamentals of virtualization to bring together control of perhaps thousands of individual pieces of hardware and software and assign capacity as needed to different needs. But instead of focusing strictly on servers, the technology is now applied to varying computing resources. By managing all of the storage or all of the security operations together, you have, in theory, a pool of capability that you can use more efficiently. Rather than devote a single drive to one storage need, for example, you can allocate the total amount needed without wasting excess capacity on the drive. Instead, the excess can be assigned to another application. Similarly, management happens centrally, leveraging a small group of software installations and administrators to handle everything.
But this concept will not be restricted to running a data center or network. Eventually all manners of infrastructure could be treated in a similar way. For example, self-driving cars could act as a taxi fleet, with central management treating position, range, and traffic conditions at specific times as capacity to be used efficiently. Power delivery might be handled in a similar way, with energy from distributed renewable sources being directed to where they are most needed at the time, instead of the inefficient concept of pouring all power into a central grid.
Software-defined will become an increasingly subtle concept that more effectively uses limited resources while it opens new opportunities for computer scientists and software engineers.