requirements

functional

  • Create posts
  • Upvote/downvote posts
  • Fetch feeds
    • Hot, Top, New

non-functional

  • Low latency retrieving queries.
  • Availability over strong consistency for almost all of the operations.
  • High read/write ratio.
  • Unique read patterns (long tail).

deep dives

  • How to deal with imbalanced read/write patterns (celebrity problem).
  • Considering upvotes (writes) on popular/new posts.
  • How to organize data stores to avoid scatter-gather, good partition keys/indices.
  • Fanout? Does it make sense?