This article was written by James Parnitzke, a trusted advisor and hands-on technology management leader. He’s written several popular articles for the Hub Designs Blog.
Okay, okay – I know I should write more often, I’ve just been a little busy with my day job… and now after a much needed rest in the last weeks of August, I can now share a few things you may find especially interesting and timely.
It is no coincidence that the image accompanying this post is of wide open spaces. This is in fact where I spent the most satisfying part of my “summer vacation”. And spaces (Tuple Spaces in particular) is what I intend to share with you in the coming weeks.
As architects, we have a professional responsibility to always remain on the lookout for new (and sometimes revisited) ideas about how to improve and adopt good ideas. Especially when our business needs to invest in some key technology changes to remain competitive and deliver value that customers will continue to seek for its distinctive quality of service and value.
I’ve been pretty busy in the last year engaged in a variety of industries where road map development and execution of next generation platforms and paradigm shifts were needed. Many of the more difficult challenges were solved by adopting a Space-Based Architecture (SBA) architecture pattern.
This is a demonstrated pattern used to achieve near linear scalability of stateful, high-performance applications using tuple spaces. This is not a new idea; the tuple space model was developed by David Gelernter over thirty years ago at Yale University. Implementations of tuple spaces have also been developed for Smalltalk, Java (JavaSpaces), and the .NET framework.
A tuple space is an implementation of the associative memory model for parallel (distributed) computing by providing a repository of tuples that can be accessed concurrently. I know, this is a mouthful and a little too academic even for me.
What this really means is we can group processors that produce pieces of data and group processors that use the data. Producers post their data as tuples in the space, and the consumers then retrieve data from the space that match a certain pattern.
This is also known as the blackboard metaphor. Tuple spaces may be thought as a form of distributed shared memory. The model is closely related to other patterns that have proven successful in addressing the application scalability addressed by Google and Amazon.com (EC2), for example.
Before you think I have gone daft on you, I recommend you see a commercial implementation of this at Gigaspaces. Review the site and developer documentation and you will see how this platform is used to embrace many of the principles of Representational State Transfer (REST), Service-Oriented Architecture (SOA) and Event-Driven Architecture (EDA), as well as elements of cloud computing.
The beauty of the Space-Based Architecture resides in its tandem of simplicity and power. Compared to other models for developing distributed applications, it offers simpler design, savings in development and debugging effort, and more robust results that are easier to maintain and integrate.
The pattern represents a model that combines and integrates distributed caching (Data Grid), content-based distributed messaging (Messaging Grid), and parallel processing (Processing Grid) into a powerful service oriented architecture built on shared spaces within a grid computing framework. Research results and commercial use have shown that a large number of problems in parallel and distributed computing have been solved using this architecture.
And the implications of its adoption beyond high performance On-Line Transaction Processing extend well into other uses (including Master Data Management, Complex Event Processing, and Rules Processing for example).
And this is what I intend to share with you in the coming weeks. Wide open spaces…