Anatomy of a Couchbase App

J Chris Anderson demonstrated a web app somewhat similar to Snapchat, which:

  • uses Couchbase for asset storage and keyspace management;
  • doesn’t require complex queries - build your Couchbase key using predictable key patterns;
  • uses Couchbase to provide ordering, immutable keys and expiry;
  • is built with Express, React.js and PubNub.

How it works

  • The app asks the server for a message ID;
  • The server hands them out sequentially and atomically;
  • The app saves images and audio to URLs based on the message ID;
  • Optionally allow messages to self-destruct.

The latency sensitive path just uses key-value operations (getting documents that are referred to by other documents can be done in a reasonable timeframe using two round-trips). The messages in a room are just the messages from 0 to the current message number, so the app just does a bunch of sequential gets.

Scaling

Since there’s not a lot of logic on the application server (it’s effectively stateless), we can scale by adding machines and balancing load between machines.