Currently, applications written for mobile apps use a different methodology than highly scalable internet applications. Of course, many of the popular mobile apps these days have a cloud service component to them. But from a software development design, thinking about the small space and how to take advantage of the handheld device and processing power has been different than thinking about writing code for the dataceter that can run on clusters of servers with plenty of processing power.
Well that is starting to change. The manycore future, that I have talked about before, is upon us. What that means for mobile app development is that instead of single core CPU cell phones, we need to start preparing for cell phones and mobile devices with dozens of CPU’s. In mobile, the battery life is king. Future CPUs will probably turn off cores when they are not used to conserve energy and burst into a parallel processing mode when the user needs some interactivity quick, scaling out to dozens, maybe hundreds of cores. This is very similar to the promise of cloud based computing. In the cloud, you build your app the same way for a single server versus hundreds, and the promise of the cloud platform will scale your apps accordingly. A great example of this promise realized is the Outback Steakhouse Bloomin’ Onion campaign built on Facebook with an Azure back end. This campaign scaled perfectly to handle an unexpected popularity load. First started as a short lived campaign ended up streaching on for months longer due to the demand and popularity.
A recent article in MIT Technology Review by Stephen Cass discusses highlights this problem. The solution he proposes is better development tools and frameworks or in Stephen’s words:
"A promising potential solution is to take human programmers out of the loop as much as possible: rather than have individual programmers work out how to make their applications run across two, four, or more cores, the messy details could be left to compilers, the software used to convert high-level programming languages into the machine code a computer can understand."Published in the June 2010 issue of MIT Technology Review and online at Research to Watch: Multicore Processors Create Software Headaches
Microsoft has been working on this for the past decade and thier efforts have really paid off. With the release of Visual Studio 2010 and .NET 4.0 we have many promising frameworks and technologies to take on this battle such as the Task Parallel Library, PLINQ, Reactive Extensions (Rx), and F#.
Windows Phone 7 Series also has some potential and new tools have been released in the April CTP to enable developers to use Visual Studio 2010 plus Silverlight or XNA to start building touch based mobile apps. The Windows Phone Dev Tools April CTP release yesterday is now compatible with the RTM version of Visual Studio 2010. Let the fun begin.
BTW: Don’t miss our Visual Studio 2010 launch event at Microsoft Cambridge, MA this Monday, May 3rd. We will be discussing these topics and more.