What is Scalability? (Thu Jan 20, lect 2) | previous | next | slides |

There are technical and non-technical factors

What do we mean by Scalability?

  • This course is about Scalability but what do we mean by that?
  • From a dictionary: “the capacity to be changed in size or scale”
  • This could be organizational, operational or in our case, technical
e.g.You made some money making jewelry for your friends but will it scale? ... I can grade these by hand but that won't scale when I have 200 students!

What do we mean by scaling?

  • Your program works not just with 100K of data but with 100Gig of data
  • Excel can handle a model not just with 300 rows but with 300K rows
  • Your web site works when 10 friends are using it but fails miserably when 5,000 people are using it simultaneously

There’s a life cycle

  • Sin: “Premature Optimization”
  • Don’t assume that you know why
  • You are probably wrong!
  • Always measure to determine where the bottleneck is
  • You will never find the “last” bottleneck.
  • You will remove bottlenecks until the system scales to your requirements
  • “You’re not Google” (or facebook, or instagram, or …)

Lets form some teams

  • How is it going with Ruby so far?
  • Let see if we can form some teams of 3 students… how?
  • Form 3 random Zoom Breakouts. Get to know each other
  • Each breakout will go for 5 minutes and then we do it again

Software Aspects

  • You need to start with an idea of your goal
  • Usually expressed as:
    1. Simultaneous users
    2. Performance under load
    3. Expensive operations
    4. Rate of operations
  • Needs to have a target range that can be measured
  • Search for bottlenecks
  • Engineering for scalability is not free
  • Tradeoff with cost (people or equipment)
  • There are Best practices

Hardware Aspects

  • Scaling “up” versus “out”
  • Have an intuition about the speed and latency of different media
  • What’s the difference?
  • Compare speeds of:
    1. memory
    2. Local disk
    3. SSD Solid State disks
    4. NAS Network Attached Storage
    5. Local LAN communications
    6. Internet communications

Operations aspects

  • Similarly there are goals
  • Usually includes
    1. Availability
    2. Freshness
    3. Support
  • Availability sometimes comes as “Terms of Service”
  • Reliability of the infrastructure and quality of the software
  • Timely response to temporary load variability

Development Process aspects

  • Embrace change because it will happen
  • Agile methodologies
  • Automated testing
  • Continuous integration, testing and deployment
  • Design for maintainability

Thank you. Questions?  (random Image from picsum.photos)