Application scalability has become one of the primary concerns for application designers and administrators. To add to the concern is the fact that existing tier-based business-critical applications are not able to achieve linear scalability due to the inherent limitations of existing architectures. What is needed is a software architecture pattern that allows for linear scalability of applications. Space based architecture (SBA) is one such pattern.
SBA works by co-locating the data and business logic thereby decreasing the inter-tier messaging, which makes it an ideal architecture for building scalable and fault tolerant applications. SBA is closely related to Shared Nothing (SN) based distributed computing architecture used by Google, Amazon and other well know companies for addressing the application scalability. It follows many of the principles of service oriented architecture (SOA), Representational State Transfer (REST), Event driven architecture (EDA), as well as certain elements of grid computing.
SBA is built on the concept of “Tuple Space” paradigm, a technology perfectly suited for implementing distributed caching in parallel computing.
- Tuple: A tuple is an ordered list of elements. Tuples have their own data type and can be identified using a key comprising one or more fields. Tuples are also referred to as ''Entry Objects'' in Tuple Space terminology.
- Space (Tuple Space): Space or more formally Tuple Space is an implementation of the associative memory paradigm for parallel/distributed computing i.e. it can be seen as a shared distributed cache memory. Tuple space enables concurrent accessing of tuples. Tuple Space is a paradigm for inter-process communication, information tuples are shared instead of the alternate message passing paradigm. Tuple Space has been implemented in many technologies and languages.
Space Based Architecture emphasizes development of applications as a collection of independent, loosely coupled services, minimizing the need to divide the logic into Tiers.
The services thus created are basic units of SBA, communicating with data and logic co-located within the same process and known as ''Processing Unit'' (PU). A PU is an independent entity that can be scaled easily by adding more hardware resources and by deploying it to the additional hardware without changing the existing setup.
SBA Implementations: A number of products are available that implement the concepts of Tuple Space. A few significant products are:
1. Gigaspaces: Gigaspaces SBA combines and integrates parallel processing (Processing Grid), distributed caching (Data Grid), and content-based distributed messaging (Messaging Grid) to provide a common platform for high availability, clustering, consistency services and location transparency across all tiers.
2. Javaspaces: Javaspaces is a specification for implementation of Tuple spaces using JINI.
References:
• Javaspaces, Oracle, http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
• Space Based Architecture, Wikipedia, http://en.wikipedia.org/wiki/Space-based_architecture
• Gigaspaces, http://www.gigaspaces.com/
• The Scalability Revolution-From Dead End to Open Road, Gigaspaces, http://www.gigaspaces.com/files/main/Presentations/ByCustomers/white_papers/FromDeadEndToOpenRoad.pdf
• Migrating from JEE application to SBA, Gigaspaces, http://www.gigaspaces.com/files/main/Presentations/ByCustomers/white_papers/MigratingFromJEEtoSBA.pdf
• Wikipedia http://en.wikipedia.org/wiki/Tuple_space
*If you find something is misleading or not correct then please throw some light on it.