Think Parallel

I was fortunate enough to attend the recent Platform Strategy Review in Redmond, WA last week.  In between cellphoneemails (is that a word?), I managed to glean a pearl of wisdom from the presenters (especially Craig Mundie.)

The message is very simple:

  • The Moore's law increased performance free lunch is over
  • Multicore is how we'll get more perf/scale for the foreseeable future
  • Software needs to adapt to take advantage of this

But how to make that happen?  The answer is:

  • Do more things concurrently

If you've been designing stateless n-tier applications, you're in luck.  You'll be able to receive the benefits of the increased scale of multicore boxes (if not necessarily increased perf) without doing much of anything - but even then, you could probably benefit from a thorough internal review of your app's architecture.

This will especially become apparent as composite, service-oriented applications become prevalent, and a single top-level request spawns several service calls before it completes.  Async calls are neat, but wouldn't it be nice if all the service calls were spawned in parallel?  It'll take some thinking and maybe some refactoring to get there, but it'll be worth the effort.

Your users will thank you.

...and in the meantime, we'll get busy on the problem from a system level.  :)