Scalability
The ability of a system to grow in its capacity to meet the rising demand for its services offered. Scalability enables accommodation of
o More transactions processed per millisecond
o Additional traffic that can be handled
o Number of SQL statements that can be run & results provided simultaneously.
o More storage capacity
o Reducing the adverse impact due to growth on performance, cost and maintainability.
Some Facts
# "Scalability" is not equivalent to "Raw Performance"
# Don't guess the bottleneck, Measure it.
# Do regular capacity planning. Collect usage statistics, predict the growth rate.
Why Need to Scale ?
# Increas in number of customers & concurrent users
# Increase in features of product in scope.
# Increase in Database usage & calls
# Low Performance due to less resources thus increasing response time
# Database’s performance against the multi-transaction batch processing
Basic Techniques To Scale
Scaling Out/Horizontally:
The ability to spread the processing load across more machines. the advantage of being linearly scalable; rather than buying a bigger, more expensive box, we just buy more copies of the same cheap box. With the right architectural design, this approach can scale massively.
Scaling Up/Vertically:
Increasing the power of individual machines. addresses the scalability of a single instance of the service. A simple way to scale most software is simply to run it on a more powerful machine; one with a faster processor or more memory.
Scalable System Architecture - Buildling blocks
Load Balancers - Hardware & Software LBs
Caching Mechnism - In Memory caches, Database caching, cache evictions.
Offline Processing - Messaging, Scheduling, Map-Reduce
Platform Approach - Service Level APIs
Data Partioning
Filtering at Source
Resource Pooling
Content Delivery networks
Session Management
Database Replication
Happy Scaling !
Comments