Releasing software is hard.
Sure, the individual steps like specifying, developing, testing, documenting, and planning support for new software features are difficult enough — but the discipline of knowing when to STOP adding features, and to focus instead on finishing a complete, polished, release-ready product is tougher than it sounds to those outside the industry.
In any software organization worthy of the name, there are more good ideas than can possibly be put into any specific product release. There are also just a stunning number of bad ideas competing for inclusion in shipping products (I am notorious within Digipede for proposing needlessly specific bad ideas. Mercifully, my partners of 20 years have honed their skills in talking me out of the worst of them.)
We decided early on at Digipede that our feature set would be guided by three principles: Performance, simplicity, and a focus on adding value to the Microsoft platform. Over the past five years, these principles have helped us make decisions on what to include (and as importantly, what to exclude) from our software.
Last month, we reached general availability of the latest release of the Digipede Network, Version 2.1. You can see what’s new in this release on our Web site, but now that our customers have had an opportunity to upgrade, let’s look at a few of the specific new features to see how we did in sticking to those principles:
Job concurrency: The improved Digipede Agent software can manage different applications running simultaneously on multiple cores of a single compute node, maximizing utilization of compute nodes on the grid. Users can set Job Concurrency values to allow the Digipede Agents to work on multiple jobs simultaneously: designate which applications can safely run with other applications, which applications can run side-by-side with themselves, and which applications are not compatible for concurrent jobs.
Performance! This one is just amazing. As new machines ship with more and more cores inside, I am continually baffled at the lack of attention from ALL the major vendors out there about how to take advantage of those cores. Sure, Intel talks about compilers and Microsoft talks about Parallel Extensions and so on — but in shipping products in 2008, there’s just incredibly little help for users and developers who want to take advantage of multi-core processors. What we shipped in Version 2.0 last September is still miles ahead of other software options in terms of both development patterns and execution modes for multi-core processing. With Version 2.1, we’ve extended that lead significantly — if you want to take advantage of dual-CPU quad-core servers and desktops TODAY, you need to take a look at how the Digipede Network handles concurrency. Watch the 4-minute video that shows how, then get an evaluation copy of the software and try it yourself!
Management APIs: New management APIs give developers programmatic ability to create, modify, and delete resource pools. (Available in Professional Edition only)
Performance (specifically, scalability), and Simplicity (of grid management). A browser-based UI for grid management is great — for small grids. As our customers deploy larger and larger grids, they need both the browser-based UI of Digipede Control and a wider range of tools for the programmatic manipulation of grid resources. It is vastly simpler to take advantage of thousands of grid nodes through simple extensions to our management API.
Risk-free sharing: “Pool Rank” permits risk-free sharing of resources: you can add your servers to the enterprise grid and ensure that they always work on your jobs first. That means that by joining the grid, you can only improve your application performance. You can donate your cycles when you are not using them without worrying that your application performance will degrade, because you are always guaranteed that your machines will work for you.
Performance and Simplicity. We’ve also referred to this feature as “Selfish sharing.” We hear from other grid vendors about how users “must” get over the practice of “server hugging.” We try not to be so arrogant; we’ve never found that scolding our customers is good business practice. If customers want to preserve unconditional priority on their own servers, we say “good for them.” So we’ve built a straighforward way to preserve absolute priority for the resource owner, even when they offer to share surplus resources. From what our customers tell us, we think this approach encourages efficient resource sharing far more than lecturing ever would.
First Grid Computing Solution Certified for Windows Server 2008: We followed the long and winding road of the Early Adopter program to become the first grid solution to obtain this important certification, so that customers can be confident that our software works not only with the Microsoft products they use today, but with all the latest improvements Microsoft is bringing to market now.
Performance, Simplicity, and Microsoft focus. By aligning with Microsoft’s technology and strategy, we help our customers create a truly dynamic IT infrastructure. Server 2008 brings many benefits in performance and manageability, and we’re confident that our customers will be upgrading quickly (more quickly than, say, to Vista); we want to be sure they can use our latest capabilities on Microsoft’s best OS platform.
Let me be candid here; these benefits do not come free to ISVs. I have considerable anxiety over extending yet further the number of versions of Microsoft products we support — for example, while I think Server 2008 is great, and Visual Studio 2008 is great, and the new SQL Server 2008 will be great, staying current means we’ll have to start enforcing our requirements by turning away requests for support of Windows 2000 and SQL Server 2000. The combinatorics for testing on multiple OS versions, .NET versions, SQL Server versions, IIS versions, and upgrade paths for our own software versions get out of hand quickly. I’ll have more on this issue another day. For now I’ll just say I’m happy with our decision to stay current — mostly.
Automatic Failover Package and Integration with NLB: Failover has long been a feature of the Digipede Network Professional Edition but with the optional Automatic Failover Package, organizations can now have complete out-of-the-box integration with Windows Server 2008 load balancing, giving “hands-free” failover to mission-critical applications.
Performance, Simplicity, and Microsoft focus — yes, even this advanced capability was guided by our goal of simplicity. While automatic failover is often considered a complex requirement, we made some basic decisions to keep it as simple as possible. First, we made automatic failover it’s own SKU, so customers without the need for high-availability configuration don’t even have to think about it. Second, we did away with a lot of the manual scripting that often slows implementation of failover solutions — you can have it running very quickly. Finally, we left as much as possible to popular existing technologies — SQL clustering and NLB — so the implementation steps will be as familiar as possible.
Reports Package: Assembles critical information about the use and optimization of the grid, with easy-to-understand charts and graphs, flagging of critical information, and drill-down capability, giving enterprises fully integrated optimization of grid performance, with tracking of who contributes to and who benefits from grid resources.
Performance, Simplicity, and Microsoft focus — In larger systems, simple and informative visual tools are essential for wringing the most performance possible from a grid. Users and administrators become far more productive in their routine monitoring functions and troubleshooting activities with this new package, which plugs directly into Digipede Control (our admin UI). And by building on SQL Reporting, we’ve created a framework for future extensions.
Overall, I’m pleased with the extent to which we have driven the improvement of our product by staying focused on the three principles described above. To be a little less self-congratulatory, I wish we had stopped adding features at least two months earlier and brought most of these capabilities to market sooner, rather than piling quite so much into a single release (and there’s certainly more than I’ve had a chance to discuss here). Perhaps another day, I’ll have a chance to discuss some of the things we (purposely) left out! Now that V2.1 is in the market (and getting rave reviews from our customers), I’m eager to see what great new applications our imaginative customers create and deploy on our latest platform.