Scalability

Scalability is ability of a system to either handle increases in load without impact on the performance of the system, or the ability to be readily enlarged.
 
There are two methods for improving scalability: scaling vertically (scale up), and scaling horizontally (scale out).
  • To scale vertically, you add more resources such as CPU, memory, and disk to a single system.
  • To scale horizontally, you add more machines to a farm that runs the application and shares the load.
 

Points to be considered:

  • You may decide to locate logical layers on the same physical tier to reduce the number of servers required while maximizing load sharing and failover capabilities.
  • Consider partitioning data across more than one database server to maximize scale-up opportunities and allow flexible location of data subsets.
  • Consider elastic scalability.
  • Avoid stateful components and subsystems where possible to reduce server affinity.
  • Reduce delays in response and longer completion times.
  • Async communication over sync communication.
  • Implement store-and-forward or cached message-based communication systems that allow requests to be stored when the target system is unavailable, and replayed when it is online.
  • Consider patterns mentioned for Performance attributes.
Please share this

Leave a Reply