pattern

Paper: Scalability Design Patterns

I have introduced pattern languages in my earlier post on The Pattern Bible for Distributed Computing.

Achieving highest possible scalability is a complex combination of many factors. This PLoP 2007 paper presents a pattern language that can be used to make a system highly scalable.

The Scalability Pattern Language introduced by Kanwardeep Singh Ahluwalia includes patterns to:

  • Introduce Scalability
  • Optimize Algorithm
  • Add Hardware
  • Add Parallelism
    • Add Intra-Process Parallelism
    • Add Inter-Porcess Parallelism
    • Add Hybrid Parallelism
  • Optimize Decentralization
  • Control Shared Resources
  • Automate Scalability

The Pattern Bible for Distributed Computing

Software design patterns are an emerging tool for guiding and documenting system design. Patterns usually describe software abstractions used by advanced designers and programmers in their software. Patterns can provide guidance for designing highly scalable distributed systems. Let's see how!

Patterns are in essence solutions to problems. Most of them are expressed in a format called
Alexandrian form which draws on constructs used by Christopher Alexander. There are variants but most look like this:

  • The pattern name
  • The problem the pattern is trying to solve
  • Context
  • Solution
  • Examples
  • Design rationale: This tells where the pattern came from, why it works, and why experts use it

Patterns rarely stand alone. Each pattern works on a context, and transforms the system in that context to produce a new system in a new context. New problems arise in the new system and context, and the next ‘‘layer’’ of patterns can be applied. A pattern language is a structured collection of such patterns that build on each other to transform needs and constraints into an architecture.

The latest POSA book Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing will guide the readers through the best practices and introduce them to key areas of building distributed software systems using patterns.

Syndicate content