High Level Designs
Steps for System Design Define MVP -> Requirement gathering Estimate Scale wrt #users, #traffic Design Goals(CAP theorem) API Design System Design 1 Billion is 1 Giga byte. Databases HBase - Optimized for high volume of writes. -> columnar DB MongoDB - Read heavy systems. Has tunable consistency. Due to the same, it can good for high writes as well - consistency and partitioning tolerance - MongoDB can have a single-point failure - MongoDB sacrifices availability Dynamo DB, MySQL- Read Heavy Cassandra - Cassandra gives up consistency Reddis- Global cache Queues Kafka/RabbitMQ- Persistent queue RabbitMQ- allows to push & Kafka only notifies and subscribers have to PULL Messaging App Facebook: 20-30 Million messages per day How to scale any product which can support when the users increase from 100 to 100Million Messenger MVP Ability to send and receive messages Message History Login with Facebook accounts Contacts/Friends Messages should have max length(...