|
@@ -78,3 +78,93 @@ Feel free to submit pull requests to help:
|
|
|
Content that needs some polishing is placed [under development](#under-development).
|
|
|
|
|
|
Review the [Contributing Guidelines](https://github.com/donnemartin/awesome-aws/blob/master/CONTRIBUTING.md).
|
|
|
+
|
|
|
+## Index of system design topics
|
|
|
+
|
|
|
+> Summaries of various system design topics, including pros and cons. **Everything is a trade-off**.
|
|
|
+>
|
|
|
+> Each section contains links to more in-depth resources.
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+* [System design topics: start here](#system-design-topics-start-here)
|
|
|
+ * [Step 1: Review the scalability video lecture](#step-1-review-the-scalability-video-lecture)
|
|
|
+ * [Step 2: Review the scalability article](#step-2-review-the-scalability-article)
|
|
|
+ * [Next steps](#next-steps)
|
|
|
+* [Performance vs scalability](#performance-vs-scalability)
|
|
|
+* [Latency vs throughput](#latency-vs-throughput)
|
|
|
+* [Availability vs consistency](#availability-vs-consistency)
|
|
|
+ * [CAP theorem](#cap-theorem)
|
|
|
+ * [CP - consistency and partition tolerance](#cp-consistency-and-partition-tolerance)
|
|
|
+ * [AP - availability and partition tolerance](#ap-availability-and-partition-tolerance)
|
|
|
+* [Consistency patterns](#consistency-patterns)
|
|
|
+ * [Weak consistency](#weak-consistency)
|
|
|
+ * [Eventual consistency](#eventual-consistency)
|
|
|
+ * [Strong consistency](#strong-consistency)
|
|
|
+* [Availability patterns](#availability-patterns)
|
|
|
+ * [Fail-over](#fail-over)
|
|
|
+ * [Replication](#replication)
|
|
|
+* [Domain name system](#domain-name-system)
|
|
|
+* [Content delivery network](#content-delivery-network)
|
|
|
+ * [Push CDNs](#push-cdns)
|
|
|
+ * [Pull CDNs](#pull-cdns)
|
|
|
+* [Load balancer](#load-balancer)
|
|
|
+ * [Active-passive](#active-passive)
|
|
|
+ * [Active-active](#active-active)
|
|
|
+ * [Layer 4 load balancing](#layer-4-load-balancing)
|
|
|
+ * [Layer 7 load balancing](#layer-7-load-balancing)
|
|
|
+ * [Horizontal scaling](#horizontal-scaling)
|
|
|
+* [Reverse proxy (web server)](#reverse-proxy-web-server)
|
|
|
+ * [Load balancer vs reverse proxy](#load-balancer-vs-reverse-proxy)
|
|
|
+* [Application layer](#application-layer)
|
|
|
+ * [Microservices](#microservices)
|
|
|
+ * [Service discovery](#service-discovery)
|
|
|
+* [Database](#database)
|
|
|
+ * [SQL](#sql)
|
|
|
+ * [Relational database management system (RDBMS)](relational-database-management-system-rdbms)
|
|
|
+ * [Scaling SQL](#scaling-sql)
|
|
|
+ * [Master-slave replication](#master-slave-replication)
|
|
|
+ * [Federation](#federation)
|
|
|
+ * [Sharding](#sharding)
|
|
|
+ * [Denormalization](#denormalization)
|
|
|
+ * [SQL tuning](#sql-tuning)
|
|
|
+ * [NoSQL](#nosql)
|
|
|
+ * [Key-value store](#key-value-store)
|
|
|
+ * [Document store](#document-store)
|
|
|
+ * [Wide column store](#wide-column-store)
|
|
|
+ * [Graph Database](#graph-database)
|
|
|
+ * [SQL or NoSQL](#sql-or-nosql)
|
|
|
+* [Cache](#cache)
|
|
|
+ * [Client caching](#client-caching)
|
|
|
+ * [CDN caching](#cdn-caching)
|
|
|
+ * [Web server caching](#web-server-caching)
|
|
|
+ * [Database caching](#database-caching)
|
|
|
+ * [Application caching](#application-caching)
|
|
|
+ * [Caching at the database query level](#caching-at-the-database-query-level)
|
|
|
+ * [Caching at the object level](#caching-at-the-object-level)
|
|
|
+ * [When to update the cache](#when-to-update-the-cache)
|
|
|
+ * [Cache-aside](#cache-aside)
|
|
|
+ * [Write-through](#write-through)
|
|
|
+ * [Write-behind (write-back)](#write-behind-write-back)
|
|
|
+ * [Refresh-ahead](#refresh-ahead)
|
|
|
+* [Asynchronism](#asynchronism)
|
|
|
+ * [Message queues](#message-queues)
|
|
|
+ * [Task queues](#task-queues)
|
|
|
+ * [Back pressure](#back-pressure)
|
|
|
+* [Communication](#communication)
|
|
|
+ * [Transmission control protocol (TCP)](#transmission-control-protocol-tcp)
|
|
|
+ * [User datagram protocol (UDP)](#user-datagram-protocol-udp)
|
|
|
+ * [Remote procedure call (RPC)](#remote-procedure-call-rpc)
|
|
|
+ * [Representational state transfer (REST)](#representational-state-transfer-rest)
|
|
|
+* [Security](#security)
|
|
|
+* [Appendix](#appendix)
|
|
|
+ * [Powers of two table](#powers-of-two-table)
|
|
|
+ * [Latency numbers every programmer should know](#latency-numbers-every-programmer-should-know)
|
|
|
+* [Under development](#under-development)
|
|
|
+ * [Distributed computing](#distributed-computing)
|
|
|
+ * [Consistent hashing](#consistent-hashing)
|
|
|
+ * [Scatter gather](#scatter-gather)
|
|
|
+ * [Contribute](#contributing)
|
|
|
+* [Credits](#credits)
|
|
|
+* [Contact info](#contact-info)
|
|
|
+* [License](#license)
|