Buckle up, intrepid coder! The Art of Scalable Systems is your passport to unraveling the mysteries of services. Explore the hilarious mishaps and ingenious solutions to everyday problems.
📚 NB: This is an attempt at documenting all my system design notes from reading and hands-on experience, starting with explaining the basic components of a service to providing examples of real world systems and discussing tradeoffs of possible solutions.
System components | System concepts |
---|---|
Load Balancer | ACID |
API Gateway | CAP Theorem |
Caching | PACEL Theorem |
DNS | |
Message Queues | |
Proxies | |
Databases |
Problem | Solution |
---|---|
Check set contains | Bloom Filters |
Where to insert data | Consistent Hashing |
Ensure strong consistency | Quorum Consensus |
Ensure high availability | Leader And Follower |
Atomicity in data transfers | |
Concurrent updates to file | Locking Lease |
Concurrent node writes | Vector Clocks |
Node liveness | |
Deal with dead nodes coming back | |
Update dead nodes with missed data | Hinted Handoff |
Update stale nodes | |
Check data inconsistency | Checksum |
Chapters |
---|
CQRS |
Two Phase Commit |
Transactional Outbox |
Change Data Capture (CDC) |
Chapters |
---|
Domain Driven Design |
The Strangler Fig Migration Pattern |
Chapters |
---|
Distributed Message Queue & Event Streaming Platform |
Infrastructure Bits and Bobs
Chapters |
---|
K8S - ClusterIP vs NodePort vs LoadBalancer |
Chapters |
---|
Parties: Acquirer, Issuer |
Events: Chargebacks, Reversals |