Building Software to Scale
Adam Prout, Senior Vice President Engineering and Chief Architect
Software is designed in such a way that as you
add hardware, the software is able to fully
utilize that hardware
The gold standard: linear scalability
Software Scalability. What it Means
Be aware of contention points.
They usually exist around shared resources
(cpu, disk, memory, network)
Examples:
▪ SKIPLISTS
▪ SHARDING
Considerations for Software Scalability
▪ Provides scalable access to data in memory
▪ Lock-free --> simplicity
Developing Lock-Free Skiplist Indexes
http://blog.memsql.com/the-story-behind-memsqls-skiplist-indexes/
Sharding
Agg 1 Agg 2
Leaf 1 Leaf 2 Leaf 3 Leaf 4
Provides scalable access to data by partitioning that data
across a cluster of machines
Distributed query execution
▪ Scalable use of CPUs
Columnstore
▪ Scalable access to data on disk
▪ Compression
Other Examples
Recommended approach:
1. Start simple
2. Leverage existing resources
Building Scalable Software
Changes How You Build Product Features
▪ Ensure that the team makes the right design
and implementation decisions
▪ Set the culture on the engineering team
▪ Identify gatekeepers
▪ Implement rigorous code reviews
Strong Technical Leaders are Critical
Thank You

Building Software to Scale

  • 1.
    Building Software toScale Adam Prout, Senior Vice President Engineering and Chief Architect
  • 2.
    Software is designedin such a way that as you add hardware, the software is able to fully utilize that hardware The gold standard: linear scalability Software Scalability. What it Means
  • 3.
    Be aware ofcontention points. They usually exist around shared resources (cpu, disk, memory, network) Examples: ▪ SKIPLISTS ▪ SHARDING Considerations for Software Scalability
  • 4.
    ▪ Provides scalableaccess to data in memory ▪ Lock-free --> simplicity Developing Lock-Free Skiplist Indexes http://blog.memsql.com/the-story-behind-memsqls-skiplist-indexes/
  • 5.
    Sharding Agg 1 Agg2 Leaf 1 Leaf 2 Leaf 3 Leaf 4 Provides scalable access to data by partitioning that data across a cluster of machines
  • 6.
    Distributed query execution ▪Scalable use of CPUs Columnstore ▪ Scalable access to data on disk ▪ Compression Other Examples
  • 7.
    Recommended approach: 1. Startsimple 2. Leverage existing resources Building Scalable Software Changes How You Build Product Features
  • 8.
    ▪ Ensure thatthe team makes the right design and implementation decisions ▪ Set the culture on the engineering team ▪ Identify gatekeepers ▪ Implement rigorous code reviews Strong Technical Leaders are Critical
  • 9.