Parallel Computing - a Business Perspective
Today I'd like to explore the business perspective of parallel computing, as business is what in the end pays for our living. Sometimes there's a "technology-vs-business" impedance mismatch, that is we have and we know how to use cool technologies that allow us to do very sophisticated things, but this doesn't guarantee that we're able to sell them to our customers (even assuming that they get an advantage out of them). This is clearly a bad thing, as it would keep us to repeat all the boring JEE stuff perpetually, and in the end we will find ourselves out of the market (BTW, I completely disagree with those guys repeating every day "JEE is dead", but I'm pretty sure that one day it will be really, as all the things in the world).In my personal experience, customers have got two major problems:
- they focus on the short term, seldom think of the mid-term, almost never about the long-term. Yeah, I know, this sounds pretty dumb as it will drive them out of the market, but it's also a problem of yours as an out-of-market customer is a lost customer - and all your fidelization efforts are thrown in the wastebasket.
- they tend to be easily scared by new things - which in turns makes the mid- and long-term scarce attitude problem even worse.
Sometimes this scenario gets critical: it's when you're about the next (major or minor) paradigm shift. As I told you some days ago, I second the opinion of people saying that we're near a new one, caused by the arrival of multi-core chips and availability of pay-per-use large CPU facilities such as the Sun Grid.
Before going on, let me draw my somewhat coarse classification of customers with respect of parallel computing:
- in the first class there are traditional customers (science, research, military, hi-tech companies) for which parallel computing is a core-business. They simply can't do without it, now, so they are willing to pay for all the related issues (costs, complexity, products, consultancy skills).
- in the second class there are customers who never did parallel computing, in the short-term they could get a moderate advantage from it, but it would become really important in future. At present time they wouldn't pay for it because they are not aware of its relevance, on the contrary they are scared by its complexity.
- in the third class there are customers who aren't and won't be affected at all by parallel computing (well, I think that sooner or later this class will be empty, but it's not my point now).
As a traditional Software Architect who has expanded his interests to parallel computing, I'm clearly interested in class #2. So let's see more in details why people in this class gets scared. There are subjective and objective aspects:
- objective aspects: parallel computing makes people think of NASA, the Cray or other supercomputers, in a word: expensive equipment. But this scare can be easily mitigated as costs are lowering and the multi-core is reaching our desktops - these are factual points.
- subjective aspects: parallel computing is hard, isn't it? At least it's harder than traditional computing, otherwise there wouldn't be whole branches of computer science about it and people researching and publishing tons of papers every year (I'd suggest to have a look to Jim Waldo's introductory talk at the latest Jini Community Meeting, "Complexity Quanta and Platform Definition" - a short summary is also here).
But is parallel computing really so hard? I don't want to deny this, but probably we should broaden our view. Until a few time ago there were only customer classes #1 and #3. Things were either white or black: sequential computing -> easy, parallel computing -> hard. Period. But maybe class #2 introduced some shades of gray in the middle. What about using just a pinch of parallel computing, just as a starter? And then go on with an incremental complexity approach? Something such as eating little quantities of poison, which not only don't kill you, but on the contrary get you immunized.
This is precisely the path I'm exploring. This approach has at least three important architectural consequences:
- In order to mitigate risks and reduce complexity, people has designed specific frameworks for parallel computing. They take care of complex issues such as security, state distribution, management, high availability, etc. There are many products in this area, including Java, and you can easily find them with a Google search (just to cite two: "Java Parallel Processing Framework" (JPPF) is an open source product, while GigaSpaces sells a commercial platform - please note that I'm not comparing them, as they are aimed at different targets). In my opinion these frameworks still carry along a lot of complexity, and while they are the obvious choice for customers in class #1, the "scare factor" for class #2 is still high.
- We have to broaden the "parallel computing" concept, making it to cover the whole range from multi-core through home-made clusters up to things such as the Sun Grid. My expectation is that many customers in class #2 could walk their way from the former to the latter in the next years. At present time, for these customers architectural simplicity is the keyword: rather than throwing in complex products, it's better to focus on design patterns and ad-hoc solutions. "Abstraction layering" is another keyword here, as this could pave the way for scaling to more complex solutions (perhaps introducing frameworks such as JPPF and GigaSpaces at a later time).
- A consultant Software Architect, who's selling his services to many different customers, could deal with class #1 and class #2 customers at the same time (and indeed such classes should be thought of as a continuum), and so the need emerges for the reuse of ideas and specific design patterns in etherogeneous scenarios.
That's my vision. In the next entry, I'll introduce a simple scenario that I've figured out to provide the context for some design exercises.
PS Yeah, I know, this blog is looking like those Marvel comics that I used to read when I was a boy - every week the adventure goes on just a bit, and you have to wait for the next one. But at least it's free.. ;-)