Simplifying Application Porting

In our last blog, we talked about how difficult it often is for new or disruptive technologies to be adopted by applications. In the SNIA™ Persistent Memory Summit last week, one panelist stated that it takes eight (8) years on average from the advent of a new technology to when it enjoys widespread use by mainstream applications. That is a LONG time for any companies (let alone venture-funded companies) to wait to be able to capitalize on a large market. The obvious question is “what can we do to speed up the adoption/support of new technologies by applications?” There are really two approaches to making application porting to new technologies quicker, and each embodies tradeoffs that we will explore below.

The first of these is often called “plug and play”, and really entails making new technology look to applications like existing technology, but just faster. Flash storage (in the form of 2.5” drives with SAS or SATA interfaces) were a recent example of this – you could plug them into a system just like a hard disk drive (HDD), and just start using them. The negatives of “plug and play” are: i) It often doesn’t optimize the performance of the new technology; and ii) there are often unforeseen negative impacts (think of the impact of standard HDD RAID methods on flash wear leveling). The plus of “plug and play” is that it let’s you field a new technology almost immediately, with the idea that the negative issues get addressed over time.

The second approach can be thought of as “limited adaptation”, where the industry-standard interfaces or APIs are used as much as possible, and only a few changes are required to support the new technology. There are two flavors of limited adaption: i) use of proprietary “adaptation layers” (vendor-specific drivers are one example); or ii) creation of new standards by industry-standard groups. The positive of the first of these is that (for some cases) it allows quick fielding of new technologies (albeit with concerns about end-user lock-in). While the industry-standard approach eliminates the end-user lock-in concern, it typically takes years to reach the point where standards are in place. A good example of these (again, looking at flash storage technologies) are PCIe flash storage cards (also known as “tier 0” flash; Fusion-io was an early leader in this space) which utilized vendor-specific drivers and management layers; versus NVMe flash storage, which was actually an industry-standard outgrowth of the early PCIe flash storage cards, but which took roughly half a dozen years to result in actual products. Our next blog will investigate NGD’s approach to accelerating the adoption of computational storage by applications.