Saturday, November 06, 2010

Ride the Cloud at Lightning Speed

How can you make your computationally intensive application run like lightning on the cloud? Use Cloud Parallel Processing!


Some computational tasks are so demanding that a single machine cannot process them within a reasonable amount of time. Applications that leverage massive amounts of data from the Web, a social media network or any other large-scale system can easily overwhelm a single machine. Many other examples exist of analytical tasks that operate on large data sets.  

Parallel processing has been automated and widely practiced at the processor level. In order to utilize the cloud efficiently it is necessary to scale out. Scaling out means that multiple nodes share the workload and therefore get things done faster. Parallel processing at the application level is necessary to harness the power of the cloud.

Creating a Scalable and Elastic Application
With the advent of cloud computing a large-scale and virtually unbounded grid of compute nodes becomes a reality. In principle, this makes the cloud an ideal substrate for on-demand high-performance parallel processing. The cloud can adapt elastically when CPU requirements change and spin-up or tear-down nodes accordingly.

In the latest Gartner Hype Cycle for Cloud Computing (July 2010), Cloud Parallel Processing is an entrant of the Cloud technology adoption curve. They note that “as cloud-computing concepts become a reality, the need for some systems to operate in a highly dynamic grid environment will require these techniques to be incorporated into some mainstream programs. [] The application developer can no longer ignore this as a design point for applications.”



Parallel Programming is hard!

This points to the caveat of parallel processing: it is very hard to build scalability and elasticity into general purpose applications. But if you cannot make multiple nodes share the workload then the cloud will not help you get things done faster.

How can you make your computationally intensive application run in parallel on several nodes? A parallel programmer must address these steps:
  •          Partition the workload into smaller items
  •          Map these onto processors or machines
  •          Communicate between these subtasks
  •          Synchronize between subtasks as required

Note that synchronization is a real bugger – because it is anathema to parallelism. Yet it is unavoidable in most applications. 


Shift of Programming Model

Even with the use of toolkits that offer communication and synchronization primitives (such as PMI) parallel programming is a bit like rocket science. Without a shift in programming model parallel programming will stay elusive. Programmers will have to deal with parallelism to some degree at least – they can no longer rely on middleware, databases and operating systems to exploit parallelism.

Chris Haddad mentions the following programming model shifts that happen with the cloud:
  •  Actor Model: Dispatching and scheduling instead of direct invocation Queues and asynchronous interactions
  • RESTful interactions Message passing instead of function calls or shared memory
  • Eventual consistency instead of ACID


Fortunately, parallel programming has been a research topic for some decades already – long before the cloud existed. Demand for high performance computation stemmed from various domains, such as weather prediction, finite element simulation and other data analysis. During my PhD I worked on object-oriented parallel programming using COTS (commercial-off-the-shelf) workstation clusters. These are called distributed memory machines in parallelism jargon. The cloud is nothing else than a distributed memory machine - albeit at a much larger scale. And my work also touched the Actor model that Chris mentioned. 

Watch this space

The principles and models that apply to distributed memory machines would also apply to the cloud (essentially, the cloud is a very large distributed memory machine). In a follow-up series of posts I will look at those topics in more detail and examine how they can be applied to Cloud Parallel Processing. I’ll dig deeper into programming models shifts (such as Actors) and outline some parallel algorithms (such as map reduce, n-body and others of the 13 computational dwarfs). 

Friday, October 08, 2010

Welcome to Giovanni Scheepers - Asset Liability Management for SOA

Welcome to the Blogosphere to Giovanni Scheepers! Am looking forward to a good discussion and espeically looking at your idea of asset liability management in the context of SOA. Am very excited!

Sunday, August 22, 2010

Offroad Google


While mountain-biking in the Swiss alps we met this man recently. What looked like an ice cream bike from the back turns out to be an e-bike with Google equipment mounted. I'm really curious to see these pix show up on Google street view (or trail view).

Saturday, June 12, 2010

SOA Symposium 2010 in Berlin - CFP

The SOA Symposium 2010 is taking place in Berlin this year. The Call for Papers is open until June 30. Themes and topics this year:


Exploring
Modern Service Technologies & Practices

•   Service Architecture & Service Engineering

•   Service Governance & Scalability

•   SOA Case Studies & Strategic Planning

•   REST Service Design & RESTful SOA

•   Service Security & Policies

•   Semantic Services & Patterns

•   Service Modeling & BPM
Scaling
Your Business & Infrastructure Into the Cloud

•   The Latest Cloud Technology Innovation

•   Building and Working with Cloud-Based Services

•   Cloud Computing Business Strategies

•   Case Studies & Business Models

•   Understanding SOA & Cloud Computing

•   Cloud-based Infrastructure & Products

Friday, June 11, 2010

SOA Forum 2010 - Asset-based SOA

A total of 203 attendees met at the annual SOA Forum in Zürich last week. The pre-conference day was made up of four half-day sessions around the topics of SOA Security, BPM, Business Service Modelling and SOA Testing. 175 attendees came for the conference main day. The topic of this year's event was the industrialization of SOA based on reusabel assets.

As keynote speaker Massimo Pezzini of Garnter pointed out: assets come in many flavours. They can be infrastructure (SOA backplane), documentation, process templates, organizational templates, skills ... and people! Massimo differentiated three different SOA-flavours: RPC, WOA (request-driven, REST) and Event-driven SOA.

Keynote speaker Anne Thomas Manes talked about the reincarnation of SOA. 18 months ago Anne published a eulogy on SOA. This eulogy wasn't praise more than lamentation at the demise of a promising development - that met it's untimely dead because of hype and wrong application. A talent wasted?

Well - SOA's resurrection happened. Although the connotation here is somewhat religious. Anne suggests to avoid all religious and fundamentalist mindsets when applying technology and architecture. SOA is a logical choice and sine-qua-non for many problems. But it's not a panacea. An opinion that was reflected in the panel discussion.

The wrong approach to SOA - according to Anne - consisted of too strong a technology focus (ESBs, appliances, WS-stacks, governance tools and so on) and too little focus on architecture. Frequently systems were built with an integration mindset which is akin to putting lipstick on a pig (Anne has a lovely picture in her slidedeck). Ultimately this led to high maintenance costs. According to her figures the development of a system is only 7-15% of the TCO - the rest is maintenance. IT budget cuts mean that innovation comes to a screeching halt because there is not much opportunity to reduce maintenance costs.

The reincarnation of SOA consists of seeing the big picture rather than technologies and point solutions. She recommends to learn from the Web 2.0 technologies and help enterprise software break out from the firewall. Externalization, consumerization and democratization of IT are the keywords here. A sentiment echoed by Zapthink and others.

SOA's reincarnation is driven by the application of design principles and architecture instead of focussing on technology. SOA principles are applied through:

When these principles are applied correctly a system should exhibit the following characteristics:
  • Modular
  • Distributable
  • Discoverable
  • Swappable
  • Shareable

The SOA Forum presentations can be accessed under the following URI:

 Username:    soaforum_main
Passwort:      assets