Tech

Guides
 

Do cloud computing and parallel processing lack use cases?

By Justin James, Special to ZDNet Asia
Friday, November 14, 2008 02:16 PM
There are really no killer apps for cloud computing or parallel processing, and reasons why the two are not bigger trends than they should be, says industry watcher Justin James.

Several weeks ago, Larry Dignan, editor-in-chief of ZDNet and editorial director of TechRepublic, wrote a blog post entitled, "Yes folks, the cloud and parallel processing need killer apps". Normally, I tend not to pay terribly close attention to industry pundits when it comes to the programming industry, simply because I find that the "latest and greatest" that these folks are really interested in writing about simply is not the reality for your typical developer.

These pundits are a great resource if you want to know what might be mainstream five years down the road, but most developers are too busy to worry about anything other than the here and now. In this case though, Larry really seems to have his finger on the pulse of the industry, and I wanted to expand on his thoughts.

First and foremost, "the cloud" and parallel computing are both in approximately Year Three after becoming in a position to be used on a mainstream basis. In the Spring of 2005, the first Intel dual core CPUs (the Smithfield models of Pentium D) hit the market. In late 2006, the Core 2 Duo series drove the price/performance curve in a fantastic direction, delivering unbeatable dual-core performance at prices that were considered cheap for single core performance a few months earlier.

Cloud computing also became broadly available around this time and, in the Spring of 2006, Amazon's S3 service heralded the availability of cloud resources from mainstream vendors.

AJAX as a technique had killer apps like Google Maps and Outlook Web Access to show developers that learning that technique would be useful. Java and .NET both had provable, obvious value that developers saw, driving their adoption.

At this point, hardware vendors cannot seem to really crank single core clock speeds significantly higher without severe heat problems, which is why dual core (and now quad core) architectures are continuing Moore's Law on the motherboard. WAN speeds and reliability are now at the point where vendors feel that there is opportunity in cloud computing.

But as Larry asks, where are the killer apps? Heck, where are any apps, killer or not?

Games still are not making heavy usage of parallel computing (although the AI in them could definitely use it, in my opinion). Graphics, video, and audio editing programs such as Photoshop and Premiere make heavy usage of multithreading.

Modern compilers are getting better at using parallel processing to speed build times. Of course, operating systems and network services like Web servers, database servers, and e-mail servers have always had to do a lot of multithreading. See a trend here?

While these are applications that nearly every user is accessing at some level, they are applications that only a small segment of elite developers are working on. And those developers were writing code to take advantage of multi-core machines long before they became mainstream because many of those applications were being run on high-end hardware years ago.

Multimedia editors have been using SMP workstations for well over a decade. SMP servers (even x86 ones) were available in server rooms for more than a decade (in fact, I just shut down a Pentium II server circa 1996 or so that had two processors in it). So the folks writing these high-end applications had motivation to write their code to be multithreaded.

More importantly, that means that the techniques to write code like this are established and documented, although they are not widely known.

Cloud computing, on the other hand, is a relatively new idea. Frankly, it is going nowhere fast. Wikipedia's list of "Notable uses" of Amazon's S3 is… well… not very notable. Amazon's S3 service gets more press from being down than it does for signing big clients. The other cloud computing vendors that I looked at also seemed to have equally unimpressive track records and customer bases.

So what is going on here, and what kind of killer apps could give these two trends some traction? It is a cinch to tell you why parallel computing hasn't been a bigger trend: There is simply no need for it in the vast majority of applications.

Regular readers of the Programming and Development blog know how much I like to write about parallel computing, but I recognize the reality, too. Very few applications bring a CPU more than a few percentage points off of idle. If they do use a lot of CPU time, it is going to be in a database request, at which point it is out of the application developer's hands. Modern CPUs are simply too fast to justify using parallel processing in many cases.

If you do happen to see an application use multithreading, it is usually in an asynchronous pattern like downloading an item with the option of canceling it; also, it is done for usability reasons rather than for performance reasons. Another place you see multithreading in typical applications is in third-party components like a graph-rendering component.

In a nutshell, the typical business developer makes use of resources that may kill the CPU but does not directly write any code that could or should be converted to parallel processing.

Additionally, mainstream OSs juggle requests for CPU time very sanely. I was recently doing some experimentation with parallel computation of Fibonacci sequences. I had my Core 2 Duo processor pegged at 100 percent on both cores. The MP3 I was playing did not exhibit any problems, and the computer was still perfectly usable. On top of that, the perception is that writing multithreaded applications is very difficult, even though it is getting easier and easier.

Cloud computing's lack of success is even easier to explain: trust. Do you trust that your Internet connection is 100 percent perfect? Much less than you trust your internal switches. Do you trust that your company's data is safe in the hands of people that you have never met? Much less than you trust your DBA and your system administrator down the hall. After all, you know where they live. and your HR department ran background checks on them. Do you trust that the third-party vendor is really doing the nightly backups that you are paying for? Much less than you trust your in-house nightly backups; you see them take the tapes offsite once a week, after all.

Until the cloud computing vendors built up a long-term reputation of being reliable and trustworthy, cloud computing is dead in the water.

I am not saying that cloud computing or parallel processing do not have a place. I think that cloud computing is a good idea for consumer-oriented applications that either act as a redundant copy of data you already have locally (such as using Flickr to publish some photos on your hard drive), or to provide services and store data that is not critical that you always have access to (like Skype).

The cloud vendors do have better uptime and backup procedures than your typical consumer, and the typical consumer is less likely to have information that would be catastrophic if it is lost. Likewise, where you will be seeing a lot of parallel computing is in minor functionality; think of applications that get a lot more graphical and a lot more real-time (e.g., Microsoft Photosynth). But it is very unlikely that there will be any applications that are both business oriented and 80% or 90% cloud computed or parallel processed or that show off either of these ideas extensively.

So, Larry, in response to your question, "Where are the killer apps?" I think the answer is: There are no killer apps for either cloud computing or parallel processing. At best, there may be killer widgets.

While we may remember the handful of applications that are fully AJAXed, the reality is, most sites employing AJAX use only a widget or two where it makes sense. Likewise, we may remember some super-neat ray tracer or application that magically retains your data wherever you are, most applications will be incorporating these techniques as a side dish, not the main entrée.

Eventually both cloud computing and parallel processing will enter the average developer's bag of tricks, but don't hold your breath.

Disclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.



WORTHWHILE?

0

0 votes
Blog

Talkback 1 comments

Some examples
World of Warcraft.
Xbox Live
Instant Messaging.

It's just that these services have not yet migrated to a "commodity" cloud computing platfrom.

There is also a huge opportunity for removing the IT costs of non-critical services. For example, HR applications, business intelligence, etc - things that can do with a day of downtime and not kill the business. Also there is a huge value in data collection and analysis. The consumer space is not the only space that has large data sets that would benefit from being offsite, analyzed, tagged and re-presented to the people providing the data. Think real estate. Think monitoring systems. Think geographic data. Think trade.

I agree with you on parallel processing. I think there is a massive change in programming practices, teaching, tools and languages required before we are going to take advantage of the real parallel platforms coming. We are not talking 2 core, 4 core. We are talking 16, 32, 64 core or 128 core CPUs on your desktop or phone in the next decade.

That said - parallel computing already provides great value in scientific and geographic applications. Think oil exploration. Anyone who can provide the tools to specialists sees value. This is not a consumer play right now. And the cloud computing platforms could be useful here. Why run a 24/7 facility of processing when you only need to run one analysis a month- just rent the space on someone else's cluster for a few days.

Plenty of opportunity in startups too- if you were to run flickr today would you really want to build your own datacenter(s)?
Posted by anonymous on Sunday, November 16 2008 09:42 PM


Guest user

Guest user

Level: 
Joined: —
Already a member? Log in »



 

Loading...

Whitepapers/Case Studies

Downloads

Web Development News

 
Virtualize your way to cost savings
Build an infrastructure that is flexible, scalable, and economical, as you strive to become a truly agile business.

Red Hat Outlines Its Virtualization Strategy and Roadmap for 2009
» Watch the video





Tech Jobs Now!

Tags

  1. business applications
  2. c#
  3. developer
  4. html
  5. industry
  6. java
  7. justin james
  8. microsoft .net
  9. microsoft corp.
  10. microsoft visual studio
  11. programming
  12. protocols and platforms
  13. server
  14. soa
  15. software engineering / development
  16. tool
  17. web
  18. web browser
  19. web services
  20. web sites