We wrap up our patterns focus with the space-based pattern.  This is also known as cloud architecture.  We will see how this approach allows us to break out the solution into components suited for scaling.  We solve the problem of scalability in architecture instead of tools.

The Space-Based Pattern Defined

We have often seen layers in our architecture discussions.  Similarly, this pattern breaks out each layer into many workers.  Therefore, it is described as a collection of grids.  First, we have processing units that do the bulk of the work.  We then have a virtual middleware composed of messaging, data, processing grids, and a deployment manager.

Applying The Pattern

We see in the above list of components that each step of functionality in an application is broken out.  However, the critical piece is the processing unit.  There is often a bottleneck somewhere among the layers.  We avoid that by replicating the entire solution across processing units in this approach.  Then we can laterally scale out the solution by adding more units.

This solution may seem obvious and straightforward.  However, keeping those processing units in sync requires overhead.  We are replicating data and code.  Thus, breaking the reliance on a single database or store.  That often is the limiting factor that we are now getting away from.

Challenges

Synchronizing the components is the hardest part of the space-based pattern.  Each piece needs to fulfill the requirements for the solution and “know” the current state.  Of course, a stateless solution makes this a breeze.  However, that would essentially be a microservices architecture.  This approach needs more information to provide the necessary services.  Nevertheless, this also is a solution that tends to be perfect for high availability.  When you have units shut down, you launch more to recover from those downed components.

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply