Some thoughs about System Design

August 11, 2024

Cover Image for Some thoughs about System Design

Scalability

  • For a system to be scalable it must be able to adapt to growing demand. It can scale horizontally (adding more servers to the pool of resources). Or Vertically (adding more memory or computational power to the current servers).

Reliability / Fault Tolerance

  • Is the probability that a system wil fail during a given period of time. In servers 99.9% is the standard. This is extremally important in a popular site, for example in 2013 the loss for every minute that Amazon is down loses around 60k.

Load Balancing

  • Distributes traffic to servers but also monitors the status of them. If one becomes unavailable, the load balancing will prevent new requests from reaching that server. This prevents any individual server from being inundated with requests. There are several algorithms we can use to distribute traffic from the client to the servers.
  • The least connection method, which distributes traffic to the server with the least active connections.
  • The least response time method, distributes traffic tot the server with the least amount of active connections and the quickest average response time.
  • The lowest bandwidth method, distributes traffic to the server that is currently serving the least amount of traffic (measured in Mbps).

Caching

  • Is the process of saving responses to be quickly served the next time taht the response is requested.Cache is limited and expensive but if well managed can drastically improve the response time.