Space-based architecture (SBA) is a software architecture pattern for achieving linear scalability of stateful, high-performance applications using the tuple space paradigm. It follows many of the principles of representational state transfer (REST), service-oriented architecture (SOA) and event-driven architecture (EDA), as well as elements of grid computing. With a space-based architecture, applications are built out of a set of self-sufficient units, known as processing-units (PU). These units are independent of each other, so that the application can scale by adding more units. The SBA model is closely related to other patterns that have been proved successful in addressing the application scalability challenge, such as shared nothing architecture (SN), used by Google, Amazon.com and other well-known companies. The model has also been applied by many firms in the securities industry for implementing scalable electronic securities trading applications.
Components of space-based architecture
An application built on the principles of space-based architecture typically has the following components:
- Processing unit
- The unit of scalability and fail-over. Normally, a processing unit is built out of a POJO (Plain Old Java Object) container, such as that provided by the Spring Framework.
- Virtual middleware
- A common runtime and clustering model, used across the entire middleware stack. The core middleware components in a typical SBA architecture are:
Component Description Messaging grid Handles the flow of incoming transaction as well as the communication between services Data grid Manages the data in distributed memory with options for synchronizing that data with an underlying database Processing grid Parallel processing component based on the master/worker pattern (also known as a blackboard pattern) that enables parallel processing of events among different services
- POJO-driven services model
- A lightweight services model that can take any standard Java implementation and turn it into a loosely coupled distributed service. The model is ideal for interaction with services that run within the same processing-unit.
- SLA-driven container
- The SLA-driven container enables the deployment of the application on a dynamic pool of machines based on Service Level Agreements. SLA definitions include the number of instances that need to run in order to comply with the application scaling and fail-over policies, as well as other policies.