Building robust,scalable and functional systems.
Questions that I asked myself when I read about system design
- Everything you need to know about http.
- how ssl works.
- how dns works and protocols
- sql vs nosql
- query optimization in sql databases.
- types and variety of databases and everything you need to know
- What is load balancer? Types of load balancers, Cloud load balancers, in-premise load balancers and all you need to know about them.
- What is database replication? and what are the types of it and how it works in various databases.
- Preferred hardware for running database servers, web servers and load balancers,message queues
- replication methods like multi-masters and circular replication could help?
- What are CDN? How they work? What options do we have? Can I have my own CDN?
- What is cache? what are caching algorithms? How to build your own caches? How the caching works? What are the caching products are there in market for in-premise and cloud ? Caching strategies for data type,size and access patterns? And When can you use one? How to set cache expiry?
- Read this page Scaling Memcache at Facebook” published by Facebook [7].?
- How to make an architecture fault tolerant and strategies to it.
- Stateless web tier : where you store user session data in db so you can horizontally scale.
- geoDNS its a DNS that can load balance across data centers for different geographically distributed location.
- A previous study shows how Netflix implements asynchronous multi-data center replication
- What are message queues? compare the options and how to use them and build architectures on top.
- What are Database Sharding algorithams and approaches?
- What is resharding when its required and what is celebrity problem?
- https://github.com/donnemartin/system-design-primer best resource on system design?
- What is rate limiting?
- What is race conditions and synchronizations and locking mechanisms?
Things to read
- https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
- Bigtable paper by google
- https://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores
- https://aws.amazon.com/simpledb/
- https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
- http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html
- https://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow/
- https://aws.amazon.com/cloudfront/dynamic-content/
- https://github.com/donnemartin/system-design-primer
- Reference materials
- Rate-limiting strategies and techniques: https://cloud.google.com/solutions/rate-limiting�strategies-techniques
- Twitter rate limits: https://developer.twitter.com/en/docs/basics/rate-limits
- Google docs usage limits: https://developers.google.com/docs/api/limits
- IBM microservices: https://www.ibm.com/cloud/learn/microservices
- Throttle API requests for better throughput: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request�throttling.html
- Stripe rate limiters: https://stripe.com/blog/rate-limiters
- Shopify REST Admin API rate limits: https://help.shopify.com/en/api/reference/rest�admin-api-rate-limits
- Better Rate Limiting With Redis Sorted Sets: https://engineering.classdojo.com/blog/2015/02/06/rolling-rate-limiter/
- System Design — Rate limiter and Data modelling: https://medium.com/@saisandeepmopuri/system-design-rate-limiter-and-data-modelling�9304b0d18250
- How we built rate limiting capable of scaling to millions of domains: https://blog.cloudflare.com/counting-things-a-lot-of-different-things/
- Redis website: https://redis.io/
- Lyft rate limiting: https://github.com/lyft/ratelimit
- Scaling your API with rate limiters: https://gist.github.com/ptarjan/e38f45f2dfe601419ca3af937fff574d#request-rate-limiter
- What is edge computing: https://www.cloudflare.com/learning/serverless/glossary/what�is-edge-computing/
- Rate Limit Requests with Iptables: https://blog.programster.org/rate-limit-requests-with�iptables
- Consistent Hashing: https://tom-e-white.com/2007/11/consistent-hashing.html
- Dynamo: Amazon’s Highly Available Key-value Store: https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
- Cassandra - A Decentralized Structured Storage System: http://www.cs.cornell.edu/Projects/ladis2009/papers/Lakshman-ladis2009.PDF
- How Discord Scaled Elixir to 5,000,000 Concurrent Users: https://blog.discord.com/scaling-elixir-f9b8e1e7c29b
- CS168: The Modern Algorithmic Toolbox Lecture #1: Introduction and Consistent Hashing: http://theory.stanford.edu/~tim/s16/l/l1.pdf
- Maglev: A Fast and Reliable Software Network Load Balancer: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44824.pdf