Microsoft TechEd 2008 was held in Orlando, Florida the week of June 2nd. I was fortunate to attend many of the technical sessions. I was surprised how many speakers were conveying the same message:
CPU speeds are topping out. If you want your applications to run faster and better you are going to have to build your applications in a new way. The solution isn’t just to learn how to multi-thread your applications. The solution lies in building your applications into smaller units of code called tasks that can be moved around to the different cores of a multi-core machine.
Even in Bill Gates’ keynote speech he said
The… "need to take programs and break them down into parallel execution units now becomes absolutely necessary."
This statement was music to my ears. Why? It is the same model that we have been using for fabric computing since our beginnings in 2001. Now we are starting to see this message more and more as cloud computing is gaining acceptance. It’s interesting that Appistry and Microsoft were driven to the same place for different reasons. As I said, Microsoft’s motivation is speed. Developers have relied on faster and faster machines to accomplish more and more ambitious software projects. Relying on faster machines to accomplish your goals is a thing of the past. Only by decomposing problems and executing them in parallel will one gain application speed ups in the future.
When we at Appistry starting building EAF our motivation wasn’t just application speed, but also scale and reliability. We were determined to build a framework that you could depend upon. We advocate building your applications into smaller execution units (which coincidentally we also call tasks) and adding declarative information about how these tasks aggregate into your application. With this information the a framework is able to make a decision on the best configuration and execution of your application across machines. Whether it is a single dual core machine fabric or 500+ cores distributed around a data center, the framework is able to manage your system because it is written out of loosely coupled, well defined tasks.
A Challenge
So, here is my challenge to you as a developer. Think about your most recently developed application. Think about the code you wrote for your business logic and the code you wrote to handle the sequencing, threading, scaling, and reliability. Now, can you identify those business logic components and consider running them each, as logical standalone tasks, in a distributed framework?
Once you can accomplish that goal, you are on your way to building the "right" code for the future. Applications that can be run on one core or many cores. Applications that can scale to many machines with just simple configuration changes. It’s what we at Appistry have been advocating for some time, and now Microsoft is too.














Comments on this entry are closed.